地图减少如何在HDFS与S3上工作



我一直在努力了解在HDFS和S3上执行map reduce作业的不同之处。有人能回答我的问题吗:

通常,HDFS集群不仅面向存储,而且包含执行MR作业的能力;这就是为什么在几个数据节点上映射作业,而在少数数据节点上减少作业的原因。确切地说,映射(过滤器等)是在本地数据上完成的,而减少(聚合)是在公共节点上完成的。

这种方法和S3一样有效吗?据我所知,S3只是一个数据存储。hadoop必须从S3复制整个数据,然后在本地运行Map(filter)和reduce(aggregation)吗?或者它遵循与HDFS完全相同的方法。如果前一种情况是真的,那么在S3上运行作业可能比在HDFS上运行作业慢(由于复制开销)。

请分享你的想法。

S3的性能比HDFS慢,但它提供了其他功能,如bucket版本控制和弹性以及其他数据恢复方案(Netflix使用使用S3的Hadoop集群)。

理论上,在分割计算之前,需要确定输入文件的大小,因此hadoop本身在S3之上有一个文件系统实现,它允许更高层不知道数据源。Map-Reduce针对每个输入目录调用列出API的通用文件,以获取目录中所有文件的大小。

Amazons电子病历有一个特殊版本的S3文件系统,可以将数据直接流式传输到S3,而不是缓冲到中间本地文件,这可以使电子病历更快。

如果您在EC2中有一个Hadoop集群,并且您在S3数据上运行MapReduce作业,是的,数据将流式传输到集群中以运行作业。正如您所说,S3只是一个数据存储,因此您不能将计算带入数据。根据数据的大小和集群的大小,这些非本地读取可能会导致处理大型作业的瓶颈。

相关内容

  • 没有找到相关文章

最新更新