当您为 Hadoop 的 Map/Reduce 部分提供不同于 HDFS 的存储(如 MySql 服务器等)时,它的数据局部性特性会发生什么变化?换句话说,我的理解是 Hadoop Map/Reduce 使用数据局部性来尝试在数据所在的同一节点上启动 map 任务,但是当数据存储在 sql sever 中时,任务节点上没有本地数据,因为所有数据都在 sql server 节点中。那么在那种情况下我们会丢失数据局部性还是数据局部性的定义正在改变?如果它改变了,新的定义是什么?
最佳答案
如果数据不在集群中,则没有数据局部性。必须从远程源复制所有数据。这与任务无法在包含 HDFS 中数据的节点上运行一样。有几种使用远程源的输入格式,包括 S3、HBase 和 DB。如果您可以将数据放在 HDFS 中,那就太好了。对于经常更新的少量数据,我经常使用 Mongo 作为远程源,我对结果很满意。
关于hadoop - 不使用 HDFS 时的数据局部性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9171016/