环境信息:
centos6.5
问题描述:
大数据集群HDFS的DataNode的一个节点down掉,去服务器查看,发现datanode节点还在,打算重新启动该节点的datanode,使用hadoop-daemon.sh stop datanode方式停掉datanode发现执行失败,提示使用kill -9杀掉进程,按照此方式执行,发现进程仍然存在,并未被杀掉
问题排查:
百度一下,kill -9无法杀掉的进程大概率是僵尸进程,使用top命令查看,发现有一个僵尸进程
使用命令:ps aux | grep Z
得到僵尸进程列表:
PID为178744的进程正好为出问题的datanode进程,问题得到证实
问题解决:
查看该进程的父进程ps -aux | grep 178744
看到该进程的父进程是89552即hdfs的balancer进程
停掉balancer进程,不久datanode的进程就被杀掉了
重新启动datanode进程:hadoop-daemon.sh start datanode,HDFS状态正常,问题解决
疑问:
hdfs的balancer进程为什么会导致datanode成为僵尸进程?此问题暂时未得到答案,后续继续研究,知道答案的朋友欢迎留言讨论或者告知