Hadoop FileInputFormat isSplitable false

mj_*_*mj_ 4 hadoop hadoop-partitioning

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

Pra*_*ati 5

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

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

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