spark yarn 集群提交kafka代码

配置好hadoop的环境,具体根据http://blog.csdn.net/u010638969/article/details/51283216博客所写的进行配置。

运行start-dfs.sh启动hdfs集群,成功后运行jps应该有NameNode,DataNode,SecondaryNameNode等应用。通过master:8088可以查看集群情况。

最好通过hadoop/logs里面的日志看一下有没有报错,确认集群启动成功。

 

运行start-yarn.sh启动yarn集群,通过查看logs下的日志查看是否成功。

 

打包用户代码,我的代码中包含了kafka处理structured stream的逻辑,打包后传送到集群中,用spark-submit提交报错:

Resources are low on NN

  

百度之发现是hdfs处于安全模式中,无法进行文件的修改。而流处理程序是必须使用hdfs进行checkpoint的,所以无法启动成功。

尝试使用

bin/hdfs dfsadmin -safemode leave

  

但是无法关闭安全模式。进入logs查看日志发现是dfs中路径没找到,根本原因是我移动了hadoop在linux中的路径,而配置文件没有随之更改,所以这里更改hdfs-site.xml中的路径,重新启动hdfs,查看日志启动成功。

 

再次提交代码遇到另外的错误:

java.lang.NoSuchMethodError: org.apache.spark.sql.SQLContext.internalCreateD

  

没有找到对应的方法,查看代码堆栈发现是kafka的结构化输入输出相关的,于是想到应该是spark的版本不对造成的,kafka的结构化输入输出在spark2.3.0后才支持,而集群中的是spark2.2.0,更换spark的版本后,再次提交代码,运行成功。

 

posted on 2018-03-16 09:34  skyer1992  阅读(292)  评论(0编辑  收藏  举报

导航