2013-02-27 2 views
2

Можно ли настроить cgroups или Hadoop таким образом, чтобы каждый процесс, созданный TaskTracker, присваивался определенной группе?Hadoop: Использование групп для задач TaskTracker

Я хочу использовать ограничения памяти, используя cgroups. Можно назначить группу TaskTracker, но если рабочие места могут привести к хаосу, TaskTracker, вероятно, также будет убит oom-killer, потому что они находятся в одной группе.

Предположим, у меня 8 ГБ памяти на машине. Я хочу зарезервировать 1,5 ГБ для DataNode и системных утилит и позволить Hadoop TaskTracker использовать 6,5 ГБ памяти. Теперь я запускаю Работу с использованием потокового API на 4 пояса и 2 редуктора (каждый из них теоретически может использовать 1 ГБ ОЗУ), который ест больше памяти, чем разрешено. Теперь предел памяти cgroup будет удален, а oom-killer начнет убивать задание. Я предпочел бы использовать группу для каждой задачи «Карта» и «Уменьшить», например. a cgroup, который ограничен памятью 1 ГБ.

Это настоящая или более теоретическая проблема? Неужели oom-killer действительно убьет Hadoop TaskTracker или он начнет сначала убивать разветвленные процессы? Если последнее в большинстве случаев верно, моя идея, вероятно, сработает. Если нет - плохая работа все равно будет убивать TaskTracker на всех машинах кластера и требует ручных перезапусков.

Есть ли что-нибудь еще, что нужно искать при использовании групп?

ответ

0

Вы просмотрели параметры hadoop, которые позволяют устанавливать и максимизировать распределения кучи для дочерних процессов (задач) tasktracker, а также не забудьте посмотреть на повторное использование возможности jvm.

полезные ссылки:

http://allthingshadoop.com/2010/04/28/map-reduce-tips-tricks-your-first-real-cluster/

http://developer.yahoo.com/hadoop/tutorial/module7.html

How to avoid OutOfMemoryException when running Hadoop?

http://www.quora.com/Why-does-Hadoop-use-one-JVM-per-task-block

+0

Да. Проблема заключается в том, что 'ulimit' разрешает только виртуальную память, и из-за этого трудно установить хорошие лимиты, а потоковые задачи не подпадают под ограничения для Java-заданий. Мне нужно какое-то надежное решение, так как кластер будет использоваться учащимися и персоналом лота и должен работать без проблем. –

0

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

Вот суть некоторых типов вы можете быть заинтересованы в -

Fair планировщик: Основная идея позади планировщика долевого распределения должны была назначать ресурсы рабочих мест, таких, что в среднем в течение долгого времени, каждая работы получает равную долю доступных ресурсов. Для обеспечения справедливости каждый пользователь назначается пулу. Таким образом, если один пользователь отправляет много заданий, он или она может получать ту же долю ресурсов кластера, что и все остальные пользователи (независимо от работы, которую они отправили).

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

Вот ссылка, откуда я бесстыдно скопировал вышеупомянутые вещи из-за нехватки времени. http://www.ibm.com/developerworks/library/os-hadoop-scheduling/index.html

Чтобы настроить Hadoop по этой ссылке: http://hadoop.apache.org/docs/r1.1.1/fair_scheduler.html#Installation

Смежные вопросы