当我浏览Hadoop MapReduce教程时,at one point已提到以下内容,
对于给定的样本输入,第一个地图发出:<您好,1> <世界, 1 GT; <再见,1> <世界,1>
第二张地图发出:<您好,1> < Hadoop,1> <再见,1> < Hadoop,1>
我们怎样才能确定第一个输入文件将由一个映射器处理而第二个输入文件将由另一个映射器处理?或者只是一个假设?
答案 0 :(得分:2)
简答:
一个映射器不能处理多个文件。因此,对于两个文件,我们至少需要两个映射器。
更长(但仍然简化)回答:
一个映射器只处理一个输入拆分。一个文件创建至少一个输入拆分。因此,两个文件,至少创建两个输入拆分,因此由两个映射器处理。
例如,如果文件大于块的大小,则可以将文件分区为更多分割。块的默认大小(在当前版本中)为128MB(在以前的版本中为64MB)。如果文件大于128MB,则会生成多个输入拆分。因此,即使是同一个文件也可以由两个或多个映射器处理。这由InputFormat确定(也可以阅读this post。)
<强> Detailed answer 强>