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 имеет дополнительную емкость.
Так что вы можете:
сократить продолжительность между двумя сердцебиения.
измените, как планировщик задач работает для каждого пульса из TaskTracker.
mapred.fairscheduler.assignmultiple