首页 > 技术,让世界更美好。 > 【CDH】CDH集群运行过程发现的几个问题

【CDH】CDH集群运行过程发现的几个问题

2017年7月31日

1.zoookeeper 连接过多,导致其他使用zookeeper的服务异常

使用 netstat -apn |grep 6502 | wc -l 命令查看使用6502端口(我修改了默认端口)连接zookeeper的连接数量。发现多达八九千之多。直接导致了其他角色不能正常连接zookeeper。

最后经过排除,发现24小时运行的spark Streaming程序中连接了hbase,而hbase是通过zookeeper集群连接。虽然使用的是连接池,但是图方便,其在insertAll方法中使用了saveAsHadoopDataset()方法(Spark RDD的方法)存储数据到hbase。而这行代码在每个批次也就是1秒运行一次,导致了几小时达到了几千个连接。注释了这行则连接正常。

解决方法是,使用自己连接池维护的连接连接hbase。或者用newAPIHadoopRDD()方法存储数据,虽然没有仔细分析源代码,发现使用这个接口也能自动关闭连接

2. yarn无法启动

Error found before invoking supervisord: dictionary update sequence element #95 has length 1; 2 is required

这个错误是CM的一个bug,解决方法为修改
util.py文件。将其中的代码:
pipe= subprocess.Popen([‘/bin/bash’, ‘-c’, “. %s; %s; env” % (path,command)],stdout=subprocess.PIPE, env=caller_env)
修改为:

[root@search33 tmp]# vi /opt/cloudera-manager/cm-5.8.1/lib64/cmf/agent/build/env/lib/python2.6/site-packages/cmf-5.8.1-py2.6.egg/cmf/util.py

365   pipe = subprocess.Popen([‘/bin/bash’, ‘-c’, “. %s; %s; env | grep -v { | grep -v }” % (path, command)],
366                           stdout=subprocess.PIPE, env=caller_env)
各节点重启agent

本文的评论功能被关闭了.