AWS EMR性能HDFS与S3

时间:2013-11-22 11:00:22

标签: hadoop amazon-s3 mapreduce hdfs amazon-emr

在大数据中,代码被推送到数据执行。这是有道理的,因为数据很大并且执行代码相对较小。来到AWS EMR,数据可以是HDFS,也可以是S3。在S3的情况下,必须将数据拉到核心/任务节点以便从一些其他节点执行。与HDFS中的数据相比,这可能会产生一些开销。

最近,我注意到当MR作业执行时,将日志文件导入S3的时间很长。有时甚至在作业完成后,日志文件也会花费几分钟时间出现。

对此有何想法?是否有人使用HDFS与S3中的数据来完成MR作业完成的指标?

3 个答案:

答案 0 :(得分:6)

这在不同的层面上存在问题。

S3只有最终的一致性。在您的代码写入某些内容后(例如close()flush()),您不会立即看到/可以阅读,因为写入过程会延迟。我认为这可能是由于为您编写的数据分配了免费资源。所以这不是性能问题,而是你真正想要/需要的一致性问题。

我在EMR上做什么?我启动了一个Hadoop集群,并将所有内容都放入了HDFS所需的工作。在S3上读取时间要贵得多,并且最终的一致性使得在作业之间缓冲项目基本无用。

但是,从HDFS备份文件或将其用于其他实例或服务(例如CloudFront)时,S3非常棒。

答案 1 :(得分:2)

在性能方面,HDFS优于S3

如果您的需求是长期的,需要高性能并且您想要执行迭代机器学习算法,那么HDFS会更好

如果你的负载是可变的,需要高耐久性和持久性而且成本更低,那么S3会更好。

有关详细信息,请访问此链接http://www.nithinkanil.com/2015/05/hdfs-vs-s3.html

答案 2 :(得分:2)

如果要终止EMR群集,则必须使用S3,因为一旦终止群集,HDFS数据将被删除。