背景:

因公司每天中午11:08~11:40之间,DataNode所有的节点都会挂一会,主要是因为任务太过于集中的原因,在加上公司的HDFS的数据存储已经快达到了2P,DataNode的GC参数还是原来的4G,需要针对问题进行处理

DataNode的FullGC的处理过程_hdfs


处理方案:

先查看DataNode的GC情况

jps
  jstat -gcutil 55336

DataNode的FullGC的处理过程_4G_02

查看FGC有1574次


1.先把集群中的小文件删除掉

#!/usr/bin/bash

rm -rf filepath_del.txt
tt=`date -d "1 day ago" +%Y%m%d`

hdfs dfs -ls /tmp/logs/hive/logs/ |sort -n -k5  | awk '{print $6,$NF}' |grep -v items | while read filetime filepath 
do
    timenum=$(date -d $filetime +%Y%m%d)
    #echo  $timenum
    #echo  $path
    # 删除1天之前的数据
    if [[ ${timenum} -le ${tt} ]];then
        echo $filetime  $filepath
        echo $filetime  $filepath  >>  filepath_del.txt
        echo "hdfs  dfs -rm -r -skipTrash  $filepath " >> filepath_del.txt
        hdfs  dfs -rm -r -skipTrash  $filepath
    fi
done

2.调整DataNode的GC参数

DataNode 的 Java 堆栈大小(字节)= 4G
调整到以下参数
DataNode 的 Java 堆栈大小(字节)= 12G

3.重启DataNode

观察后问题解决

DataNode的FullGC的处理过程_Java_03