我有一个Java Spark作业,它可以在EC2上以独立模式手动部署Spark 1.6.0。EMR上的Spark YARN - JavaSparkContext - IllegalStateException:库目录不存在
我正在使用YARN将此作业提交给主站上的EMR 5.3.0群集,但它失败。
火花提交线是,
spark-submit --class <startclass> --master yarn --queue default --deploy-mode cluster --conf spark.eventLog.enabled=true --conf spark.eventLog.dir=hdfs://`hostname -f`:8020/tmp/ourSparkLogs --driver-memory 4G --executor-memory 4G --executor-cores 2 hdfs://`hostname -f`:8020/data/x.jar yarn-client
的“纱线的客户端”是第一个参数x.jar应用和被馈送到SparkContext作为setMaster,
conf.setMaster(args[0]);
当我提交它,它开始运行良好,直到我从SparkConf初始化JavaSparkContext,
JavaSparkContext sc = new JavaSparkContext(conf);
... an d然后Spark崩溃。
纱线日志,我可以看到下面,
yarn logs -applicationId application_1487325147456_0051
...
17/02/17 16:27:13 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
17/02/17 16:27:13 INFO Client: Deleted staging directory hdfs://ip-172-31-8-237.eu-west-1.compute.internal:8020/user/ec2-user/.sparkStaging/application_1487325147456_0052
17/02/17 16:27:13 ERROR SparkContext: Error initializing SparkContext.
java.lang.IllegalStateException: Library directory '/mnt/yarn/usercache/ec2-user/appcache/application_1487325147456_0051/container_1487325147456_0051_01_000001/assembly/target/scala-2.11/jars' does not exist; make sure Spark is built.
...
注意到WARN spark.yarn.jars标志缺失的,我在
/usr/lib/spark/jars/
发现火花纱JAR文件。并根据Cloudera的指南将其上传到HDFS,以便如何在Spark上运行YARN应用程序并尝试添加该配置文件,因此这成为我的火花提交线,
spark-submit --class <startclass> --master yarn --queue default --deploy-mode cluster --conf spark.eventLog.enabled=true --conf spark.eventLog.dir=hdfs://`hostname -f`:8020/tmp/ourSparkLogs --conf spark.yarn.jars=hdfs://`hostname -f`:8020/sparkyarnlibs/spark-yarn_2.11-2.1.0.jar --driver-memory 4G --executor-memory 4G --executor-cores 2 hdfs://`hostname -f`:8020/data/x.jar yarn-client
但是这并没有工作,给这个:
Could not find or load main class org.apache.spark.deploy.yarn.ApplicationMaster
我,什么是图书馆的错误是造成,以及如何从这里开始进行真正的疑惑。