Количество узлов данных и MapTasks в Hadoop

Как установить количество узлов данных в Hadoop? это по коду, конфигурации или решению среды. Также во время просмотра статей, когда кто-то говорит: "Предпочтительное количество карт - около 10-100 карт на узел", то есть "узел" здесь означает NameNode или DataNode?

И когда мы говорим о количестве MapTasks, некоторые говорят, что оно равно количеству разбиений, другие говорят о количестве блоков, в то время как другие говорят, что оно определяется структурой и может не давать точное количество разбиений или блоков, так что прямо от них?

1 ответ

Вопрос: Как установить количество узлов данных в Hadoop?

Для установки или расчета количества узлов данных. Сначала оцените хранилище Hadoop (H) :

H =cr S / (1-я)

где:

с = средняя степень сжатия. Это зависит от типа используемого сжатия (Snappy, LZOP, ...) и размера данных. Когда сжатие не используется, c = 1.

r = коэффициент репликации. Обычно это 3 в производственном кластере.

S = размер данных для перемещения в Hadoop. Это может быть комбинация исторических данных и дополнительных данных. Инкрементные данные могут быть ежедневными, например, и прогнозироваться в течение определенного периода времени (например, 3 года).

я = промежуточный фактор. Обычно это 1/3 или 1/4. Рабочее пространство Hadoop, предназначенное для хранения промежуточных результатов фаз Map.

Пример: без сжатия, т.е. c=1, коэффициент репликации 3, промежуточный коэффициент 0,25=1/4

H= 1*3*S/(1-1/4)=3*S/(3/4)=4*S

С учетом вышеизложенных предположений объем памяти Hadoop в 4 раза превышает размер исходного размера данных.

Теперь формула для оценки количества узлов данных (n):

n = H / d =cr S / (1-i) * d

где:

d = доступное дисковое пространство на узел.

Вопрос: "Предпочтительное количество карт около 10-100 карт на узел", поэтому "узел" здесь означает NameNode или DataNode?

Как вы знаете, задания MapReduce идут к данным для обработки, но, наоборот, это не так. Итак, здесь "узел" - это Data Node.

Вопрос: сколько карт?

Количество карт обычно определяется общим размером входных данных, то есть общим количеством блоков входных файлов.

Правильный уровень параллелизма для карт, кажется, составляет около 10-100 карт на узел, хотя он был настроен на 300 карт для очень простых задач карты. Настройка задачи занимает некоторое время, поэтому лучше, если для выполнения карт требуется не менее минуты.

Если у вас есть 10 ТБ входных данных и размер блока 128 МБ, вы получите 82 000 карт, если Configuration.set(MRJobConfig.NUM_MAPS, int) (который только дает подсказку для структуры) используется, чтобы установить его еще выше.

Другие вопросы по тегам