2016-06-12 3 views
1

Я пытаюсь возиться с кодом распределения контейнера YARN. При размещении контейнера я имею в виду решение разместить контейнер на определенной машине в кластере.Код распределения контейнера в YARN (Hadoop)

Я хочу написать свой собственный код выделения контейнера. Для начала я запускаю Hadoop в псевдораспределенном режиме с YARN. Я пытаюсь найти соответствующие точки в исходном коде. До сих пор, используя операторы печати, я смог определить класс hadoop-source-code/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/client/ApplicationMasterProtocolPBClientImpl.java#allocate, где происходит распределение. Однако я не могу сузить его дальше. Продолжая этот метод, я ничего не смог напечатать.

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

ответ

0
I have not been able to print anything 

Сначала я думал, что ведение журнала является применение конкретных, но вся информация, связанная с ресурсами менеджер находится в лог-файл с именем hadoop-{username}-resourcemanager-{username}.log под log папку. Вместо инструкции print я использовал LOG.info для отладки.

Location of allocation mechanism in hadoop source code 

Я использую FIFO планировщик и механизм распределения находится по методу FifoScheduler#assignContainersOnNode, который вызывается из FifoScheduler#assignContainers, который вызывается из FifoScheduler#nodeUpdate метода.

Существует FifoScheduler#handle метод (more information here), который продолжает отслеживать различные события. NODE_UPDATE относится к числу тех, которые запускаются часто и, следовательно, имеет место назначение контейнера на данном узле.

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