海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

HBase在HDFS上的目錄及文件簡介

我們使用HUE可以查看HDFS上的文件,使用HDFS NameNode Web UI也可以查看,下面我們使用NameNode Web UI看看。

下面是NameNode Web UI,點擊Utilities可以看到HDFS上都有哪些文件。

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

那麼,和HBase相關的文件在哪呢?

注意,名稱為hbase的目錄,所有與HBase相關的文件都存儲在此目錄下。/hbase這個目錄可以通過配置hbase.rootdir更改,默認是/hbase。讓我們展開目錄看看,如下圖:

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

我們可以看到只有兩個文件hbase.id和hbase.version(Permission的第一位是-,它表示普通文件),其餘都是目錄(Permission的第一位是d,它表示目錄)。下面按照上圖的順序依次介紹一下。

1)/hbase/.hbck

當遇到元數據不一致時,使用hbck 工具修復,修復過程中會使用該目錄作為臨時目錄。

但是對於HBase2.0.0及其以後版本這個工具已經不能用來修復HBase了,要使用hbck2。

2) /hbase/.tmp

當創建或刪除表時,會將表移動到該此目錄下,然後再處理。

3) /hbase/MasterProcWALs

此目錄下包含HMaster主節點狀態日誌文件。

可以在停止服務後刪除這個目錄,然後重啟HBase,這個目錄會自動被創建。

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

4)/hbase/WALs

HBase 是支持WAL(Write Ahead Log)的,HBase會在第一次啟動之初會在每一個RegionServer的.log目錄下創建一個目錄,若客戶端開啟WAL模式,會先將數據寫入一份到.log下,當 RegionServer crash或目錄達到一定大小,會開啟 replay模式,這類似 MySQL的binlog。

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

5)/hbase/archive

HBase在完成Split或者compact操作之後,會將HFile移到.archive目錄中,然後將之前的hfile刪除掉,該目錄由HMaster上的一個定時任務定期清理。

6)/hbase/corrupt

存儲HBase損壞的日誌文件,一般都是為空的。

7)/hbase/data

/hbase/data目錄是最重要的目錄,存儲hbase數據,下面含有兩個命名空間default和hbase,其中default是默認命名空間,如果創建的表未指定命名空間,將存放在該命名空間下,hbase是系統命名空間。

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

/hbase/data/acl

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

其中

.tabledesc表示表的元數據信息。

.tmp表示臨時數據,當表被更新時會使用這個目錄。

fcd3a7a6e8fe7e3a55d2aa76b53dfdcb,這是region的名稱,它是由表名+Start Key+時間戳產生的哈希碼。此目錄包含子目錄,如下圖所示。

/hbase/data/hbase/acl/fcd3a7a6e8fe7e3a55d2aa76b53dfdcb/ .regioninfo文件是對應Region的HRegionInfo的序列化信息。

/hbase/data/hbase/acl/fcd3a7a6e8fe7e3a55d2aa76b53dfdcb/.tmp臨時文件

/hbase/data/hbase/acl/fcd3a7a6e8fe7e3a55d2aa76b53dfdcb/l列族的數據文件

/hbase/data/hbase/acl/fcd3a7a6e8fe7e3a55d2aa76b53dfdcb/recovered.edits為Region拆分時的臨時數據

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

這個文件對應的表名為hbase:acl,我們查下這個表看看都存些什麼:

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

記錄了我們自定義的表信息,並分配了相應的權限,其中value=RWXCA表示READ(讀), WRITE(寫), EXEC(執行), CREATE(創建), ADMIN(管理員權限)。

/hbase/data/meta

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

這個文件對應的表名為hbase:meta,我們查下這個表看看都存些什麼:

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

這個表記錄了所有HBase表的元數據。

/hbase/data/namespace

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

這個文件對應的表名為hbase:namespace,我們查下這個表看看都存些什麼:

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

這個表記錄了命名空間。

自定義命名空間

除了這兩個命名空間以外,如果你指定一個命名空間,那麼會在/hbase/data創建一個目錄,用來放表文件。

例如,指定命名空間為article,那麼當前/hbase/data目錄如下所示:

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

我們看看/hbase/data/article這個目錄下都有哪些文件,首先要說明的是我創建了一個表名稱為CCND,命名空間為article。表有一個列族i,和兩列h和c。

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

其中

l /hbase/data/article/CCND/.tabledesc存放表元數據信息,用HUE打開可以看到如下信息:

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

l /hbase/data/article/CCND/.tmp存放臨時文件

l /hbase/data/article/CCND/1bff78545728ab01c7646a79de4ce00d存放表數據,

讓我們看看這個目錄下的文件。

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

8)/hbase/mobdir

此目錄對應MOB文件。

9)/hbase/oldWALs

與hbase操作相關的舊日誌存放目錄.當/hbase/WALs中的HLog文件被持久化到存儲文件中,不再需要日誌文件時,它們會被移動到/hbase/oldWALs目錄。

刪掉此目錄後,重啟HBase會自動創建這個目錄。

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

10)/hbase/staging

在bulkload時會創建並使用這個文件夾,通過查看官方文檔可以證實這一點,原文如下:

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

11)/hbase/hbase.id

它是一個文件,存儲集群唯一的cluster id號,是一個uuid。使用HUE打開這個文件,讓我們看看具體內容:

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介

12)/hbase/hbase.version

它是一個文件,存儲集群的版本號,貌似是加密的,看不到,只能通過web-ui 才能正確顯示出來,這裡我們使用HUE看一下:

海量數據存儲技術之HBase:HBase在HDFS上的目錄及文件簡介


分享到:


相關文章: