本文主要讲述重庆某项目生产集群扩容项目问题总结及复盘。其中部分问题之前有写过相关文档,可参考我之前写的文章《CDH集群安装YARN无法正常启动及解决办法》、《HDFS运行Balancer失败及问题解决办法》、《如何为CDH集群配置机架感知》
1.操作系统版本为Redhat7.2
2.CM和CDH版本为5.11.2
3.HDFS已启用HA
【问题描述】
生产集群新增节点后,业务系统对外开放的大部分API功能异常,无法获取到HBase数据。
【问题原因】
生产集群未配置DNS服务器,集群内部节点通过/etc/hosts文件解析主机名和主机IP的映射关系,新增节点后,需要更新hosts文件并同步至集群内部所有节点。CDH集群内部的所有大数据服务器hosts文件全部更新完成,但是应用服务器不在CDH集群内,导致应用服务器的hosts文件未及时更新。
【解决办法】
更新应用服务器的hosts文件。
【建议】
使用批量拷贝文件脚本前,如果目标服务器上存在同名文件,强烈建议先将文件备份,再执行批量拷贝文件脚本!
【问题描述】
运行HDFS的Balancer命令后,中止过该命令一次,再次运行Balancer命令出现如下报错:
异常信息提示为:”java.io.IOException: Another Balancer is running.. Exiting ...” |
---|
经过仔细检查,并未发现有任何运行Balancer的主机。
【问题原因】
HDFS在运行Balancer的时候,会将运行Balancer的主机名写入到balancer.id这个文件里面,通过这个Mark File来检测Balancer是否运行,该文件存放在HDFS上的/system目录下。
【解决办法】
以“balancer.id”命名的Mark File存储了运行Balancer主机的主机名,位于HDFS的/system目录下,如果执行Balancer出现”java.io.IOException:Another Balancer is running.. Exiting...”这类异常问题,先查看“balancer.id”文件内容,检查是否有其他主机在运行Balancer,如果没有,则删除该文件,重新执行Balancer即可恢复正常。
【建议】
如果HDFS的Balancer在非正常情况下终止,建议在重新执行Balancer前,清除掉balancer.id这个文件。详细内容可参考《HDFS运行Balancer失败及问题解决办法》
【问题描述】
在使用CDH5.11.2版本时,新增YARN的NodeManager角色,在启动角色实例时,出现如下异常:
异常信息为:”IO error: /var/lib/hadoop-yarn/yarn-nm-recovery/yarn-nm-state/LOCK: Permission denied” |
---|
在Redhat7.2操作系统上部署5.11.2版本的CDH集群以及为该版本集群扩容节点都遇到过该类问题
【问题原因】
故障节点的/var/lib/hadoop-yarn/目录权限为000
【解决办法】
更改hadoop-yarn目录权限为755,重启NodeManager角色实例。
【建议】
在添加NodeManager之前,在相关节点上手动创建/var/lib/hadoop-yarn目录,可以避免出现该问题。如果节点数量太多,可通过批量执行命令脚本创建目录。详细内容可参考《CDH集群安装YARN无法正常启动及解决办法》
【问题描述】
机架感知配置失效,原来配置生效的机架感知被清除,还原为默认机架。
【问题原因】
机架感知脚本存放在“/etc/hadoop/conf.cloudera.hdfs/”目录下,该目录存放HDFS的客户端配置,在重新部署HDFS客户端配置时,会将机架感知脚本清除。
【解决办法】
将机架感知脚本存放在“/opt/cloudera/parcels/CDH/”目录下。
【建议】
机架感知脚本应存放在所有Namenode上,且存放路径相同。不应将机架感知脚本存放在CDH组件配置目录下,最好能放在一个固定目录下。详细内容可参考《如何为CDH集群配置机架感知》
【问题描述】
修改Zookeeper数据目录存放路径后,重启Zookeeper失败。
【问题原因】
迁移Zookeeper数据需要创建/XXX/XXX/version-2/目录,并将目录属主和属组都赋予Zookeeper,否则Zookeeper无法向新数据目录写入数据。
【解决办法】
重启Zookeeper前,需要手动创建/data6/var/lib/zookeeper/version-2/目录,确保目录权限为755,并更改目录属主和属组为:zookeeper。
完成上述操作后,重启Zookeeper即可。
【建议】
可以将Zookeeper原始数据目录内的所有数据拷贝到新数据目录,并保留文件属主和属组,然后重启Zookeeper。
【问题描述】
使用”du -sh /var/lib/mysql”命令查看Mysql数据总和,发现是140GB左右,但用mysqldump工具备份数据目录产生的文件达到了300GB以上,并且还没有备份完成的趋势。
【问题原因】
/var/lib/mysql目录下有一个nas的软链接,该链接连接到数据盘的nas目录,通过du -sh命令查看数据盘上nas目录的大小,发现有3个TB数据。
【解决办法】
由于之前查看mysql数据总量,才140GB,使用的是”mysqldump -uroot -p -A > all.dump”的方式进行全量备份。现在发现数据量太大,主要是Navigator Audit Server对应的nas数据库存放了大量审计数据,由于数据量太大,不备份该数据库的文件内容。只对重要数据库进行备份,使用如下命令”mysqldump -uroot -p -B databaseName > databaseName.dump”
【建议】
进行数据库全量备份之前,一定要检查数据库目录下是否存在软链接,否则容易对情况误判。nas数据库存放的数据最好还是要定期清理。
1.在项目实施前,全盘规划很重要,画实施流程图是很有必要的,可以避免走很多弯路。
2.细节方面有待加强,有些问题其实是能够避免的,比如Mysql数据备份问题。