Я пытаюсь запустить программу 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 контейнер. Может работать без проблем в пограничном узле кластера моей организации.