HDFS DataNode堆内存使用率过高,HDFS存储量不够导致宕机

今天来公司发现hadoop集群出现了HDFS DataNode堆内存使用率超过阈值的告警,然后查看集群各个节点的状态发现有一个数据节点宕机了,经过一上午的处理我来聊聊解决的几个方法:
目录:
1、将HDFS备份数降低
2、删除无用HDFS数据和Hbase表格
3、设置kafka的日志时间
4、删除本机无用文件
5、清理Trash回收站
6、Balancer重新平衡

1、将备份数降低
1)将默认的备份数3设置为2。
步鄹:CDH–>HDFS–>配置–>复制因子–>设置为2

2)执行命令: hadoop fs -setrep 2 path(记住为根目录 / )
3)重启hdfs
4)结果如下:

2、删除无用HDFS数据和Hbase表格
查看HDFS上面文件每个文件大小

hdfs dfs -du -h /
1

可以删除的文件

hdfs dfs -du -h /user/spark/applicationHistory
hdfs dfs -rmr /user/root/.Trash

3、设置kafka的日志时间

1、先查看所有的topic

kafka-topics.sh --list --zookeeper  node1:2181

zookeeper的端口号和名称自行修改,端口号写错会报错

[2018-08-30 11:09:09,297] WARN Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect (org.apache.zookeeper.ClientCnxn)
java.net.ConnectException: Connection refused
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
    at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361)
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1141)

2、修改对应的topic的保存时长3天

kafka-topics.sh --zookeeper node1:2181 -topic xxxx --alter --config retention.ms=259200000

retention.ms这个参数是毫秒数,需要转一下

然后查看磁盘降下来了。

4、删除本机无用文件
下面是我写的一个shell脚本,可以查看所有目录和文件的大小,将大的无用文件删除

#!/bin/bash

path=$1

dir=$(ls -l $path |awk '/^d/ {print $NF}')
for i in $dir
do
    du -sh $path/$i
done  

5、清理Trash回收站

HDFS 的Trash回收站功能的配置、使用
http://blog.csdn.net/silentwolfyh/article/details/53907118

6、Balancer重新平衡

1)集群运行一段时间后各个节点的磁盘使用率可能会产生较大的差异,这时可以用balancer来重新平衡各个节点。

2)首先调大balancer的带宽 Hadoop dfsadmin -setBalancerBandwidth 52428800 ,这里设置为50MB。默认的带宽较小,防止占用太多资源。若需要快速平衡可以将带宽调为一个较大的值。

3)接着启动balancer。可以在CM里启动(hdfs-balancer-示例-操作-重新平衡),也可以命令启动(hadoop balancer [-threshold ])。

你可能感兴趣的:(HDFS DataNode堆内存使用率过高,HDFS存储量不够导致宕机)