dfs.datanode.data.dir中定义的磁盘数量等于dfs.datanode.failed.volumes.tolerated的值时,DataNode启动失败
问题
当“dfs.datanode.data.dir”中定义的磁盘数量等于“dfs.datanode.failed.volumes.tolerated”的值时,DataNode启动失败。
回答
默认情况下,单个磁盘的故障将会引起HDFS DataNode进程关闭,导致NameNode为每一个存在DataNode上的block调度额外的副本,在没有故障的磁盘中引起不必要的块复制。
为了防止此情况,用户可以通过配置DataNodes来承受dfs.data.dir目录的故障。登录Manager,选择“集群 > 服务 > HDFS > 配置 > 全部配置”搜索参数“dfs.datanode.failed.volumes.tolerated”。例如:如果该参数值为3,DataNode只有在4个或者更多个目录故障之后才会出现故障。该值会影响到DataNode的启动。
如果想要DataNode不出现故障,配置的“dfs.datanode.failed.volumes.tolerated”一定要小于所配置的卷数,也可以将“dfs.datanode.failed.volumes.tolerated”设置成-1,相当于设置该值为n-1(n为卷数),那样DataNode就不会出现启动失败。