Как определить количество рабочих giraph, чтобы установить в аргумент -w?
Я использую кластер Hadoop ec2, который состоит из 20 машин c3.8xlarge, каждая из которых имеет 60 ГБ оперативной памяти и 32 виртуальных процессора. На каждой машине я настраивал параметры пряжи и mapreduce, как описано здесь https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hadoop-task-config.html, как показано ниже:
c3.8xlarge
Configuration Option Default Value
mapreduce.map.java.opts -Xmx1331m
mapreduce.reduce.java.opts -Xmx2662m
mapreduce.map.memory.mb 1664
mapreduce.reduce.memory.mb 3328
yarn.app.mapreduce.am.resource.mb 3328
yarn.scheduler.minimum-allocation-mb 32
yarn.scheduler.maximum-allocation-mb 53248
yarn.nodemanager.resource.memory-mb 53248
Теперь, какие критерии я должен использовать, чтобы определить наиболее подходящее количество рабочих, чтобы использовать с giraph? Т.е. какое число я должен использовать для аргумента -w? Связаны ли эти критерии с вышеуказанными настройками?
1 ответ
Оптимального числа не существует, но большинство параллельных рабочих, которых вы можете иметь, можно приблизительно рассчитать следующим образом.
Каждый NodeManager имеет 53248 МБ, умножьте это на количество подчиненных узлов.
Вычесть только один am.resource.mb
сумма от этого, так как все задания требуют мастера приложения.
Затем разделите это на большее из памяти вашего картографа или редуктора для общего количества задач MapReduce, которые могут выполняться одновременно