某hadoop集群的某个datanode节点主机有坏盘,但是没有配件及时更换,当几天后更换,启动datanode节点时,CM界面显示对应的XDYDAT10主机可用空间告警。如下图:

Hadoop能处理的数据 hadoop处理数据案例_Hadoop能处理的数据

Hadoop能处理的数据 hadoop处理数据案例_数据_02

检查该datanode空间使用情况:hdfs使用率86.88%,剩余空间976.62GB,但是主机单个磁盘空间大都100%。如下图:

Hadoop能处理的数据 hadoop处理数据案例_hadoop集群迁移_03

Hadoop能处理的数据 hadoop处理数据案例_Hadoop能处理的数据_04

而且执行数据均衡时,显示“Thecluster is balanced”,程序退出。

Hadoop能处理的数据 hadoop处理数据案例_Hadoop能处理的数据_05

Hadoop能处理的数据 hadoop处理数据案例_Hadoop能处理的数据_06

处理方法


通过CM界面,在HDFS实例界面,选择XDYDAT10,停止其datanode服务。如下图:

Hadoop能处理的数据 hadoop处理数据案例_Hadoop能处理的数据_07

Hadoop能处理的数据 hadoop处理数据案例_Hadoop能处理的数据_08

若干小时后(本次操作是3小时左右后),通过CM界面,在HDFS实例界面,选择XDYDAT10,启动其datanode服务。如下图:

Hadoop能处理的数据 hadoop处理数据案例_hdfs_09

Hadoop能处理的数据 hadoop处理数据案例_数据_10

XDYDAT10主机datanode服务启动后,再次检查空间使用情况:可用空间都在400GB以上。如下图:



Hadoop能处理的数据 hadoop处理数据案例_数据_11

并且检查所有datanode节点,停止和启动节点前后,hdfs使用情况:停止datanode服务前,很多空间使用达100%(如下左图);停止再次启动后,空间有所均衡,无100%使用情况(如下右图)。

Hadoop能处理的数据 hadoop处理数据案例_HDFS_12

Hadoop能处理的数据 hadoop处理数据案例_hadoop集群迁移_13

最后,再次执行均衡操作,能正常执行数据均衡,等待数据均衡即可。



Hadoop能处理的数据 hadoop处理数据案例_Hadoop能处理的数据_14

均衡详解


因当前发生问题的为老版本的cloudera集群(CDH5.2.1),在CDH5.10以前,balancer程序只会在节点之间平衡,当所有节点与集群之间已经平衡的情况下,运行balancer程序并不会发生任何数据的迁移和转移,只能采用本文使用的方法进行尝试,停止磁盘空间紧张的节点,让hdfs为了维持数据的3副本在其他数据节点生成已停止的datanode那部分冗余数据,然后再启动停止的datanode,以达到迁移数据的目的,释放部分紧张的空间,但是此法并不智能。

在CDH5.10以后,hdfs加入了diskbalancer程序,可以在某个数据节点内部,对多个磁盘数据使用率偏差太大的情况进行平衡,此方法更智能更安全。

参数如下图:



Hadoop能处理的数据 hadoop处理数据案例_hdfs_15

本案例,启停磁盘空间不足的datanode节点后,再使用hdfsbalancer -threshold 1运行均衡器进行数据均衡,最终达到集群数据均衡。

HDFS均衡器是Hadoop提供的工具,使用该工具可以将数据从空间使用率高的datanodes移动数据块到利用不足的datanode节点,从而均衡集群的DataNode数据。其中threshold参数表示每个datanode的HDFS使用率于集群的平均DFS利用率的偏差百分比。另外,若直接运行hdfsbalancer时,偏差百分比默认值为10%。

最后,希望以上解释说明对各位有所帮助,谢谢。