AWS Записная книжка EMR pyspark завершается с ошибкой `Не удалось запустить команду / usr / bin / virtualenv (...)` - PullRequest
0 голосов
/ 07 апреля 2020

Я создал базовый c EMR кластер в AWS, и я пытаюсь использовать ноутбуки Jupyter, предоставляемые через консоль AWS. Кажется, что запуск ноутбуков работает нормально, и я также могу запускать базовый c python код в ноутбуках, запущенных с ядром pyspark. В записной книжке установлены две переменные: spark - это экземпляр SparkSession, а sc - это экземпляр SparkContext. Отображение sc выходов <SparkContext master=yarn appName=livy-session-0> (результат, конечно, может незначительно отличаться в зависимости от сеанса).

Проблема возникает, когда я выполняю операции, которые на самом деле поражают искровое оборудование. Например:

sc.parallelize(list(range(10))).map(lambda x: x**2).collect()

Я не эксперт по искрам, но я считаю, что этот код должен распределять целые числа от 0 до 9 по кластеру, возводить их в квадрат и возвращать результаты в виде списка. Вместо этого я получаю длинную трассировку стека, в основном от JVM, но также и от некоторых python компонентов. Я считаю, что центральная часть трассировки стека выглядит следующим образом:

py4j.protocol.Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 4.0 failed 4 times, most recent failure: Lost task 0.3 in stage 4.0 (TID 116, ip-XXXXXXXXXXXXX.eu-west-1.compute.internal, executor 17): java.lang.RuntimeException: Failed to run command: /usr/bin/virtualenv -p python3 --system-site-packages virtualenv_application_1586243436143_0002_0

Полная трассировка стека здесь .

Немного копания в AWS Портал привел меня к журналу вывода с узлов. стандартный вывод с одного из узлов включает в себя следующее:

The path python3 (from --python=python3) does not exist

Я попытался запустить команду /usr/bin/virtualenv на главном узле вручную (после входа в систему), и это работало нормально, но ошибка, конечно, все еще присутствует после того, как я это сделал.

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

Техническая информация о настройке кластера:

  • emr-6.0.0
  • Установленные приложения: "Ganglia 3.7.2, Spark 2.4.4, Zeppelin" 0.9.0, Livy 0.6.0, JupyterHub 1.0.0, Hive 3.1.2 ". Если бы oop также было включено.
  • 3 узла (один из них как мастер), все r5a.2xlarge.

Есть идеи, что я делаю неправильно? Обратите внимание, что я совершенно новичок в EMR и Spark.

Редактировать: добавлен журнал stdout и информация о ручном запуске команды virtualenv на главном узле через s sh.

1 Ответ

0 голосов
/ 08 апреля 2020

Я перешел на использование emr-5.29.0, что, похоже, решает проблему. Возможно, это проблема с emr-6.0.0? В любом случае, у меня есть функциональное решение.

...