Это работа Hadoop ThreadSafe? - PullRequest
       0

Это работа Hadoop ThreadSafe?

2 голосов
/ 24 июля 2011

Кто-нибудь знает, является ли org.apache.hadoop.mapreduce.Job поточно-ориентированным?В моем приложении я создаю поток для каждой работы, а затем waitForCompletion.И у меня есть другой поток монитора, который проверяет состояние каждой работы с помощью isComplete.

Это безопасно?Работы являются потокобезопасными?В документации ничего не говорится об этом ...

Спасибо, Уди

Ответы [ 5 ]

3 голосов
/ 25 июля 2011

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

0 голосов
/ 23 ноября 2011

На тот случай, если вам понадобится другой вид параллелизма на уровне задач карты, вам следует переопределить метод run () в вашем устройстве отображения и работать там с несколькими потоками.Реализация по умолчанию вызывает setup (), затем map () умножает количество обрабатываемых записей и, наконец, вызывает метод cleanup () один раз.

Надеюсь, это кому-нибудь поможет!

0 голосов
/ 15 ноября 2011

Да, они .. На самом деле файлы разбиты на блоки, и каждый блок выполняется на отдельном узле.все задачи карты выполняются параллельно, а после их подачи в редуктор.Здесь нет вопроса синхронизации, как вы могли бы подумать в многопоточной программе.В многопоточной программе все потоки выполняются в одном блоке, и, поскольку они совместно используют некоторые данные, их необходимо синхронизировать

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

Если вы проверяете, завершены ли работы, я думаю, вы немного запутались в том, как работает Map Reduce.Вы должны позволить Hadoop сделать это для себя.

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

Почему вы хотите написать отдельную ветку для каждой работы? Какой именно ваш вариант использования?

Вы можете запустить несколько заданий в кластере Hadoop. Есть ли у вас зависимости между несколькими заданиями?

Предположим, у вас запущено 10 заданий. 1 задание не будет выполнено, тогда вам нужно будет повторно запустить 9 успешных заданий.

Наконец, система отслеживания заданий позаботится о планировании нескольких заданий в кластере Hadoop. Если у вас нет зависимостей, вам не стоит беспокоиться о безопасности потоков. Если у вас есть зависимости, то вам, возможно, придется пересмотреть свой дизайн.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...