Следует ли запускать ведомые узлы отдельно на сервере Amazon EMR? - PullRequest
0 голосов
/ 16 июня 2020

Я только что запустил сервер Amazon Elasti c MapReduce после попытки java .lang.OutofMemorySpace: Java пространство кучи при извлечении 120 миллионов строк из базы данных в pyspark , где у меня есть 1 мастер и 2 подчиненных узла, каждый из которых имеет 4 ядра и 8 ГБ ОЗУ.

Я пытаюсь загрузить большой набор данных из MySQL базы данных (содержащей около 120 миллионов строк). Запрос загружается нормально, но когда я выполняю операцию df.show() или пытаюсь выполнить операции с фреймом данных Spark, я получаю такие ошибки, как -

  1. org.apache.spark.SparkException: Job 0 cancelled because SparkContext was shut down
  2. Task 0 in stage 0.0 failed 1 times; aborting job
  3. java.lang.OutOfMemoryError: GC overhead limit exceeded

Мои вопросы -

  1. Когда IS SH на сервере Amazon EMR и делает htop, я вижу эти 5 ГБ из 8 ГБ уже используются. Почему это?
  2. На портале Amazon EMR я вижу, что главный и подчиненный серверы работают. Я не уверен, используются ли подчиненные серверы или всю работу выполняет только мастер. Должен ли я запускать или «запускать» 2 подчиненных узла отдельно или Spark делает это автоматически? Если да, то как мне это сделать?

1 Ответ

0 голосов
/ 16 июня 2020

Если вы запускаете Spark в автономном режиме (локальный [*]) от мастера, тогда он будет использовать только главный узел.
Как вы отправляете искровое задание?
Используйте режим кластера пряжи или клиентский режим при отправке искрового задания для эффективного использования ресурсов.
Подробнее на Кластер YARN и клиент

Главный узел запускает все другие службы, такие как hive, mysql, et c. Эти службы могут занимать 5 ГБ оперативной памяти, если не используют автономный режим.

В yarn UI (http://<master-public-dns>:8088) вы можете более подробно проверить, какие другие контейнеры работают.

Вы можете проверить где крутятся ваш искровый драйвер и исполнитель,
в искровом интерфейсе http://<master-public-dns>:18080.
Выберите свое задание и go в раздел Executor , там вы найдете ip машины каждого исполнителя.

Включить ганглии в EMR ИЛИ go в CloudWatch ec2 metri c для проверки использования каждого компьютера.

Spark не запускает или завершает узлы.
Если вы хотите масштабировать в зависимости от загрузки вашего кластера, примените политику автомасштабирования к группе экземпляров CORE или TASK.
Но, по крайней мере, вам нужен, по крайней мере, 1 постоянно работающий узел CORE.

...