我正试图用以下方法运行一个带有纱线的火花作业:
./bin/spark-submit --class "KafkaToMaprfs" --master yarn --deploy-mode client /home/mapr/kafkaToMaprfs/target/scala-2.10/KafkaToMaprfs.jar
但面对这个错误:
/opt/mapr/hadoop/hadoop-2.7.0 03年1月17日11:19:26 WARN NativeCodeLoader:无法为您的平台加载本机hadoop库。。。使用适用的内置java类17/01/03 11:19:38错误SparkContext:初始化SparkContext时出错。org.apache.spark.SparkException:纱线应用程序已结束!它可能已被终止或无法启动应用程序主机。位于org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.waitForApplication(YarnClientSchedulerBackend.scala:124)位于org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:64)位于org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:144)网址:org.apache.spark.SparkContext.(SparkContext.scala:530)在KafkaToMaprfs$.main(KafkaToMaprfs.scala:61)在KafkaToMaprfs.main(KafkaToMaprfs.scala)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)位于java.lang.reflect.Method.ioke(Method.java:606)在org.apache.spark.deploy.SparkSubmit$org.apache$spark$deploy$SparkSubmit$$runMain(SparkSubmitte.scala:752)网址:org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)网址:org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmitte.scala:206)网址:org.apache.spark.deploy.SparkSubmit$.main(SparkSubmitte.scala:121)在org.apache.spark.deploy.SparkSubmit.main(SparkSubmitte.scala)17/01/03 11:19:39 WARN MetricsSystem:停止未在线程"main"中运行异常org.apache.spark.SparkException:纱线应用程序已结束!它可能已被终止或无法启动应用程序主机。位于org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.waitForApplication(YarnClientSchedulerBackend.scala:124)位于org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:64)位于org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:144)网址:org.apache.spark.SparkContext.(SparkContext.scala:530)在KafkaToMaprfs$.main(KafkaToMaprfs.scala:61)在KafkaToMaprfs.main(KafkaToMaprfs.scala)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)位于java.lang.reflect.Method.ioke(Method.java:606)在org.apache.spark.deploy.SparkSubmit$org.apache$spark$deploy$SparkSubmit$$runMain(SparkSubmitte.scala:752)网址:org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)网址:org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmitte.scala:206)网址:org.apache.spark.deploy.SparkSubmit$.main(SparkSubmitte.scala:121)网址:org.apache.spark.deploy.SparkSubmit.main(SparkSubmitte.scala)
我有一个多节点集群,我正在从远程节点部署应用程序。我使用的是spark 1.6.1和hadoop 2.7.x版本。
我没有设置集群,所以我找不到错误所在。
有人能帮我修一下吗?
在我的例子中,我使用的是MapR分布。而且我没有配置环境。所以,当我深入到所有的conf文件夹时。我在以下文件中做了一些更改,
1.在Spark env.sh中,确保这些值设置正确
export SPARK_LOG_DIR=
export SPARK_PID_DIR=
export HADOOP_HOME=
export HADOOP_CONF_DIR=
export JAVA_HOME=
export SPARK_SUBMIT_OPTIONS=
2.纱线环境sh.
确保使用正确的值设置了yarn_conf_dir和java_home。
3.在spark defaults.conf中
1.spark.driver.extraClassPath 2.set value for HADOOP_CONF_DIR
4。$SPARK_HOME/CONF/SPARK env.sh中的HADOOP_CONF_DIR和JAVA_HOME
1.export HADOOP_CONF_DIR=/opt/mapr/hadoop/hadoop-2.7.0/etc/hadoop
2.export JAVA_HOME =
5火花组件震击
1.将以下JAR文件从本地文件系统复制到MapR FS上的一个可读位置:替换您的Spark版本命令中的特定JAR文件名。/opt/mapr/spark/spark-/lib/spark-assembly--hadoop-mapr-.jar
现在我可以使用spark-submit以YARN-CLIENT的身份顺利运行我的spark应用程序了。这些是使火花与纱线连接的基本要素。如果我遗漏了什么,请纠正我。