问题描述
EMR主节点内存异常100%,导致hbase服务异常,数据无法读取
问题原因
阿里云安全中心有告警提示恶意操作,sh到header节点发现是中毒了有些常用命令被恶意替换,远程上去把相关的文件删除,对应IP加入黑名单,关闭zeppelin的外网端口后,发现header节点内存打满,hbase服务异常
解决方案
1、主节点异常100%.首先确认大概内存飙升的时间节点
2、经上述分析以及查看集群控制台对应服务,目前hbase组件显示异常,hbase shell命令失败。重启hbase无法拉起HRegionserver服务
3、top查看当前集群进程资源占用情况,重点关注内存,查看没有占用内存资源很大的进程。但是总体内存占用仍在95%以上
ps:单个进程占用不高,但整体能达到95%以上,是否说明可能有大量进程或者某服务同类型进程存在?
4、查找内存陡增原因暂缓,首要任务需要将Hbase服务恢复。查看Hbase gc日志,发现有大量Full gc,登录hbase shell执行命令报错链接不上hdfs 9000端口
5、根据错误查看hdfs服务是否正常,发现namenode控制台状态显示为down
6、从上面排查信息梳理可知:hbase依赖hdfs服务,而master节点主机内存占用高导致namenode宕掉。所以先通过ps -ef | grep pid定位具体进程详情,kill掉非核心进程来释放内存,例如用非核心的作业进程,ganglia,zeppelin等(具体kill的进程根据业务来定,优先kill无业务使用的进程)
7、释放内存过程中发现hbase shell进程较多(可能是人为,暂不确定)。都kill掉后内存降低到80%
8、重启namenode,namenode启动成功。namenode服务正常后重启hbase,各worker节点hregionserver服务被拉起。服务恢复正常
更多信息
主节点内存打满造成的hbase、namenode服务异常,kill掉不必要进程后恢复
适用于
- E-MapReduce