Hadoop Map减少 - 如何加快作业启动/设置

时间:2012-06-02 11:52:45

标签: performance hadoop mapreduce jobs launch-time

我正在使用mongo-hadoop适配器来运行map / reduce作业。一切都很好,除了发布时间和工作所花费的时间。即使数据集非常小,地图时间也是13秒,减少时间是12秒。实际上我已经更改了mapred-site.xml和core-site.xml中的设置。但是map / reduce所花费的时间似乎是不变的。有什么方法可以减少它。 我还从hanborq探索了优化的hadoop分布。他们使用工作池来更快地启动/设置作业。由于hanborq分布不是非常活跃,所以在其他地方是否有任何等价物。它是在4个月前更新的,它基于旧版本的hadoop。

我的一些设置如下: mapred-site.xml中:

<property>
    <name>mapred.child.java.opts</name>
    <value>-Xms1g</value>
</property>
<property>
    <name>mapred.sort.avoidance</name>
    <value>true</value>
</property>
 <property>
      <name>mapred.job.reuse.jvm.num.tasks</name>
          <value>-1</value>
 </property>
<property>
     <name>mapreduce.tasktracker.outofband.heartbeat</name>
     <value>true</value>
</property>
   <property>
       <name>mapred.compress.map.output</name>
       <value>false</value>
   </property>

核心-site.xml中:

<property>
          <name>io.sort.mb</name>
          <value>300</value>
    </property>
<property>
    <name>io.sort.factor</name>
    <value>100</value>
</property>

非常感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

由于心跳导致部分延迟。任务跟踪器心跳到工作跟踪器,让它知道他们还活着,但作为心跳的一部分,他们还宣布了他们有多少开放地图和减少插槽。作为回应,JT为TT执行工作。这意味着当你提交一份工作时,TT只会在心跳加快时完成任务(每2到4秒,给予或接受)。此外,JT(默认情况下)仅在每次心跳期间分配单个任务。这意味着如果您只有一个TT,即使TT有额外的容量,您也只能每2到4秒分配1个任务。

所以,你可以:

  1. 缩短两次心跳之间的持续时间。

  2. 从TaskTracker更改任务计划程序对每个心跳的工作方式。 mapred.fairscheduler.assignmultiple