Hadoop版本:2.7.3
数据节点:32
区块大小:512m
复制:3
我使用命令清除了HDFS中的所有数据
hdfs dfs -rm -r /*
清除HDFS集群后,少数数据节点仍然显示Block pool used
,尽管块数为零。
The screen shot of hdfs webui
的输出hdfs fsck /
如下
Connecting to namenode via http://ip-10-0-2-7:50070/fsck?ugi=ubuntu&path=%2F
FSCK started by ubuntu (auth:SIMPLE) from /10.0.2.7 for path / at Tue Jul 18 04:34:19 UTC 2017
Status: HEALTHY
Total size: 0 B
Total dirs: 1
Total files: 0
Total symlinks: 0
Total blocks (validated): 0
Minimally replicated blocks: 0
Over-replicated blocks: 0
Under-replicated blocks: 0
Mis-replicated blocks: 0
Default replication factor: 3
Average block replication: 0.0
Corrupt blocks: 0
Missing replicas: 0
Number of data-nodes: 32
Number of racks: 1
FSCK ended at Tue Jul 18 04:34:19 UTC 2017 in 1 milliseconds
The filesystem under path '/' is HEALTHY
我知道块删除是异步过程,但是具有Block Pool Used
不设置为0,需要花费很多时间来释放块。
任何人都可以帮我弄清楚为什么在这些服务器上,块删除很慢,或者由于使用块而导致的任何其他问题。
造成这种情况的潜在原因有几个:
- 最近对集群软件进行了升级,使用HDFS滚动升级 http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsRollingUpgrade.html功能,且升级尚未最终确定。在滚动升级期间,文件删除实际上不会删除 DataNode 上的底层块文件。相反,块文件会被维护,这样如果操作员选择回滚升级,集群的数据可以恢复到升级前的状态。因此,在滚动升级窗口期间,DataNode 指标(例如“已使用的块池”)继续显示消耗的空间。检查滚动升级是否正在进行的一个简单方法是访问 NameNode Web UI。概述选项卡将显示一条有关“滚动升级已开始”的消息。要完成升级,请运行
hdfs dfsadmin -rollingUpgrade
。之后,DataNode 将开始(异步)删除块文件。
- 集群的用户使用了HDFS 快照 http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsSnapshots.html。快照维护创建快照时文件系统路径的状态。为了支持这一点,DataNode 可能需要为以前删除的文件保留块,以防用户选择读取包含数据的旧快照。跑步
hdfs fsck
与-includeSnapshots
参数可以显示是否有正在使用的快照。
- 由于某种 I/O 错误(磁盘故障、底层块文件权限冲突),DataNode 无法删除块文件。这不太可能,但如果出现问题,DataNode 日志将显示更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)