Ограничение количества картографов, работающих на Hadoop Streaming - PullRequest
0 голосов
/ 06 марта 2012

Можно ли ограничить количество картографов, выполняемых для задания, в любой момент времени с использованием потоковой передачи Hadoop?Например, у меня есть кластер из 28 узлов, который может выполнять 1 задачу на узел.Если у меня есть работа с 100 задачами, я бы хотел использовать, скажем, 20 из 28 узлов в любой момент времени.Я бы хотел ограничить некоторые задания, потому что они могут содержать много долго выполняющихся задач, и я иногда хочу запускать некоторые быстрее выполняемые задания и быть уверенным, что они могут выполняться немедленно, а не ждать завершения долго выполняющегося задания.

Я видел этот вопрос, и его заголовок точен, но ответы, похоже, не касаются этой конкретной проблемы.

Спасибо!

Ответы [ 2 ]

1 голос
/ 06 марта 2012

Хотя я не знаю о планировании емкости по узлам, есть альтернативный планировщик, созданный для очень похожего случая: Планировщик емкости.

http://hadoop.apache.org/common/docs/r0.19.2/capacity_scheduler.html

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

0 голосов
/ 03 марта 2013

Следующая опция может иметь смысл, если объем работы в каждом картографическом устройстве является существенным, поскольку эта стратегия включает в себя накладные расходы на чтение до 20 счетчиков в каждом вызове карты.

Создайте группу счетчиков и сделайте имя группы MY_TASK_MAPPERS.сделайте ключ равным MAPPER <1..K>, где K - это максимальное число картографов, которое вы хотите.Затем в Mapper итерируйте по счетчикам, пока один из них не окажется равным 0. Поместите в точку длинное значение ip-адреса машины как длинное значение в счетчике - эффективно назначая эту машину для этого преобразователя.Если вместо этого все K уже заняты, просто выйдите из маппера, ничего не делая.

...