2017-07-18 23 views
1

的Hadoop版之后使用块池:2.7.3 的Datanode:32 BLOCKSIZE:512米 复制:3一些数据节点仍然显示清除HDFS

我使用命令 hdfs dfs -rm -r /*

清除在HDFS中的所有数据

清除HDFS群集后,很少数据节点仍显示Block pool used,尽管块为零。

HDFS WebUI中的截屏 enter image description here

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,需要花费很多时间才能释放块。 任何人都可以帮我弄清楚,为什么在这些服务器上,块删除速度很慢,或者是因为块被使用而导致的其他问题。

+0

您是否在删除文件时尝试了skiptrash选项?例如。 hdfs dfs -rm [-skipTrash] URI – vasanth

回答

0

有几种可能的原因是:

  1. 群集软件最近升级使用HDFS Rolling Upgrade功能,并且升级还没有最后确定。滚动升级期间,文件删除不会实际删除DataNode中的底层块文件。而是维护块文件,以便操作员选择回滚升级时,可以将群集的数据恢复到升级前的状态。因此,在滚动升级窗口期间,DataNode指标(如“使用的数据块池”)将继续显示消耗的空间。检查滚动升级是否正在进行的简单方法是转到NameNode Web UI。 “概述”选项卡将显示关于“开始滚动升级”的消息。要完成升级,请运行hdfs dfsadmin -rollingUpgrade。之后,DataNodes将开始删除块文件(异步)。
  2. 群集的用户使用HDFS Snapshots。快照在创建快照时维护文件系统路径的状态。为了支持这一点,DataNodes可能需要为先前删除的文件保留块,以防用户选择读取包含数据的旧快照。运行hdfs fsck-includeSnapshots参数可以显示是否有正在使用的快照。
  3. 由于某种I/O错误(失败的磁盘,底层块文件的权限冲突),DataNode无法删除块文件。这不太可能,但是如果出现问题,那么DataNode日志将显示更多信息。