故障排除和調(diào)試HBase:NameNode

2018-10-31 14:31 更新

NameNode

有關(guān)NameNode的更多信息,請(qǐng)參閱HDFS

表和區(qū)域的HDFS利用率

要確定HBase在HDFS上使用的空間大小,請(qǐng)使用NameNode中的hadoop shell命令。例如:

hadoop fs -dus /hbase/

返回所有HBase對(duì)象的總磁盤利用率。

hadoop fs -dus /hbase/myTable

返回HBase表'myTable'的總磁盤利用率。

hadoop fs -du /hbase/myTable

...返回HBase表'myTable'下的區(qū)域列表及其磁盤利用率。

有關(guān)HDFS shell命令的更多信息,請(qǐng)參閱HDFS FileSystem Shell文檔。

瀏覽HBase對(duì)象的HDFS

有時(shí)需要探索HDFS上存在的HBase對(duì)象。這些對(duì)象可能包括WAL(預(yù)寫日志),表,區(qū)域,StoreFiles等。最簡(jiǎn)單的方法是使用運(yùn)行在端口50070上的NameNode Web應(yīng)用程序。NameNode Web應(yīng)用程序?qū)⑻峁┲赶蚣褐兴蠨ataNode的鏈接,以便可以無縫瀏覽它們。

集群中HBase表的HDFS目錄結(jié)構(gòu)是:

/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目錄結(jié)構(gòu)是:

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

大小為零的WALs,其中包含數(shù)據(jù)

問題:獲取RegionServer的WALs目錄中的所有文件的列表時(shí),一個(gè)文件的大小為0,但它包含數(shù)據(jù)。

答:這是HDFS的特殊情況。當(dāng)前正在寫入的文件的大小似乎為0,但一旦關(guān)閉,它將顯示其真實(shí)大小。

用例

用于查詢HBase對(duì)象的HDFS的兩個(gè)常見用例是研究表的未壓縮程度。如果每個(gè)ColumnFamily都有大量StoreFiles,則表明需要進(jìn)行主要壓縮。此外,在進(jìn)行主要壓縮后,如果生成的StoreFile為“small”,則表明需要減少表的ColumnFamilies。

意外的文件系統(tǒng)增長(zhǎng)

如果您看到HBase意外地增加了文件系統(tǒng)的使用,兩個(gè)可能的原因是快照和WAL。

快照

創(chuàng)建快照時(shí),HBase會(huì)保留在快照時(shí)重新創(chuàng)建表狀態(tài)所需的一切。這包括已刪除的單元格或過期版本。因此,您應(yīng)該精心規(guī)劃快照的使用模式,并且應(yīng)該修剪不再需要的快照??煺沾鎯?chǔ)在/hbase/.hbase-snapshot中,用于還原快照所需的存檔位于/hbase/archive/<_tablename_>/<_region_>/<_column_family_>/。

*不要*通過HDFS手動(dòng)管理快照或存檔。HBase提供API和
用于管理它們的HBase Shell命令。有關(guān)更多信息,請(qǐng)參閱<< ops.snapshots >>。
WAL

預(yù)寫日志(WAL)存儲(chǔ)在HBase根目錄的子目錄中,通常是/hbase/,具體取決于它們的狀態(tài)。已經(jīng)處理好的WALs存儲(chǔ)在/hbase/oldWALs/并且損壞的WAL存儲(chǔ)在/hbase/.corrupt/中,以供檢查。如果其中一個(gè)子目錄的大小正在增長(zhǎng),請(qǐng)檢查HBase服務(wù)器日志以找出未正確處理WAL的原因。

如果您使用復(fù)制并且/hbase/oldWALs/使用的空間超出預(yù)期,請(qǐng)記住,只要存在對(duì)等項(xiàng),復(fù)制被禁用時(shí)就會(huì)保存WAL。

不要通過HDFS手動(dòng)管理WAL。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)