EMR主节点内存异常100%,hbase服务异常

简介: EMR主节点内存异常100%,hbase服务异常

问题描述


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掉非核心进程来释放内存,例如用非核心的作业进程,gangliazeppelin等(具体kill的进程根据业务来定,优先kill无业务使用的进程)


7、释放内存过程中发现hbase shell进程较多(可能是人为,暂不确定)。都kill掉后内存降低到80%



8、重启namenode,namenode启动成功。namenode服务正常后重启hbase,各worker节点hregionserver服务被拉起。服务恢复正常


更多信息


主节点内存打满造成的hbase、namenode服务异常,kill掉不必要进程后恢复


适用于


  • E-MapReduce
相关文章
|
存储 Kubernetes 容器
【CKA模拟题】查找集群中使用内存最高的node节点
【CKA模拟题】查找集群中使用内存最高的node节点
282 1
|
存储 缓存 算法
深入浅出JVM(二)之运行时数据区和内存溢出异常
深入浅出JVM(二)之运行时数据区和内存溢出异常
|
Kubernetes Java API
|
缓存 运维 Java
带你读《2022龙蜥社区全景白皮书》——5.3.4 跨处理器节点内存访问优化
带你读《2022龙蜥社区全景白皮书》——5.3.4 跨处理器节点内存访问优化
496 98
|
存储 Java 编译器
Java内存区域与内存溢出异常 - 运行时数据区
【8月更文挑战第2天】Java运行时数据区包括:1) 程序计数器:记录线程执行字节码的行号,线程私有;2) Java虚拟机栈:描述方法执行的内存模型,线程私有,深度过大抛出`StackOverflowError`;3) 本地方法栈:服务于Native方法,线程私有;4) Java堆:所有线程共享,对象实例在此分配内存;5) 方法区:存储类信息、常量等数据;6) 运行时常量池:方法区的一部分,存放字面量和符号引用。不当使用如无限创建对象或过度递归调用会导致各种内存溢出错误。
174 1
|
Arthas 存储 监控
JVM内存问题之JNI内存泄漏没有关联的异常类型吗
JVM内存问题之JNI内存泄漏没有关联的异常类型吗
260 1
|
Prometheus Kubernetes 监控
使用kubectl快速查看各个节点的CPU和内存占用量
在Kubernetes集群中,安装metrics-server,并使用kubectl快速查看集群中各个节点的资源使用情况。
1690 0
|
缓存 算法 Java
JVM内存溢出(OutOfMemory)异常排查与解决方法
JVM内存溢出(OutOfMemory)异常排查与解决方法
|
Java C++
Java内存区域于内存溢出异常
这篇文章详细解释了Java虚拟机的内存区域划分、各区域的作用以及可能遇到的内存溢出异常情况。
238 0
|
Oracle 关系型数据库
分布式锁设计问题之Oracle RAC保证多个节点写入内存Page的一致性如何解决
分布式锁设计问题之Oracle RAC保证多个节点写入内存Page的一致性如何解决
470 0