Не все узлы используются в кластере

У меня есть кластер Hadoop MR2 из 30 узлов, которым управляет YARN. В настоящее время существует 10 заданий Oozie, каждое из которых запускает одну программу Map. Я заметил, что фактически используются только 11 из 30 узлов; только на 11 узлах есть контейнеры, на которых запущены программы Map.

Я ожидаю, что на каждом узле будет запущен хотя бы один контейнер. Почему это не так? Это связано с разделением входных данных и тем, что, исходя из моих настроек размера блока HDFS, входные данные лучше всего разделить только на 11 узлов? Если это так, будет ли более оптимальным настроить размер блока, чтобы использовать все узлы?


person Cooper    schedule 15.09.2016    source источник
comment
Все 30 узлов являются узлами данных? Я предполагаю, что ваши данные настолько скудны, что им просто не нужны все узлы. Локальность данных, похоже, делает свое дело   -  person OneCricketeer    schedule 15.09.2016
comment
Что ж, 80 ГБ плоских файлов считаются разреженными по стандартам Hadoop/Big Data? Я уверен, что да, просто хочу убедиться, что мы говорим на одном языке!   -  person Cooper    schedule 15.09.2016
comment
Зависит от размера каждого диска, но да, это не так уж и много   -  person OneCricketeer    schedule 15.09.2016
comment
200 ГБ на каждом диске, так что да, думаю, тогда это имеет смысл. Тогда он должен иметь возможность разделить все данные локально всего на 11 узлов. Тем не менее, не лучше ли разделить и распределить данные по всем доступным узлам? Таким образом, у вас больше процессоров?   -  person Cooper    schedule 15.09.2016
comment
Это компромисс между процессором и пропускной способностью. Учитывая, что все данные могут поместиться на одном узле, я верю, что YARN знает, что делает.   -  person OneCricketeer    schedule 15.09.2016


Ответы (1)


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

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

Плохая идея думать, что все узлы должны работать. Лучшее использование больших данных — это перемещение как можно меньшего количества данных.

person ozw1z5rd    schedule 18.09.2016