一些数据节点仍然显示清除HDFS后使用的块池

时间:2017-07-18 04:50:17

标签: hadoop hdfs hadoop2.7.3

Hadoop版本:2.7.3 Datanodes:32 BlockSize:512米 复制:3

我使用该命令清除了HDFS中的所有数据 hdfs dfs -rm -r /*

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

1 个答案:

答案 0 :(得分:0)

有几个可能的原因:

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