我有Apache Spark 1.5.0的Hadoop集群Cloudera CDH 5.2 .
我可以使用集群的YARN,Spark和HDFS从IntelliJ IDEA或本地PC运行我的应用程序吗?
或者我应该通过ftp将jar发送到主节点,并通过spark-submit运行它?
是的,如果您按照以下步骤操作,则可以直接从IDE运行作业:
将 spark-yarn 包添加到您的项目依赖项(可以标记为 provided )
spark-yarn
provided
将具有hadoop配置的目录(HADOOP_CONF_DIR)添加到项目类路径
将火花装配 jar 复制到HDFS
然后使用config在应用程序中配置spark context:
SparkConf sparkConfig = new SparkConf(). .setMaster("yarn-client") .set("spark.yarn.queue", "if_you_are_using_scheduler") .set("spark.yarn.jar", "hdfs:///path/to/assembly/on/hdfs");
如果您的Hadoop是安全部署,则还需要
在启用JCE的情况下将JRE更改为JRE
将 krb5.conf 添加到java参数( -Djava.security.krb5.conf=/path/to/local/krb5.conf )
krb5.conf
-Djava.security.krb5.conf=/path/to/local/krb5.conf
在您的环境中调用 kinit
kinit
我之前在CDH上的Spark 1.2.0上测试过这个解决方案,但它应该在1.5上工作 . 请记住,这种方法使您的本地计算机成为一个火花驱动程序,因此请注意驱动程序和执行程序之间的一些防火墙 - 您的本地计算机应该可以从hadoop节点访问 .
1 回答
是的,如果您按照以下步骤操作,则可以直接从IDE运行作业:
将
spark-yarn
包添加到您的项目依赖项(可以标记为provided
)将具有hadoop配置的目录(HADOOP_CONF_DIR)添加到项目类路径
将火花装配 jar 复制到HDFS
然后使用config在应用程序中配置spark context:
如果您的Hadoop是安全部署,则还需要
在启用JCE的情况下将JRE更改为JRE
将
krb5.conf
添加到java参数(-Djava.security.krb5.conf=/path/to/local/krb5.conf
)在您的环境中调用
kinit
我之前在CDH上的Spark 1.2.0上测试过这个解决方案,但它应该在1.5上工作 . 请记住,这种方法使您的本地计算机成为一个火花驱动程序,因此请注意驱动程序和执行程序之间的一些防火墙 - 您的本地计算机应该可以从hadoop节点访问 .