Hadoop,推出减少任务= 1

时间:2013-06-04 07:30:14

标签: hadoop reduce

Hadoop在8个节点的集群上运行。提交的作业生成几个键值对象作为具有不同键的映射器输出(手动检查),因此我除了有几个启动的reducers来管理节点中的数据。

我不知道为什么,因为日志报告,启动的减少任务的数量是总是 1.由于有几十个不同的密钥,我希望至少有多少减少器数量节点,即8(也是奴隶的数量)。

这是作业结束时的日志

13/05/25 04:02:31 INFO mapred.JobClient: Job complete: job_201305242051_0051
13/05/25 04:02:31 INFO mapred.JobClient: Counters: 30
13/05/25 04:02:31 INFO mapred.JobClient:   Job Counters 
13/05/25 04:02:31 INFO mapred.JobClient:     Launched reduce tasks=1
13/05/25 04:02:31 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=21415994
13/05/25 04:02:31 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0
13/05/25 04:02:31 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0
13/05/25 04:02:31 INFO mapred.JobClient:     Rack-local map tasks=7
13/05/25 04:02:31 INFO mapred.JobClient:     Launched map tasks=33
13/05/25 04:02:31 INFO mapred.JobClient:     Data-local map tasks=26
13/05/25 04:02:31 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=5486645
13/05/25 04:02:31 INFO mapred.JobClient:   File Output Format Counters 
13/05/25 04:02:31 INFO mapred.JobClient:     Bytes Written=2798
13/05/25 04:02:31 INFO mapred.JobClient:   FileSystemCounters
13/05/25 04:02:31 INFO mapred.JobClient:     FILE_BYTES_READ=2299685944
13/05/25 04:02:31 INFO mapred.JobClient:     HDFS_BYTES_READ=2170126861
13/05/25 04:02:31 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=2879025663
13/05/25 04:02:31 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=2798
13/05/25 04:02:31 INFO mapred.JobClient:   File Input Format Counters 
13/05/25 04:02:31 INFO mapred.JobClient:     Bytes Read=2170123000

其他(有用?)信息:

  • 对于每个节点,我有1个核心分配给作业
  • 我手动检查作业是否在8个节点上有效运行。
  • 我没有设置参数来将reducer任务固定为一个
  • Hadoop版本:1.1.2

那么,你知道减速器数量为1的原因吗?而不是更多?

由于

2 个答案:

答案 0 :(得分:1)

你应该:

  1. 首先检查您的群集是否支持多于1个reducer
  2. 指定要运行的reduce成员
  3. 签出支持的减速机数量

    最便捷的方法是使用jobtracker webUI:http://localhost:50030/machines.jsp?type=active(您可能需要使用jobtracker正在运行的主机名删除localhost。它将显示所有内容集群中的活动TaskTrackers,以及每个TaskTracker可以同时运行多少个reducers。

    指定减速器编号

    您有三种方式:

    在代码中指定减速器编号

    与zsxwing一样,您应该通过调用setNumReduceTasks() JobConf方法指定减速器编号。并将减少数量作为参数。

    在命令行中指定减速器编号

    你也可以在命令行中传递reducer数字,如下所示: bin/hadoop jar hadoop-examples-1.0.4.jar terasort -Dmapred.reduce.tasks=2 teragen teragen_out

    上面的命令行将启动2个reducer。

    conf/mapred-site.xml

    中指定减速器编号

    您还可以在mapred-site.xml中添加一个新属性,如下所示:

      <property>
        <name>mapred.reduce.tasks</name>
        <value>2</value>
      </property>
    

答案 1 :(得分:0)

无论映射器输出多少个密钥,您都需要自己设置减速器编号(默认值为1)。您可以使用job.setNumReduceTasks(5)设置reduce任务5。