Многоузловой кластер Hadoop слишком медленный.Как увеличить скорость обработки данных? - PullRequest
0 голосов
/ 21 ноября 2018

У меня кластер из 6 узлов - 5 DN и 1 NN.Все имеют 32 ГБ оперативной памяти.Все рабы имеют жесткий диск объемом 8,7 ТБ.DN имеет жесткий диск 1,1 ТБ.Вот ссылка на мой core-site.xml , hdfs-site.xml , yarn-site.xml .

После запускаРабота MR, я проверил использование ОЗУ, которое указано ниже:

Наменод

free -g
          total        used        free      shared  buff/cache   available
Mem:      31           7          15           0           8          22
Swap:     31           0          31

Датоде:

Slave1:

free -g
          total        used        free      shared  buff/cache   available
Mem:      31           6           6           0          18          24
Swap:     31           3          28

Slave2:

          total        used        free      shared  buff/cache   available
Mem:      31           2           4           0          24          28
Swap:     31           1          30

Аналогично, другие ведомые устройства имеют похожее использование ОЗУ.Даже если отправлено одно задание, остальные отправленные задания переходят в состояние ACCEPTED и ждут завершения первого задания, а затем запускаются.

Вот вывод команды ps команды JAR , который я вложил для выполнения задания MR:

/opt/jdk1.8.0_77//bin/java -Dproc_jar -Xmx1000m 
-Dhadoop.log.dir=/home/hduser/hadoop/logs -Dyarn.log.dir=/home/hduser/hadoop/logs 
-Dhadoop.log.file=yarn.log -Dyarn.log.file=yarn.log 
-Dyarn.home.dir= -Dyarn.id.str= -Dhadoop.root.logger=INFO,console 
-Dyarn.root.logger=INFO,console -Dyarn.policy.file=hadoop-policy.xml 
-Dhadoop.log.dir=/home/hduser/hadoop/logs -Dyarn.log.dir=/home/hduser/hadoop/logs 
-Dhadoop.log.file=yarn.log -Dyarn.log.file=yarn.log 
-Dyarn.home.dir=/home/hduser/hadoop -Dhadoop.home.dir=/home/hduser/hadoop 
-Dhadoop.root.logger=INFO,console -Dyarn.root.logger=INFO,console 
-classpath --classpath of jars
 org.apache.hadoop.util.RunJar abc.jar abc.mydriver2 /raw_data /mr_output/02

Есть ли какие-либо параметры, которые я могу изменить / добавить, чтобы разрешить одновременное выполнение нескольких заданий и ускорить текущую обработку данных?Я использую hadoop 2.5.2.Кластер находится в среде PROD, и я не могу снять его для обновления версии hadoop.

РЕДАКТИРОВАТЬ 1: я запустил новое задание MR с 362 ГБ данных, и все же использование оперативной памяти составляет около 8 ГБ и 22 ГБоперативной памяти бесплатно.Вот моя команда отправки задания -

nohup yarn jar abc.jar def.mydriver1 /raw_data /mr_output/01 &

Вот еще немного информации:

18/11/22 14:09:07 INFO input.FileInputFormat: Total input paths to process : 130363
18/11/22 14:09:10 INFO mapreduce.JobSubmitter: number of splits:130372

Существуют ли дополнительные параметры памяти, которые мы можем использовать для отправки задания, чтобы эффективно использовать память

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

В зависимости от вашего yarn-site.xml значение yarn.scheduler.minimum-allocation-mb слишком высокое.Это фактически означает, что у вас есть только в лучшем случае 18 доступных голосов.Это может быть правильным параметром для кластера с тоннами памяти, но для 32 ГБ он слишком велик.Уменьшите его до 1 или 2 ГБ.

Помните, что размеры блоков HDFS - это то, что обычно использует каждый картограф.Так что 1-2 ГБ памяти на 128 МБ данных звучит более разумно.Дополнительным преимуществом является то, что вы можете иметь до 180 доступных vcores, которые будут обрабатывать задания в 10 раз быстрее, чем 18 vcores.

0 голосов
/ 18 декабря 2018

Чтобы дать вам представление о том, как настраивается 4-ядерный 32-ядерный 128 ГБ ОЗУ на кластер узла:

Для Tez: делить RAM / CORES = Макс. Размер TEZ-контейнера. Итак, в моем случае: 128/ 32 = 4 ГБ

TEZ: enter image description here


YARN:

enter image description here

0 голосов
/ 21 ноября 2018

Я полагаю, что вы можете редактировать mapred-default.xml

Параметры, которые вы ищете:

  • mapreduce.job.running.map.limit
  • mapreduce.job.running.reduce.limit

0 (вероятно, то, что установлено на данный момент) означает НЕОГРАНИЧЕННОЕ.

Просмотр вашей памяти32G / Машина кажется слишком маленькой.

Какой у вас процессор / ядро?Я ожидаю, что Quad CPU / 16 ядер минимально.На машину.

...