一、坏盘的识别
hdfs不会直接和磁盘进行打交道的,它是通过 识别dfs.datanode.data.dir(dfs.data.dir)和yarn.nodemanager.local-dirs(mapred.local.dir)两个属性所指定的目录的可用性来间接识别磁盘的可用性的,一般情况下一个目录会单独对应着一个磁盘。Hdfs认为目录或者磁盘是有效的标准为:
1. The specified path is a directory.
2. The directory exists.
3. The directory is readable.
4. The directory is writable.
二、坏盘对于DataNode的影响
默认情况下,只要有一个坏盘出现,DataNode进程就会stop掉,这时由 dfs.datanode.failed.volumes.toler
ated 参数来控制,默认该值为0 。生产环境中需要根据当前结点的磁盘的数量来适当的调高该值的大小,使得DataNode可以容忍更多坏盘的存在(因为当集群非常大时,坏盘出现的频率还是比较高的)
三、坏盘的处理
2.6版本(cdh5.4)之前的hadoop版本,只能通过下线DataNode,然后换掉出问题的磁盘,然后上线DataNode,最后进行Balancer的流程来处理坏掉的磁盘。
在2.6(cdh5.4)版本中,引入了hot-swapping disk的新特性,该特性是依赖hdfs的reconfig(https://issues.apache.org/jira/browse/HADOOP-7001)来起作用的。
(1)首先将有问题的磁盘所对应的目录从dfs.datanode.data.dir参数中删除掉
(2)让DataNode重新加载配置文件
hdfs dfsadmin -reconfig datanode dn1.example.com:50020 start
查