【问题标题】:Some datanodes still showing block pool used after clearing the HDFS一些数据节点在清除 HDFS 后仍然显示使用的块池
【发布时间】:2017-07-18 13:19:24
【问题描述】:

Hadoop 版本:2.7.3 数据节点:32 块大小:512m 复制:3

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

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

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 dfs -rm [-skipTrash] URI

标签: hadoop hdfs hadoop2.7.3


【解决方案1】:

这有几个潜在的原因:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 2020-10-26
    • 1970-01-01
    相关资源
    最近更新 更多