【发布时间】:2015-10-14 16:26:36
【问题描述】:
我在单台机器(4 核)中配置了 hadoop 2.4.1 以使用 Psedue 分布式模式,并且我能够通过 HDFS 输入文件上的 hadoop shell 命令运行我的 map/reduce 程序。
但我注意到 map 和 reduce 看起来仍然在单线程中运行。所以我尝试将属性 mapreduce.tasktracker.map.tasks.maximum 和 mapreduce.tasktracker.reduce.tasks.maximum 硬编码为 4。(只是为了尝试,我知道这不是理想的设置)。但我仍然看到 map 和 reduce 任务在串行运行。
我的配置方式是修改etc/hadoop/mapred-site.xml包含如下:
<configuration>
<property>
<name> mapreduce.tasktracker.map.tasks.maximum </name>
<value> 4 </value>
</property>
<property>
<name> mapreduce.tasktracker.reduce.tasks.maximum </name>
<value> 4 </value>
</property>
</configuration>
并使用命令重启TaskTracker节点
sbin/hadoop-daemon.sh stop tasktracker
sbin/hadoop-daemon.sh start tasktracker
我得出结论它仍然在单线程中运行的方式是,我尝试在构造映射器对象或减少对象时通过覆盖构造函数来打印一些东西。然后它表明映射器是在映射器运行的时间一个接一个均匀地构造的,reducer 也是一个一个地均匀地在运行的时间构造的。
我在这里缺少什么?
【问题讨论】:
-
我发现调用 hadoop-daemon.sh 停止和启动可能是错误的,它告诉我不再支持任务跟踪器命令
标签: java multithreading hadoop mapreduce