EMR使用OSS还是云盘HDFS存储的选择讨论

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 使用EMR如何选择数据存储方案,这里分别列举各种场景下两种方案的优缺点,各位可以根据实际情况,选择最合适自己业务的一种方式。

前言

由于看中了E-MapReduce(简称EMR)云产品的易用性(易开发、易运维、易集成)、低价、安全、高可用等特性,很多用户会选择把他们的线下的Hadoop集群迁移到EMR上来;也有一些企业,特别是一些初创企业,本身是没有线下集群的,也会选择在云上直接从无到有开发大数据应用。

目前EMR除了支持Hadoop原生的基于本地盘(或云盘)的HDFS,也支持使用OSS来存储数据。云盘和本地盘在使用方法上是一样的,也最容易被理解。OSS也可以作为和HDFS相同级别的数据存储方式,也为EMR数据存储提供了一个新的选择。那么使用OSS有什么优势,又有什么缺点,什么情况下我们会使用OSS来代替HDFS,到底使用什么存储方案,这是首先摆在我们面前的一个问题。

这里分别列举各种场景下两种方案的优缺点,各位可以根据实际情况,选择最合适自己业务的一种方式。

优缺点

上云迁移

对于两种存储方式而言,迁移方面可能有两方面的影响。
首先是数据迁移的方法而言。如果是迁移到HDFS,相当于是两个HDFS之间的迁移,可以使用Distcp。另外也可以使用Datax之类的工具,或者hadoop fs -get后拷贝过来再-put到新的HDFS上等。而如果是使用OSS来存储数据,OSS支持用Distcp拷入数据,也支持Datax(有OSSReader)。另外拷贝后用hadoop fs -put的方法写入数据的方法,也可以相应得替换成osscmd拷贝。以上看来两个方案没有太大的区别,但是考虑到网络是否可达,因为EMR的Worker节点没有公网IP,很多场景下需要比OSS的方案要做更多的工作。整体而言,数据迁移方面OSS略微胜出。
另外一部分需要考虑的是业务代码的迁移。如果直接使用HDFS,那业务代码上理论上不需要任何调整。而使用OSS存储数据的修改不过是在文件的路径上,把文件路径从HDFS的路径改成OSS的路径就可以了。相比而言需要少量的改动。

计算性能

根据测试,使用OSS存储数据计算上性能上略有降低。随着系统的优化,OSS存储数据的性能还会更好,对于性能要求不高的情况可以考虑使用OSS。不过现在推出的D1等机型配合EMR计算效果非常不错,对于性能比较看中且数据量较大的场景的可以用云盘上的HDFS的方案。

数据可用性

如果使用云盘+HDFS的方案,数据可用性依赖于云盘的可用性以及HDFS的冗余。如果是使用OSS,数据可用性可以参考OSS的SLA,目前可以保证99.99999999%的可用性。

弹性存储

如果数据存在HDFS上,如果数据写满后需要增加节点,目前EMR产品上没有现成的方法,需要用户自己购买机器并通过开源系统自己的方法添加节点并做rebalance,操作起来非常麻烦。但是如果使用OSS来存储数据,可以近似认为OSS的数据容量是无限的,不再需要考虑数据存储容量的问题。

弹性计算

使用OSS作为数据源,计算结束结果数据写回到OSS里,那集群就可以释放了。下个计算周期如果计算量增加,可以弹性得创建一个更大的集群(或者使用其他的机型来创建集群)来运行作业。后续EMR会支持在创建集群的时候选择竞价型实例,从而减少一笔费用。而如果是使用云盘HDFS的方案,上诉需求均无法实现。

计量计费

两种方案均支持包年包月的EMR付费模式。
使用OSS售价更低(OSS售价),而且再考虑到弹性存储(OSS只为实际存储的文件付费,使用云盘需要为整块云盘付费,而云盘需要为后续业务预留容量)和弹性计算(计算结束后释放整个集群,减少集群空置),实际上使用OSS的方案只会带来更低的成本。

