今天帮一个朋友处理hdfs上Non DFS Used占用很大的问题,
从hadoop UI界面看到的节点信息存储容量:
Capacity| Used| Non DFS Used| Remaining
4.46T| 1.69T| 1.46T| 1.31T
Non DFS Used怎么有这么大,于是先看看dfs.datanode.du.reserved配置,10G很正常,那去看看dfs.datanode.data.dir目录,是单独的硬盘挂载的,没有大的数据文件,奇怪了,网上也没有这方面的内容,问了下情况,集群之前重新安装过,而且没有删除之前的数据,相当于对hadoop进行多次的-format命令,
网上有提到在执行格式化Hadoop namenode -format命令时,要避免namenode的namdespaceid与datanode的namespaceid的不一致。这是因为每格式化一次就会产生name,data,temp等临时文件记录信息,多次格式化会产生很多的name,data,temo,这样容易导致id的不同,使hadoop不能正常运行。每次执行格式化-format命令时,就需要将datanode和namenode上原来的data,temp文件删除。
查看群集状态,
$ hdfs dfsadmin -report
Configured Capacity: 53895745536 (50.19 GB)
Present Capacity:8199200768 (7.64 GB)
DFS Remaining:8199159808 (7.64 GB)
DFS Used: 4048 (4KB)
DFS Used%: 0%
Under replicatedblocks: 0
Blocks with corruptreplicas: 0
Missing blocks: 0
多次format可能出现上边的现象,Configured Capacity容量很大(50.19 GB),Present Capacity当前可用的很小(7.64 GB),目前只能使用7.64 GB的存储空间。
Present Capacity: 980762734592 (913.41 GB)
DFS Remaining: 949024047104 (883.85 GB)
DFS Used: 31738687488 (29.56 GB)
DFS Used%: 3.24%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
从hadoop UI界面看到的节点信息存储容量:
Capacity| Used| Non DFS Used| Remaining
4.46T| 1.69T| 1.46T| 1.31T
Non DFS Used怎么有这么大,于是先看看dfs.datanode.du.reserved配置,10G很正常,那去看看dfs.datanode.data.dir目录,是单独的硬盘挂载的,没有大的数据文件,奇怪了,网上也没有这方面的内容,问了下情况,集群之前重新安装过,而且没有删除之前的数据,相当于对hadoop进行多次的-format命令,
网上有提到在执行格式化Hadoop namenode -format命令时,要避免namenode的namdespaceid与datanode的namespaceid的不一致。这是因为每格式化一次就会产生name,data,temp等临时文件记录信息,多次格式化会产生很多的name,data,temo,这样容易导致id的不同,使hadoop不能正常运行。每次执行格式化-format命令时,就需要将datanode和namenode上原来的data,temp文件删除。
查看群集状态,
$ hdfs dfsadmin -report
Configured Capacity: 53895745536 (50.19 GB)
Present Capacity:8199200768 (7.64 GB)
DFS Remaining:8199159808 (7.64 GB)
DFS Used: 4048 (4KB)
DFS Used%: 0%
Under replicatedblocks: 0
Blocks with corruptreplicas: 0
Missing blocks: 0
多次format可能出现上边的现象,Configured Capacity容量很大(50.19 GB),Present Capacity当前可用的很小(7.64 GB),目前只能使用7.64 GB的存储空间。
正常应该是这样的Configured Capacity和Present Capacity差不太多。
Present Capacity: 980762734592 (913.41 GB)
DFS Remaining: 949024047104 (883.85 GB)
DFS Used: 31738687488 (29.56 GB)
DFS Used%: 3.24%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
这个问题引起的原因是重新安装集群的时候没有将原来的nn、dn等目录数据清除,datanode存储目录可能出现了多个BP开头的文件,其实只有一个是现在使用的,其他的是之前的,需要清除,与VERSION文件的日期一直的是当前使用的,将其他的MV到一个目录,观察下业务数据是否正常,没问题再删除了。
还有一种情况:
hdfs Non DFS Used 占用空间大,用du -h 看磁盘空间还在,但web页面显示Non DFS Used占用特别多的空间,整个集群的Remaining空间几乎没有了
解决方案:
重启hadoop 的 historyserver
mr-jobhistory-daemon.sh start historyserver
重启dfs
start-dfs.sh
产生的原因:
因为集群里启动了historyserver,这个进程在删除了临时文件之后,并没有释放文件句柄,所以导致Non DFS Used 数值很大,而用df和du查看的时候,磁盘空间并未被占用
参考:
http://blog.youkuaiyun.com/bottle123/article/details/49869403