Hadoop 1.0.3 mapred.map.tasks 属性不起作用



我正在使用hadoop1.0.3来运行mapreduce作业。我有一个 3 节点群集设置。问题是我在/conf/mapred-site.xml 中将属性 mapred.map.tasks 设置为 20,但是当我运行作业并使用网页访问集群信息时,Hadoop只显示 6 个映射任务:50030。我已经在集群中的所有节点上编辑了上述配置文件。请帮忙。

问候穆赫辛

正如miguno所提到的,Hadoop只考虑mapred.map.tasks的值作为提示。

话虽如此,当我弄乱MapReduce时,我能够通过指定最大计数来增加地图数量。这可能不适合您,但您可以试一试。

<property>
    <name>mapred.tasktracker.map.tasks.maximum</name>
    <value>60</value>
</property>

注意:此值表示地图的总数。因此,如果您希望每个 (3) 个节点运行 20 个映射,则必须指定 mapred.map.tasks,如下所示:

<property>
    <name>mapred.map.tasks</name>
    <value>20</value>
</property>

这个问题似乎是设置地图任务数和减少任务数的重复。

Hadoop除了认为这是一个暗示之外,并不尊重mapred.map.tasks

请参阅Hadoop wiki上的以下信息:

实际上控制地图的数量是微妙的。mapred.map.tasks 参数只是对映射数量的 InputFormat 的提示。默认的 InputFormat 行为是将字节总数拆分为正确数量的片段。但是,在默认情况下,输入文件的 DFS 块大小被视为输入拆分的上限。拆分大小的下限可以通过mapred.min.split.size设置。因此,如果你期望10TB的输入数据并拥有128MB的DFS块,你最终会得到82k个地图,除非你的mapred.map.tasks更大。最终,输入格式决定了映射的数量。

也就是说,Hadoop确实接受用户指定的mapred.reduce.tasks并且不会操纵它。

总之,你不能强制mapred.map.tasks给定的MapReduce作业,但你可以强制mapred.reduce.tasks

编辑:稍微超出您的直接问题,有一种方法可以间接迫使Hadoop使用更多的映射器。 这涉及适当地设置mapred.min.split.sizedfs.block.sizemapred.max.split.size的组合。 请注意,输入文件的实际大小在这里也起作用。有关详细信息,请参阅此答案,其中基本上引用了Tom White的Hadoop:The Definite Guide一书。

它主要是确定地图任务数量的输入格式。http://wiki.apache.org/hadoop/HowManyMapsAndReduces

对于您的问题,默认情况下,任务跟踪器同时运行两个map|reduce任务。
要更改它,请在/conf/mapred-site 中设置 mapred.map.tasks.maximum 属性.xml

.建议使用公式,(CPU> 2) ?(CPUS * 0.75):1 设置此项时。

相关内容

  • 没有找到相关文章

最新更新