1.问题描述
-
问题原因
运维在凌晨断电重启服务器后,因未忘记将测试环境集群CDH关闭,
导致CDH的 server/agent集群,Zookeeper集群,hdfs集群,yarn无法重启,
监控指标全部消失,症状如下 -
cdh各个节点无状态
-
agent启动失败
-
zookeeper
启动顺序
- CDH server agent
- zookeeper集群
- hdfs集群
- yarn集群
启动CDH集群
- 启动问题一 启动server后发现没问题,但是启动server所在的agent时,老是出错,启动后很快退出,查看日志报错如下
-
问题分析,应该是agent没有成功启动,导致无法找到CDH parcels包
-
启动问题二,也是agent启动不起来
- 报错信息
- 定位 查看cloudera-scm-agent.log日志,发现无日志,折腾了一天,再查看cloudera-scm-agent.out,才发现时自己的添加的代码所致
- 费了大半天的功夫,发现时自己的在源码中加的代码【为了打印集群指标信息】所致,因为不支持中文,真是坑死了自己,服了,于是去掉添加代码解决
解决
- 方案一,参考statckOverflow的文章,可以对服务器进行重启,但有局限性【对于服务器有其他服务不可重启,发现仍然不能解决问题
- 方案二,搜索问题,发现agent启动后会有supervisor进程守候,防止其异常退出,进行拉起,查看supervisor进程 发现其启动时间与agent不一致,因此报401错误,根据方法提示将supervisor进程杀死,重启agent,问题成功解决,agent启动
- 最终方案
- 1. 删除 /data/program/cm-5.13.0/lib/cloudera-scm-agent/下上个agent进程配置文件 cm_guid,[禁止删除uuid,要不CDH会出现多个重复的机器节点]
- 删除上个agent进程的supervisor进程,然后启动agent服务
zookeeper
- 在cdm agent未重启成功时,无法启动zookeeper,报错如下,无法在CDH页面查看日志
- 首先查看zookeeper三个节点的myid,没有问题,可以选举出leader[ zookeeper选举leader流程:
elction[选举myId最大的为leader】->dicovery可用节点->sync zk元数据 --> broadcast 广播】,也没有问题,根据stackoverflow的一篇文章,删除zookeeper datadir下面的离现在最近的、大小为0的log文件,仍然无法解决问题 - 后面考虑应该是agent的问题,在CDH agent解决后,重新启动
hdfs
- 在zookeeper启动后,进行启动hdfs后,因为hdfs根据journal node做了HA,发现HA中 secondaryNameNode的journal node /tmp目录空间不足,查看/tmp挂载位置,对该挂载空间进行清理
journalNode异常
- 发现journaal node状态异常,报错日志如下
The health test result for JOURNAL_NODE_WEB_METRIC_COLLECTION has become bad: The Cloudera Manager Agent got an unexpected response from this role's web server.
- 日志如下:
- 实际原因:当机器断电后,重启导致编辑日志损坏了,无法进行编辑日志处理。
- 解决:查看secondaryNameNode的journalNode服务政策,决定将secondaryNameNode的journalNode的编辑日志和镜像文件复制到namenode
- 操作,按顺序关闭yarn,hdfs,zookeeper机器,打包备份namenode journalnode 编辑日志和镜像文件【以备失败替换回】,然后将secondaryNameNode 的编辑日志和镜像文件复制到namenode,并修改这些文件目录的用户和权限, 然后重启zookeeper机器,hdfs机器,yarn集群
Yarn集群
- resourcemanger报错如下
- 原因发现是jvm参数设置过小导致,原始设置为1g
- 修改:调整堆内存大小和JVM参数,修改后的结果如下,设置堆内存为4g,young代内存为1g
CDH service monitor 无数据
-
图表无数据
-
查询时 异常
-
查看日志发现,无法创建CDH相关的分区
-
解决:将cloudera-service-monitor备份,然后进行重启
parcels包分发后,无法建立软链 [ln -s CDH包 CDH]
问题
当解决了主机和对应磁盘、内存不在同一条记录【CDH->所有主机 主机列表】,发现parcels包分发后,仍然无法
正常启动zookeeper,hdfs
报错信息
zookeeper报错
CDH Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain
hdfs 在zookeeper完全启动后,启动仍然报错:
namenode报错如下,服务停止:
RECEIVED SIGNAL 15: SIGTERM
原因
CDH 启动未寻找到对应的hdfs目录,zookeeper目录,导致无法发现类,namenode发启动
解决
- 修改CDH config.ini,将zookeeper,hdfs,yarn的依赖重新指定到CDH目录
vim /data/program/cm-5.13.0/etc/cloudera-scm-agent/config.ini
[Hadoop]
cdh_hadoop_bin=/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/hadoop/bin
cdh_hadoop_home=/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/hadoop
cdh_hdfs_home=/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/hadoop-hdfs
cdh_hive_home=/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/jar
cdh_httpfs_home=/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/jar
cdh_hue_plugins_home=/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/hadoop
cdh_mr2_home=/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/hadoop-mapreduce
cdh_yarn_home=/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/hadoop-yarn
cdh_zookeeper_home=/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/zookeeper
LD_LIBRARY_PATH=/opt/cloudera/parcels/CDH/lib/hadoop/lib/native
- 修改/etc/hadoop/conf.cloudera.hdfs/hadoop-env.sh,将hdfs,yarn,zookeeper的依赖重新指定到CDH目录
export HADOOP_CLIENT_OPTS="-Xmx268435456 -Djava.net.preferIPv4Stack=true $HADOOP_CLIENT_OPTS"
export LD_LIBRARY_PATH=/opt/cloudera/parcels/CDH/lib/hadoop/lib/native
- 修改/etc/hadoop/conf.cloudera.yarn/hadoop-env.sh,将hdfs,yarn,zookeeper的依赖重新指定到CDH目录
#export HADOOP_MAPRED_HOME=$( ([[ ! '/usr/lib/hadoop-mapreduce' =~ CDH_MR2_HOME ]] && echo /usr/lib/hadoop-mapreduce ) || echo ${CDH_MR2_HOME:-/usr/lib/hadoop-mapreduce/} )
export HADOOP_MAPRED_HOME=/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/hadoop-mapreduce
export YARN_OPTS="-Xmx825955249 -Djava.net.preferIPv4Stack=true $YARN_OPTS"
export HADOOP_CLIENT_OPTS="-Djava.net.preferIPv4Stack=true $HADOOP_CLIENT_OPTS"