数据湖与数据集成

如果数据存在HDFS上,外部数据参与计算需要先通过ETL导入到HDFS上。同样的,如果计算的结果要为外部应用所用,也需要导出来,多系统集成比较不便。如果是使用OSS来存储数据,各个应用之间统一使用OSS进行存储数据和管理,更方便搭建数据湖,并方便和其他的系统做数据交互。

冷数据与生命周期

如果数据存在HDFS上,当前暂时还没有有效的冷数据处理策略。对于数据的生命周期也是需要用户自行管理。但是如果存在OSS上,就可以用上OSS的生命周期管理功能,以及OSS的低频访问类型(Infrequent Access)与归档类型(Archive)支持。

总结

随着EMR和OSS的兼容做的越来越好和云计算网络环境的提升,OSS作为存储会越来越多得体现出其优势。对比两种方案,OSS方案最大的缺点是在读数据的时候性能低于HDFS,可以把数据的最初读取和最终的结果使用OSS,中间的临时计算变量放到HDFS上,可以一定程度上缓解这个问题。当然具体使用什么方案还需要根据实际情况选择最合适自己的才是最好的方案。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
5月前
|
存储 监控 文件存储
存储之外,还有什么?云计算对象存储服务OSS深度洞察
存储之外,还有什么?云计算对象存储服务OSS深度洞察
275 0
|
8月前
|
存储 SQL 分布式计算
阿里云全托管flink-vvp平台hudi connector实践(基于emr集群oss-hdfs存储)
阿里云全托管flink-vvp平台hudi sink connector实践,本文数据湖hudi基于阿里云E-MapReduce产品,以云对象存储oss-hdfs作为存储
|
3月前
|
存储 Java 对象存储
springboot配置阿里云OSS存储实现文件上传下载功能
【1月更文挑战第1天】springboot配置阿里云OSS存储实现文件上传下载功能
580 2
|
9天前
|
存储 安全 API
对象存储OSS产品常见问题之附件上传后存储存在被窃取的风险如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
18 0
|
1月前
|
存储 安全 数据安全/隐私保护
oss数据加密与存储
阿里云OSS提供多种数据加密(SSE-S3, SSE-KMS, SSE-C, CSE-KMS)与存储安全措施,包括服务器和客户端加密、数据在磁盘上加密存储、多重冗余备份、访问控制列表和HTTPS安全传输。KMS支持密钥管理,确保数据静态和传输时的安全。严格的访问策略和身份验证保护资源免受未授权访问,满足高安全性和合规性需求。
41 3
|
3月前
|
存储 对象存储 Python
Python中使用阿里云OSS存储实现文件上传和下载功能
Python中使用阿里云OSS存储实现文件上传和下载功能
449 2
|
4月前
|
存储 分布式计算 Kubernetes
PVC、Ceph、HDFS、CPFS、NFS和OSS
PVC、Ceph、HDFS、CPFS、NFS和OSS都是分布式存储系统,下面是它们的详细介绍: 1. PVC(Persistent Volume Claim):PVC是Kubernetes中的一个资源请求,用于声明在集群中存储持久化数据的需求。PVC可以被用于存储应用程序的数据,例如数据库、日志文件等。PVC由Kubernetes集群管理员创建,并在Kubernetes集群中进行分配。
124 0
|
4月前
|
存储 Prometheus Kubernetes
OSS、OSS-HDFS、PVC
OSS、OSS-HDFS和PVC都是与分布式存储相关的技术,下面是它们的详细介绍:
55 1
|
4月前
|
存储 对象存储 数据安全/隐私保护
这个错误提示表明你没有权限列出OSS的存储桶
这个错误提示表明你没有权限列出OSS的存储桶
78 1
|
7月前
|
存储 机器学习/深度学习 缓存
阿里云OSS-HDFS技术与能力解析
阿里云OSS-HDFS技术与能力解析
489 0