目录:

       HDFS中dfs.datanode.du.reserved系统预留容量详解(一)

       HDFS中dfs.datanode.du.reserved系统预留容量详解(二)

 

       使用hadoop版本为2.8.4,查看小结可以直接跳转到结尾。

1、dfs.datanode.du.reserved介绍

    dfs.datanode.du.reserved是设置磁盘容量预留多少的配置,防止hdfs磁盘写满导致系统或其他程序磁盘不足的情况。

2、环境准备

     使用hadoop搭建的一个单节点的hadoop集群,dfs.datanode.data.dir DataNode数据存储配置的是一个20G的挂载盘。虚拟机的系统盘为40G,系统盘和hdfs存储分开,防止在测试的过程中因磁盘暴增导致虚拟机系统崩掉。

     使用df -l 查看磁盘容量,为了方便的查看磁盘的使用情况查询单位以KB。

3、实践开始

     在本次对比中,使用dfs.datanode.du.reserved的配置为默认值,没有对其进行修改。

    (1). 首先对hadoop集群进行格式化,hdfs namenode -format保证集群中没有数据

 

    (2). 使用 df -l 查看当前磁盘容量如图,其中/dev/sdb为hdfs磁盘配置的挂载盘,即目录/hadoop。从图中可以看到1K-blocks为:20642428KB,Used为:46316,Available为:19547536,可以看到Used+Available != 1K-blocks,有部分容量缺失(这个还不是太明白,有知道的朋友可以在评论区说明一下)。

       1K-blocks-(Used+Available)=20642428-(46316+19547536)=1048576KB(大小1G)。

       所以该磁盘真正可以使用的容量Used+Available大小。

    

hadoop查看EDIT hadoop查看剩余空间_hadoop

 

 

    (3).通过命令 start-dfs.sh 启动HDFS存储系统,然后使用命令hdfs dfsadmin -report查看集群的配置存储资源。下面为返回的结果数据。主要查看字段:Configured Capacity、DFS Used、Non DFS Used、DFS Remaining。因为现在展示的单位为B,所以统一转换为KB单位:

Configured Capacity: 20642428
DFS Used: 56
Non DFS Used: 46340
DFS Remaining: 19547456

可以惊奇的发现Configured Capacity的大小和(2)中1K-blocks的大小一致,但是这个并不是实际可以使用的磁盘容量,这个差值不同的系统或者磁盘会有些不同。这个在配置的时候就会出现一些差异。

    还有个现象:(2)中的Used + Available = DFS Used + Non DFS Used + DFS Remaining,它们是相等的。

     46316 + 19547536 = 56 + 46340 + 19547456 = 19593852

                       

hadoop查看EDIT hadoop查看剩余空间_hdfs_02

本次小结:

    从上面的linux挂载盘的磁盘容量和首次初始化的HDFS的容量对比,可以发现配置的磁盘大小和实际可以使用的磁盘之间是有一个磁盘容量差值的,这个差值在配置dfs.datanode.du.reserved的时候,大于或者小于这个差值会有不同的效果。如何配置dfs.datanode.du.reserved这个值,以磁盘容量差值为分界线,配置不同的值会有那些具体的展现形式将在后面的小结中介绍。