当我在mapreduce框架中设置分割大小大于实际块大小时,会发生什么?

juzqafwq  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(360)

据我所知,一次分割将分配一个Map器。
但当我把分割大小大于实际的块大小时会发生什么呢?
例如:如果我把block size=128MB,split size=130MB,在这种情况下会运行多少个Map器。是一个制图员还是多个制图员?

uxhixvfz

uxhixvfz1#

如果inputsplit超过hdfs块大小,则Map器将从多个块中读取数据。
在您的示例中,如果块大小=128 mb,计算的拆分大小=130 mb,则将生成一个Map任务,该任务将从两个不同的块中读取。
hdfs层抽象了这两个块的读取方式。

ahy6op9u

ahy6op9u2#

可以将分割大小设置为大于块大小。但是在这种情况下,为了获得一个分割Map器,应该从hdfs读取几个块,这可能导致网络传输,因为块n和块n+1可能不在一个datanode中。
在您的示例中,如果您设置splitsize=130mb,并且您的输入数据是一个130mb文件,那么您将拥有一个Map器。

相关问题