4

我有一个简短的问题,我想我知道 FileInputFormat isSplitable 方法的答案。如果我重写此方法以返回 false,自然我将有一个映射器处理一个文件(我只有一个文件)。如果这个文件分布在 HDFS 上,所有这些都将被拉到我的单个映射器中。当我使用映射器处理它并创建键/值对以发送到减速器时,如果我创建大量它们,它们是否会分布在我的集群中以利用数据局部性或者是否存在某种隐式结果是,如果我将它设为 isSplitable false 就不会再发生了?

4

1 回答 1

4

isSplitable返回 false 时,只有一个映射器处理整个文件。映射器可以发出任意数量的 KV 对。

来到reducer,没有数据局部性的概念,使用下一个可用的空闲Reduce槽。仅供参考,在遗留MR架构的情况下,每个节点上都有Map和Reduce的槽,但在YARN的情况下有没有插槽的概念。

根据插槽的可用性或在 YARN 的情况下 ResourceManager 返回的内容,reducer 可以分布在多个节点上。

于 2013-01-13T12:35:29.443 回答