Hadoop Map уменьшить - как ускорить запуск / настройку работы

Я использую адаптер mongo-hadoop для запуска карт / сокращения заданий. все хорошо, кроме времени запуска и времени, затраченного на работу. Даже когда набор данных очень мал, время отображения составляет 13 секунд, а время сокращения - 12 секунд. На самом деле я изменил настройки в mapred-site.xml и core-site.xml. но время, необходимое для отображения / уменьшения, кажется постоянным. Есть ли способ, которым я могу уменьшить его. Я также изучил оптимизированное распределение hasoop от hanborq. они используют рабочий пул для более быстрого запуска / настройки задания. есть ли какой-нибудь эквивалент, доступный в другом месте, так как распространение 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 ответ

Так как сердцебиение вызывает часть латентности. Трекер задач посылает сердцебиение трекеру заданий, чтобы сообщить, что они живы, но как часть этого биения они также объявляют, сколько открытых карт и уменьшают количество слотов. В ответ JT назначает работу для выполнения TT. Это означает, что когда вы отправляете задание, ТТ получают задания только с той скоростью, с которой они бьются (каждые 2–4 секунды, "сдавай-отдай"). Кроме того, JT (по умолчанию) назначает только одну задачу во время каждого импульса. Это означает, что если у вас есть только один TT, вы можете назначать только одну задачу каждые 2 - 4 секунды, даже если TT имеет дополнительную емкость.

Так что вы можете:

  1. сократить продолжительность между двумя сердцебиения.

  2. измените, как планировщик задач работает для каждого пульса из TaskTracker. mapred.fairscheduler.assignmultiple

Другие вопросы по тегам