我有一个 CDH-5.4.0
,带有 spark-on-yarn 的 4 节点集群。
我有一个环境变量 YARN_CONF_DIR
指向包含从其中一个集群成员(yarn 资源管理器的地址)获取的配置文件副本的目录。
我想从 java 运行 spark 作业:
SparkConf sparkConf = new SparkConf().
setMaster("yarn-cluster").// "yarn-cluster" or "yarn-client"
setAppName("SparX");
JavaSparkContext sc = new JavaSparkContext(sparkConf);
String path = "hdfs://virtual-machine-12.local:8020/mockRecords.csv";
JavaRDD<String> textFile = sc.textFile(path);
System.out.println(textFile.count());
如果我在 yarn-cluster
模式下运行程序,我会得到一个 NullPointerException
:
at org.apache.spark.deploy.yarn.ApplicationMaster$.sparkContextInitialized(ApplicationMaster.scala:580)
如果我在 yarn-client
中运行程序,代码会在 new JavaSparkContext(sparkConf)
之后挂起
知道我错过了什么吗?
谢谢!
最佳答案
确保 HADOOP_CONF_DIR 或 YARN_CONF_DIR 指向包含 Hadoop 集群(客户端)配置文件的目录。
对于您的 CDH-5.4.0 集群,您可以从 Cluster/yarn/Actions/Download Client Configuration
下载配置,解压并设置 HADOOP_CONF_DIR
或 YARN_CONF_DIR
指向这个目录。
关于apache-spark - CDH-5.4.0、spark-on-yarn、集群模式和 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30192624/