导读:
本文对一些遇到异常总结,如果遇到了,能解决更好,如果还没有遇到,可以备用。
1.yarn无法启动,可能原因是什么?
2.Host Monitor和Service Monitor服务无法启动,可能造成的原因是什么?
3.oozie服务启动失败本文是如何解决的?
Yarn服务无法启动1 有一次同事拿着我写的安装手册去安装CDH,结果在启动Yarn服务这一步一直失败,而且没有log文件生成,也就是根本就不知道是什么错误。
经过百般尝试后依然无果。于是问同事是不是严格按照我的文档上来的,同事说是。结果又尝试和排查了很多次后,同事突然说,我想起来了,打通ssh没按照你的来,你是生成key了分发到其它机器,其实有种口令直接就能分发key到其它机器,不用在本机生成。比如这样ssh-copy-id -p 8282 -i ~/.ssh/id_rsa.pub user@ip。
然后,我怀着崩溃的心情告诉了他,哥哥,master机器也要能免密码登录自己啊!!
最后,做好master机器免登录自己后即可成功安装。
Yarn服务无法启动2 报错信息:
Error found before invoking supervisord: dictionary update sequence element #78 has length1; 2 is required
复制代码
这个错误是CM的一个bug,解决方法为修改/opt/cm-5.3.0/lib64/cmf/agent/src/cmf/util.py文件。将其中的代码:
pipe = subprocess.Popen(['/bin/bash', '-c', ". %s; %s; env" % (path, command)],
stdout=subprocess.PIPE, env=caller_env) 复制代码
修改为:
pipe = subprocess.Popen(['/bin/bash', '-c', ". %s; %s; env | grep -v { | grep -v }" % (path, command)],
stdout=subprocess.PIPE, env=caller_env) 复制代码
然后重启所有Agent即可。
HDFS服务无法启动 若HDFS服务无法启动,通常是第二次尝试安装中才会遇到,这是只要将上次安装时设置的Namenode和DataNode文件夹下的数据全部删除即可。
Host Monitor和Service Monitor服务无法启动 这个错误的报错信息如下:
2015-03-23 16:08:10,518 ERROR com.cloudera.cmon.firehose.Main: Error creating LevelDB subject record store.
java.lang.IllegalStateException
at com.google.common.base.Preconditions.checkState(Preconditions.java:133)
at com.cloudera.cmon.tstore.leveldb.LDBResourceManager.register(LDBResourceManager.java:273)
at com.cloudera.cmon.tstore.leveldb.LDBPartitionManager.<init>(LDBPartitionManager.java:270)
at com.cloudera.cmon.tstore.leveldb.LDBPartitionManager.createLDBPartitionManager(LDBPartitionManager.java:196)
at com.cloudera.cmon.tstore.leveldb.LDBTSSubjectRecordTable.create(LDBTSSubjectRecordTable.java:84)
at com.cloudera.cmon.tstore.leveldb.LDBSubjectRecordStore.create(LDBSubjectRecordStore.java:197)
at com.cloudera.cmon.tstore.leveldb.LDBSubjectRecordStore.create(LDBSubjectRecordStore.java:178)
at com.cloudera.cmon.firehose.Main.main(Main.java:517) 复制代码
初步一看,应该是这个两个服务所用的LevelDB文件没有正确的创建,于是删除/var/lib下两者的目录并重试,还是失败。于是尝试在其它机器上安装这2个服务,怎奈每次后退到选择安装机器的那一步时,关于Host Monitor和Service Monitor设置的项目就不见了,就算出现了且设置到其它机器上也不会安装在其它机器上,还是安装在master机器上。
后在google论坛上看到有人说可能是内存设置过低或者“进程打开最大文件数”过低造成的。考虑到打开句柄这步操作在安装CDH之前就已经进行且重来没有出过问题,于是就没有考虑。结果尝试数次过后还是不行。
最后无奈中看了下句柄数ulimit -n,发现居然是1024。然后登录其它slave节点查看,发现都是配置的65535。这是什么情况?同样的配置,会出现不同的结果。最后查看了ulimit -u等配置,发现除了master节点的句柄数配置没有生效以外,其它的都生效了。
最后无意中尝试了下telnet登录master节点,发现ulimit -n的结果居然是65535。好吧,至此终于知道原因了。master节点由于有DCN网络的IP,所以为了应对安全扫描安装了没有心脏漏血漏洞的高版本ssh,而其它slave节点并没有安装。看来是ssh登录造成的打开句柄数出现了异常。只不过我到现在为止都不知道为何系统级别的设置会受到登录方式的影响。
解决方法:由于只有句柄数配置未生效,于是在.bashrc中添加了ulimit -HSn 65535。重新安装,终于成功启动Host Monitor和Service Monitor服务。
8888,50070,8088等端口无法访问 现象:master机器通过wget可以正确的得到页面,但是外网却无法获取,而且网络的设置是正确的。
查看端口占用发现这些端口全部绑定在内网IP上而不是0.0.0.0。
解决方法:去各自的配置文件中配置即可,选择绑定至0.0.0.0端口,然后重启即可。
oozie服务启动失败 通常是第二次尝试安装中才会遇到,报错内容大概是数据库已存在。
解决方法:删除/var/lib/oozie/data文件夹即可。
HUE服务启动失败 报错信息是找不到libxslt.so.1。
解决方法:yum install libxslt即可。