2013-11-22 336 views
4

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

最近,我注意到当MR作业执行时,有很大的延迟将日志文件存入S3。有时,即使在作业完成后,日志文件也会出现几分钟。

对此有何看法?有没有人使用HDFS vs S3中的数据完成MR作业完成度量标准?

回答

6

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

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

我该如何处理EMR?我启动Hadoop集群并将所有内容都放入HDFS中,这是作业所需要的。读取在S3上的时间要更加昂贵,并且最终的一致性使得在作业之间缓冲项目基本上没有用处。

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

+1

这并不完全正确。 S3在一些地区*(即美国东部)最终保持一致*。在其他地方使用写入一致性后读取。欲了解更多信息:http://aws.amazon.com/s3/faqs/#What_data_consistency_model_does_Amazon_S3_employ –

+1

我应该指出,马克的信息已过时。在他的链接中:“所有区域中的Amazon S3存储桶为新对象的PUTS提供了读后一致性,并为覆盖PUTS和DELETES提供了最终一致性。” –

2

在HDFS性能方面要比S3好

HDFS是,如果你的需求是长期的更好,需要高性能和你想要执行迭代机器学习算法

如果您的负载可变,S3需要更高的耐用性和持久性,成本更低。

欲了解更多信息,请访问此链接http://www.nithinkanil.com/2015/05/hdfs-vs-s3.html

0

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