2015-03-26 2 views
2

Вопрос: Предлагает ли Hadoop v.1.2.1 или v.2 (YARN) способ определить близость ядра разных задач карты в рамках одного задания? Другими словами, могу ли я привязать конкретную задачу Map к определенному ядру, аналогично Linux taskset, или это из-за контроля hadoop и до Планировщика Linux?Ключевое сродство заданий карты в Hadoop

Я отношусь к новой карте. Сокращайте программирование, и мой проект включает в себя изучение его производительности при изменении разных параметров (определенных машиной или сетью). Я до сих пор проходил через официальную документацию (v.1.2.1) и многочисленные темы как онлайн, так и Stack Exchange.

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


Пример # 1: Предположим, я иметь следующую конфигурацию:

  • Входной сигнал: 2 ГиБ
  • HDFS размер блока: 64 Мб
  • узлы данных: 2 узлов х 32 ядер (процессоры)
  • No Reduce Tasks не требуются.

В соответствии с размером блока будут называться 2 Задачи карты GiB/64 MiB = 32. Если mapred.tasktracker.map.tasks.maximum установлено на 16, то ровно 16 задач карты будут выполняться на узле №1, а 16 будет выполняться на узле №2 с 16 ядрами на каждый узел. (ссылки: #1, #2)

Насколько я обнаружил, что нет никакого способа, чтобы непосредственно контролировать «узел» сродство, то есть, как отобразить «задачу Карты» для конкретных узлов (link), помимо своего " Rack осведомленности "(link). Тем не менее, в пределах конкретных узла, может я ...

Вопрос № 1: ... «контактная» каждая карта Задача конкретного ядра? Вопрос №2: ... гарантируют, что каждая задание карты будет пребывания на ядре, с которого оно начиналось? Или это вне контроля hadoop и зависит от планировщика Linux?


Пример # 2: предположим, что Пример # конфигурации 1, но с размером входного 8 ГиБ, в результате чего 128 Карта Задачи.

Вопрос №1: независимо от значения mapred.tasktracker.map.tasks.maximum, будут ли вызовы 128 Map одновременно? Правильно ли, поскольку у меня в общей сложности 64 слота для карт (более двух узлов), каждый узел будет в среднем обрабатывать 2x Map Task на ядро?

Вопрос № 2: если вопрос № 1 является правильным, у меня есть какой-либо контроль (в пределах одного узла) над «сколько времени» карта Задача будет оставаться на одном ядре, и если он будет перераспределена то же самое ядро, или это из-за контроля hadoop и вплоть до Планировщика Linux?


Что касается уменьшить задачи, я полагаю, что соответствующие ответы будут держать, а также, то есть, ядро ​​аффинность будет также возможно (или нет).

+0

Хороший вопрос там ... и очень важно понять его для лучшей производительности кластера хауопов. –

ответ

1

Этой статья дает некоторое представление о задаче-основном сродстве - On the Core Affinity and File Upload Performance of Hadoop

В документе упоминается, что стандарт POSIX определяет sched_setaffnity() системного вызова, чтобы решить, процесс (или задачу в данном случае) к основному сродству на уровне пользователя.

Но я был бы признателен за более простой способ определения привязки задачи-ядра.

+0

Спасибо за ссылку! Если я правильно понимаю, мне нужно запустить мое рабочее задание и запустить externally 'sched_setaffinity()' в потоках, интенсивно использующих CPU **, чтобы ** вывести ** их на конкретное ядро, правильно? Я видел, что я могу легко найти эти потоки, запустив 'ps -emo% cpu, pid, user, args | sort -rnk 1 | grep "java" | голова | awk '{print $ 1, $ 2}' '. Кстати, ссылка [ссылка] (http://home.konkuk.ac.kr/~jinh/papers/jin_discs13.pdf) неверна в вашем исходном ответе. – Adama