有关 NameNode 的更多信息,请参阅 HDFS

134.1。 HDFS 利用表和区域

要确定 HBase 在 HDFS 上使用多少空间,请使用 NameNode 中的hadoop shell 命令。例如......

hadoop fs -dus /hbase/ 

...返回所有 HBase 对象的汇总磁盘利用率。

hadoop fs -dus /hbase/myTable 

...返回 HBase 表'myTable'的汇总磁盘利用率。

hadoop fs -du /hbase/myTable 

...返回 HBase 表'myTable'下的区域列表及其磁盘利用率。

有关 HDFS shell 命令的更多信息,请参阅 HDFS FileSystem Shell 文档

134.2。浏览 HBase 对象的 HDFS

有时需要探索 HDFS 上存在的 HBase 对象。这些对象可能包括 WAL(写前进日志),表,区域,StoreFiles 等。最简单的方法是使用在端口 50070 上运行的 NameNode Web 应用程序.NameNode Web 应用程序将提供指向所有 DataNode 的链接在群集中,以便可以无缝浏览它们。

集群中 HBase 表的 HDFS 目录结构是......

/hbase
    /data
        /<Namespace>                    (Namespaces in the cluster)
            /<Table>                    (Tables in the cluster)
                /<Region>               (Regions for the table)
                    /<ColumnFamily>     (ColumnFamilies for the Region for the table)
                        /<StoreFile>    (StoreFiles for the ColumnFamily for the Regions for the table) 

HBase WAL 的 HDFS 目录结构是..

/hbase
    /WALs
        /<RegionServer>    (RegionServers)
            /<WAL>         (WAL files for the RegionServer) 

有关fsck等其他非 shell 诊断实用程序,请参阅 HDFS 用户指南

134.2.1。零大小 WALls 包含数据

问题:当获取 RegionServer 的 WALs 目录中的所有文件的列表时,一个文件的大小为 0 但它包含数据。

答:这是 HDFS 的怪癖。当前正在写入的文件的大小似乎为 0,但一旦关闭,它将显示其真实大小

134.2.2。用例

用于查询 HBase 对象的 HDFS 的两个常见用例是研究表的未压缩程度。如果每个 ColumnFamily 都有大量 StoreFiles,则表明需要进行主要压缩。此外,在进行重大压缩后,如果生成的 StoreFile 为“小”,则表明需要减少表的 ColumnFamilies。

134.3。意外的文件系统增长

如果您看到 HBase 文件系统使用率出现意外峰值,那么两个可能的罪魁祸首就是快照和 WAL。

快照

创建快照时,HBase 会保留在快照时重新创建表状态所需的所有内容。这包括已删除的单元格或过期版本。因此,您的快照使用模式应该经过精心规划,并且您应该修剪不再需要的快照。快照存储在/hbase/.hbase-snapshot中,恢复快照所需的存档存储在/hbase/archive/&lt;_tablename_&gt;/&lt;_region_&gt;/&lt;_column_family_&gt;/中。

*Do not* manage snapshots or archives manually via HDFS. HBase provides APIs and
HBase Shell commands for managing them. For more information, see <<ops.snapshots>>. 

WAL

预写日志(WAL)存储在 HBase 根目录的子目录中,通常为/hbase/,具体取决于它们的状态。已经处理的 WAL 存储在/hbase/oldWALs/中,损坏的 WAL 存储在/hbase/.corrupt/中进行检查。如果其中一个子目录的大小正在增长,请检查 HBase 服务器日志以找出未正确处理 WAL 的原因。

如果使用复制并且/hbase/oldWALs/使用的空间超出预期,请记住,只要存在对等项,复制被禁用时就会保存 WAL。

不要通过 HDFS 手动管理 WAL。