SparkLauncher не работает с Yarn, но работает в локальном режиме внутри контейнера docker - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь запустить программу spark из java приложения внутри docker изображения с помощью SparkLauncher.

Когда я вызываю команду spark-submit напрямую через файл sh, я могу запустить приложения, но когда я использую SparkLauncher для запуска задания spark из java программы, я получаю сообщение об ошибке ниже:

Exception in thread "main" org.apache.spark.SparkException: Could not
load YARN classes. This copy of Spark may not have been compiled with YARN support.

at org.apache.spark.deploy.SparkSubmit.error(SparkSubmit.scala:857)     
at org.apache.spark.deploy.SparkSubmit.prepareSubmitEnvironment(SparkSubmit.scala:265)
at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:143)
at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:924)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:933)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

На основании вышеуказанного журнала я изменил SparkLauncher для вызова в локальном режиме sparkLauncher.setMaster("local") вместо пряжи режим sparkLauncher.setMaster("yarn") и я смог запустить SparkLauncher внутри docker.

У меня есть следующие вопросы:

1) Как работает spark-submit, если используется напрямую, но не через SparkLauncher при запуске в режиме пряжи.

2) Как SparkLauncher может запускать spark-submit с основной локальной, но не с основной пряжей.

В дополнение к путанице, проблема SparkLauncher с Yarn возникает только при срабатывании через docker контейнер. Может работать без проблем в пограничном узле кластера моей организации.

...