Как найти правильную часть между типами экземпляров Hadoop

Я пытаюсь выяснить, сколько экземпляров MASTER, CORE, TASK оптимально для моей работы. Я не мог найти никакого учебника, который объясняет, как мне это понять.

  • Как узнать, нужно ли мне более 1 экземпляра ядра? Какие «симптомы» я увижу в консоли EMR в метриках, которые намекают, что мне нужно больше одного ядра? До сих пор, когда я пробовал ту же работу с 1 * ядром + 7 * экземплярами задач, она работала почти так же, как на 8 * ядрах, но для меня это не имеет особого смысла. Или возможно, что моя работа так сильно связана с процессором, что ввод-вывод такой незначительный? (У меня есть задание только для карты, которое анализирует файлы журнала apache в файл csv)

  • Есть ли такая вещь, чтобы иметь более 1 главного экземпляра? Если да, то когда это необходимо? Интересно, потому что мой главный узел в значительной степени просто ждет, пока другие узлы выполнят эту работу (0% ЦП) в течение 95% времени.

  • Могут ли мастер и основной узел быть идентичными? У меня может быть только главный кластер, когда 1 и единственный узел делает все. Вроде бы логично было бы иметь кластер с 1 узлом, который является мастером и ядром, а остальные — таск-нодами, но с EMR так настроить вроде бы невозможно. Почему это?


person Gavriel    schedule 29.04.2014    source источник


Ответы (1)


Мастер-экземпляр действует как менеджер и координирует все, что происходит во всем кластере. Таким образом, он должен существовать в каждом потоке заданий, который вы запускаете, но вам нужен только один экземпляр. Если вы не развертываете кластер с одним узлом (в этом случае мастер-экземпляр является единственным работающим узлом), он не выполняет никакой тяжелой работы в том, что касается фактического MapReduction, поэтому экземпляр не должен быть мощным компьютером.

Количество экземпляров ядра, которые вам нужны, действительно зависит от задания и от того, насколько быстро вы хотите его обработать, поэтому единого правильного ответа не существует. Хорошо, что вы можете изменить размер группы экземпляров ядра/задачи, поэтому, если вы считаете, что ваша работа выполняется медленно, вы можете добавить больше экземпляров в запущенный процесс.

Одно важное различие между группами экземпляров ядра и задач заключается в том, что экземпляры ядра хранят фактические данные в HDFS, а экземпляры задач — нет. В свою очередь, вы можете увеличить только основную группу экземпляров (поскольку удаление запущенных экземпляров приведет к потере данных об этих экземплярах). С другой стороны, вы можете как увеличивать, так и уменьшать группу экземпляров задач, добавляя или удаляя экземпляры задач.

Таким образом, эти два типа экземпляров можно использовать для настройки вычислительной мощности вашего задания. Как правило, вы используете инстансы по требованию для основных инстансов, потому что они должны работать все время и не могут быть потеряны, и вы используете спотовые инстансы для экземпляров задач, потому что потеря экземпляров задач не уничтожает все задание (например, задачи, не завершенные экземплярами задач). будет повторно запущен на основных экземплярах). Это один из способов экономичного запуска большого кластера с помощью точечных экземпляров.

Общее описание каждого типа экземпляра доступно здесь:

http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/InstanceGroups.html

Также это видео может быть полезно для эффективного использования ЭМИ:

https://www.youtube.com/watch?v=a5D_bs7E3uc

person Taro Sato    schedule 30.04.2014
comment
Все это я знаю. Но как я узнаю, хватит ли 1 ядра и все ОСТАЛЬНЫЕ (пусть будет 8 или 64 или 200) могут быть задачами, или должна быть пропорция (явно зависящая от моей работы), что если я пройду (добавлю слишком много экземпляры задачи) замедлит работу, потому что не хватает основных экземпляров, а ввод-вывод основного экземпляра (который, насколько я понимаю, используют все экземпляры задачи) станет узким местом. - person Gavriel; 01.05.2014
comment
Ага, понятно. Это интересный вопрос, но, боюсь, я никогда не экспериментировал с этим в уме. Я не думаю, что когда-либо видел, что моя работа работает менее эффективно, добавляя больше узлов задач, но это может быть просто моя работа. Вы можете выяснить это самостоятельно, отслеживая свою работу на консоли EMR и изменяя размер основных/групп задач в длительной работе. - person Taro Sato; 01.05.2014
comment
Да, но мой вопрос именно в этом: какие меры на консоли ЭМИ актуальны для этого? В настоящее время единственное, что я делал, — это запускал одно и то же задание с разными конфигурациями и измерял время, затраченное на это, но это не слишком точно. - person Gavriel; 04.05.2014
comment
Удалось ли вам найти ответ на этот вопрос? - person user482594; 12.12.2014
comment
Вероятно, это один из тех общих вопросов, для которых может существовать какое-то общее эмпирическое правило, но наилучшее решение действительно зависит от ситуации, так что простое руководство не будет удовлетворительным (вы можете использовать разные типы экземпляров для главного, основного, групп задач, д., что уже достаточно сложно). Я посетил ту самую сессию AWS reInvent (с которой видео я связал выше), именно желая узнать информацию, но я не получил больше, чем все это, я уже знаю. Мне самому любопытно, доступны ли полезные передовые практики. - person Taro Sato; 25.12.2014
comment
Дополнительную информацию об этом можно найти на странице safaribooksonline.com/library. /просмотреть/. Ключевым моментом является то, что данные к узлам задач и от них должны проходить через главный узел. Я предполагаю, что таким образом количество узлов задач можно увеличивать до тех пор, пока они не перестанут работать на полную мощность: я бы воспринял это как указание на то, что данные проходят через главный узел недостаточно быстро (если вы можете отслеживать скорость передачи данных на мастер, это будет соответствовать скорости насыщения). - person Eric O Lebigot; 02.05.2015