即将上线的Spark服务器面临的一系列填坑笔记
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
把kafka和flume倒腾玩了,以为可以轻松一段时间了,没想到使用CDH部署的spark也出现一些列的问题,真让人脑仁疼啊,硬着头皮一个一个的去填坑..........
一.因配置文件不同,导致无权限访问hdfs目录。
报错信息如下:
18/10/19 00:36:23 ERROR spark.SparkContext: Error initializing SparkContext.
org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
综上所述,是权限问题。于是我用hdfs和hadoop命令查看了一下我的hdfs目录,发现他们是两个不同的结果:
两个命令执行的结果不一致!这个时候我想到了配置文件,我的hdfs和yarn都是用cdh安装的,这台机器是从存储集群(还有一套计算集群)抽出来做入口机的。这个时候我想到了hdfs的配置文件可能是不同的,于是我找到下面的2个目录,对比了一下,发现果真和我猜想的一样,conf.cloudera.hdfs和conf.cloudera.yarn的配置文件是不一致的:
根据我们的报错信息,它应该是去读取conf.cloudera.yarn这个目录的配置文件啦!因此我们需要同步hdfs的配置文件: cp conf.cloudera.hdfs/core-site.xml conf.cloudera.hdfs/hdfs-site.xml conf.cloudera.yarn/
本以为问题就次解决了,没想想到易燃还是在报错,虽然hdfs和hadoop命令的执行结果目前是一致的了!
这就尴尬了,倒是是咋回事嘛?难道启动spark的时候去读hdfs文件权限的不在这个目录下?于是我差了一下关于包含hdfs配置文件的目录,不查不知道,一查吓一跳!竟然有这么多地方存放hdfs的配置文件。这Cloudera公司也真是的,为啥不公用同一个配置文件呢?算了,不吐槽了,继续去验证配置文件是否一致!
果然是有猫腻,两个同名的配置文件,内容是不一致的 !
于是我有屁颠屁颠的将之前的hdfs的配置文件进行同步,最终关于权限的问题就消失了。
二.因配置文件不同,导致无法访问服务
很高兴的将上面的问题解决了,但是新的错误又出来了,报错信息如下:
18/10/19 15:51:26 ERROR spark.SparkContext: Error initializing SparkContext.
org.apache.spark.SparkException: Yarn application has already ended! It might have been killed or unable to launch application master.
我的第一反应,是不是还是配置文件的问题呢?于是我去新集群,将yarn的配置文件下载下来,并上传到我这台服务器上
将下载后的文件上传到我的服务器上并替换掉,然后在启动spark查看是否恢复