Отправка Spark2 с мастер-пряжей выдает ошибку "URL должен быть установлен"
Я получаю исключение, org.apache.spark.SparkException: A master URL must be set in your configuration
я использовал spark2-submit
с вариантами deploy-mode = cluster
а также master = yarn
, Насколько я понимаю, я не должен получать это исключение с пряжей в качестве мастера.
Отправить скрипт
export JAVA_HOME=/usr/java/jdk1.8.0_131/
spark2-submit --class com.example.myapp.ClusterEntry \
--name "Hello World" \
--master yarn \
--deploy-mode cluster \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 3 \
--packages org.apache.kudu:kudu-spark2_2.11:1.4.0 \
myapp.jar myconf.file
исключение
18/03/14 15:31:47 WARN scheduler.TaskSetManager: Lost task 1.0 in stage 1.0 (TID 3, vm6.adcluster, executor 1): org.apache.spark.SparkException: A master URL must be set in your configuration
at org.apache.spark.SparkContext.<init>(SparkContext.scala:376)
at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2509)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:909)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:901)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:901)
at com.example.myapp.dao.KuduSink.open(KuduSink.scala:18)
at org.apache.spark.sql.execution.streaming.ForeachSink$$anonfun$addBatch$1.apply(ForeachSink.scala:50)
at org.apache.spark.sql.execution.streaming.ForeachSink$$anonfun$addBatch$1.apply(ForeachSink.scala:49)
at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:926)
at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:926)
at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2062)
at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2062)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
at org.apache.spark.scheduler.Task.run(Task.scala:108)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:335)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Кластер - это кластер Cloudera, работающий под Spark 2.2. Я заметил, что KuduSink приложения был частью сообщения об исключении, возможно, ошибка основного URL-адреса произошла от KuduContext? Однако я не получал такую ошибку при локальном запуске этого приложения для dev.
1 ответ
Вы правы, Spark на YARN не требует мастер-URL.
Убедитесь, что SPARK_HOME, YARN_HOME и HADOOP_HOME настроены правильно.
Надеюсь, вы две разные версии свечи в одном кластере. Посылка CDH поставляется с искрой 1.6 по умолчанию. Предполагая, что вы установили spark2 через Custom Service Descriptor и правильно настроили сервис.
Убедитесь, что нет совпадений в конфигурации spark-submit(spark 1) и spark2-submit(spark 2).
Убедитесь, что конфигурация клиента развернута для сервиса spark2.