Можно ли запустить несколько картографических задач в одной JVM? - PullRequest
3 голосов
/ 02 февраля 2011

Я хочу поделиться большими статическими данными в памяти (индекс lucene ОЗУ) для задач карты в Hadoop? Есть ли способ для нескольких задач карты / уменьшения использовать одну и ту же JVM?

Ответы [ 4 ]

9 голосов
/ 02 февраля 2011

Задания могут разрешить повторное использование JVM задач, указав конфигурацию задания mapred.job.reuse.jvm.num.tasks.Если значение равно 1 (по умолчанию), то JVM не используются повторно (т. Е. 1 задача на JVM).Если это значение равно -1, число задач, которые может выполнить JVM (одного и того же задания), не ограничено.Можно также указать некоторое значение больше 1, используя api.

4 голосов
/ 02 февраля 2011

В $HADOOP_HOME/conf/mapred-site.xml добавьте следующее свойство

<property>
    <name>mapred.job.reuse.jvm.num.tasks</name>
    <value>#</value>
</property>

# может быть установлено в число, чтобы указать, сколько раз JVM будет использоваться повторно (по умолчанию 1), илиустановите значение -1 для ограничения количества повторного использования.

0 голосов
/ 27 сентября 2013

Насколько мне известно, не существует простого способа для нескольких задач карты (Hadoop) обмениваться статическими структурами данных.

На самом деле это известная проблема для текущей модели Map Reduce.Причина, по которой текущая реализация не разделяет статические данные в задачах карты, заключается в том, что Hadoop спроектирован так, чтобы быть высоконадежным.В результате, если задача завершится неудачей, она только аварийно завершит работу своей собственной JVM.Это не повлияет на выполнение других JVM.

В настоящее время я работаю над прототипом, который может распределить работу одной JVM по нескольким ядрам (по сути, вам нужна только одна JVM для использования многоядерности).Таким образом, вы можете уменьшить дублирование структур данных в памяти без затрат на загрузку процессора.Следующим шагом для меня является разработка версии Hadoop, которая может запускать несколько задач Map в одной JVM, и это именно то, что вы просите.

Здесь есть интересный пост https://issues.apache.org/jira/browse/MAPREDUCE-2123

0 голосов
/ 21 июля 2011

Бесстыдный плагин

Я перехожу к использованию статических объектов с повторным использованием JVM, чтобы выполнить то, что вы здесь описываете: http://chasebradford.wordpress.com/2011/02/05/distributed-cache-static-objects-and-fast-setup/

Другой вариант, хотя и более сложный, заключается в использовании распределенного кэша сОтображаемый в память файл только для чтения.Таким образом, вы также можете делиться ресурсом между процессами JVM.

...