当我阅读hadoop mapreduce教程时,它曾经提到:,对于给定的示例输入,第一个贴图将发出:<hello,1><world,1><bye,1><world,1>第二个Map发出:<hello,1><hadoop,1><goodye,1><hadoop,1>如何确保第一个输入文件将由一个Map器处理,第二个Map器将由另一个Map器处理?还是仅仅是一种假设?
afdcj2ne1#
简短回答:一个Map器不能处理多个文件。所以,对于两个文件,我们至少需要两个Map器。较长(但仍然简化)的答案:一个Map器只处理一个输入分割。一个文件至少创建一个输入拆分。因此,两个文件,创建至少两个输入拆分,因此由两个Map器处理。例如,如果一个文件的大小大于一个块的大小,则可以将它划分为多个分区。块的默认大小是(在当前版本中)128mb(在以前的版本中是64mb)。如果文件大于128mb,则会产生多个输入拆分。因此,即使是同一个文件也可以由两个或多个Map器处理。这是由inputformat决定的(请阅读本文)。详细答案
1条答案
按热度按时间afdcj2ne1#
简短回答:
一个Map器不能处理多个文件。所以,对于两个文件,我们至少需要两个Map器。
较长(但仍然简化)的答案:
一个Map器只处理一个输入分割。一个文件至少创建一个输入拆分。因此,两个文件,创建至少两个输入拆分,因此由两个Map器处理。
例如,如果一个文件的大小大于一个块的大小,则可以将它划分为多个分区。块的默认大小是(在当前版本中)128mb(在以前的版本中是64mb)。如果文件大于128mb,则会产生多个输入拆分。因此,即使是同一个文件也可以由两个或多个Map器处理。这是由inputformat决定的(请阅读本文)。
详细答案