hdfs datanode decomission引发的block missing
最近在帮公司下线离线计算集群的机器,逐台decomiss,下到第四台机器时,cdh告警来了,丢失块大于集群的1%,算了一下集群有400多台,下线一台不应该告警,以为下线步骤有问题,点了中止下线,后来看了下其实步骤是没问题的,由于下线的机器配置比较好,所以确实这台机器上存储了集群1%以上的block,于是终止了datanode的decomission,但是集群还是出现了14个 missing block,按照常理,hdfs上的文件丢失副本只要不是所有副本全丢,过段时间hdfs都会把这些副本从其他节点copy一份,但是这些block随着时间的增加永远不会恢复。 确认了下线步骤没有问题以后,选择原来的datanode继续decomission,但是这一步会一直卡住,不会完成,看了下datanode的日志,确实是在移动数据,但是看节点的io很小,完全达不到正常下线节点时的io。于是这个节点先略过,下线其他节点,发现也出现同样情况,看来继续下线是不行了。 看了一下clouddera社区的一个issue,这好像是cdh的一个bug,上面cdh的官方人员说要把datanode删掉再重新加回来就可以下线了。 于是我把datanode停了,通过cdh监控按到节点上的block全部复制完以后,直接把datanode删除掉了, 没有走正常decomission的流程。弄完之后去hdfs的监控看了下