据我所知,一次分割将分配一个Map器。但当我把分割大小大于实际的块大小时会发生什么呢?例如:如果我把block size=128MB,split size=130MB,在这种情况下会运行多少个Map器。是一个制图员还是多个制图员?
uxhixvfz1#
如果inputsplit超过hdfs块大小,则Map器将从多个块中读取数据。在您的示例中,如果块大小=128 mb,计算的拆分大小=130 mb,则将生成一个Map任务,该任务将从两个不同的块中读取。hdfs层抽象了这两个块的读取方式。
ahy6op9u2#
可以将分割大小设置为大于块大小。但是在这种情况下,为了获得一个分割Map器,应该从hdfs读取几个块,这可能导致网络传输,因为块n和块n+1可能不在一个datanode中。在您的示例中,如果您设置splitsize=130mb,并且您的输入数据是一个130mb文件,那么您将拥有一个Map器。
2条答案
按热度按时间uxhixvfz1#
如果inputsplit超过hdfs块大小,则Map器将从多个块中读取数据。
在您的示例中,如果块大小=128 mb,计算的拆分大小=130 mb,则将生成一个Map任务,该任务将从两个不同的块中读取。
hdfs层抽象了这两个块的读取方式。
ahy6op9u2#
可以将分割大小设置为大于块大小。但是在这种情况下,为了获得一个分割Map器,应该从hdfs读取几个块,这可能导致网络传输,因为块n和块n+1可能不在一个datanode中。
在您的示例中,如果您设置splitsize=130mb,并且您的输入数据是一个130mb文件,那么您将拥有一个Map器。