關於HBase的日誌檔案和HFile
在HBase的根目錄下面,有兩個跟日誌相關的目錄,.logs和.oldlogs。.logs儲存的是所有Regionserver上當前在寫入的HLog,可以看到每個RegionServer對應一個檔案,所以HLog是對應RegionServer的。
HLog預設情況下每個小時會滾動,這是通過引數hbase.regionserver.logroll.period控制的,這個引數的預設值是1小時。
此外,hbase.regionserver.hlog.blocksize和fs_local.block.size控制當HLog的大小超過32M的時候,會滾動。
Hbase.regionserver.logroll.multiplier,預設值是95%,表示日誌達到95%的時候,也會進行滾動。
日誌檔案的滾動操作,就是檢查HFile中的序列號,確認日誌中所有的序列號都小於HFile的序列號,確保所有的日誌內容都已經固化到HFile中,確認後將當前的日誌挪到.oldlog目錄下。
這裡有個問題還有些疑惑,書裡寫的是檢查寫入儲存檔案中最大的序列號是多少,小於這個序列號的所有修改都已經固化了,只要確保日誌中的最大序列號比這個序列號小,就可以確認這個日誌已經固化,可以挪到.oldlog下。
但是memstore重新整理到HFile是對HStore的,對錶的,可能有的表更新比較多,重新整理的快,已經固化到HFile,但有的表修改少,還沒有重新整理到HFile,這和序列號的順序應該是沒有必然的關係的,後續應該可以做個測試來驗證一下。
當前日誌的檔案,在寫滿一個塊之前,都顯示的是0位元組,但實際上可能已經有資料,只是顯示的問題而已。
現在插入幾條記錄,做些修改的操作,檢視日誌的內容:
hbase(main):001:0> put't_lisa','lisa5','cf_1:w1','10d2'
0 row(s) in 0.4590 seconds
hbase(main):002:0> put't_lisa','lisa6','cf_1:w1','1032'
0 row(s) in 0.0050 seconds
hbase(main):003:0> put't_lisa','lisa7','cf_1:w1','10z2'
0 row(s) in 0.0040 seconds
hbase(main):004:0> put't_lisa','lisa8','cf_1:w1','10e2'
0 row(s) in 0.0040 seconds
hbase(main):002:0> delete 't_lisa','lisa5','cf_1'
0 row(s) in 0.4270 seconds
檢視日誌檔案,雖然大小為0,但是實際上寫操作是先寫了WAL,才寫memstore的,這裡只是檔案大小顯示的問題。
每個regionserver最初都會有一個HLog,不管是不是有更新操作。
[root@a01 hbase]# hadoop fs -ls /hbase_root/.logs
檢視日誌檔案的內容,-p表示檢視對應的value:
[root@a01 hbase]# bin/hbase hlog /hbase_root/.logs/*,60020,1385442023669/*%2C60020%2C1385442023669.1385449225598 -p
Sequence 2316016 from region fa8f6eb2a0bcb54e443f9bfc2693768d in table t_lisa
Action:
row: lisa5
column: cf_1:w1
at time: Tue Nov 26 15:17:04 CST 2013
value: 10d2
Sequence 2316017 from region fa8f6eb2a0bcb54e443f9bfc2693768d in table t_lisa
Action:
row: lisa6
column: cf_1:w1
at time: Tue Nov 26 15:17:04 CST 2013
value: 1032
Sequence 2316018 from region fa8f6eb2a0bcb54e443f9bfc2693768d in table t_lisa
Action:
row: lisa7
column: cf_1:w1
at time: Tue Nov 26 15:17:04 CST 2013
value: 10z2
Sequence 2316019 from region fa8f6eb2a0bcb54e443f9bfc2693768d in table t_lisa
Action:
row: lisa8
column: cf_1:w1
at time: Tue Nov 26 15:17:04 CST 2013
value: 10e2
Sequence 2316020 from region fa8f6eb2a0bcb54e443f9bfc2693768d in table t_lisa
Action:
row: lisa5
column: cf_1:
at time: Tue Nov 26 15:31:49 CST 2013
value:
擷取其中的一小段進行分析:
Sequence 2316016 from region fa8f6eb2a0bcb54e443f9bfc2693768d in table t_lisa
Action:
row: lisa5
column: cf_1:w1
at time: Tue Nov 26 15:17:04 CST 2013
value: 10d2
Sequence 2316016 :序列號,在恢復的時候,會判斷這個id和HFile中序列ID的大小,小於HFile序列ID(MAX_SEQ_ID_KEY)的操作不用再重做,因為已經固化到資料檔案中了。
region fa8f6eb2a0bcb54e443f9bfc2693768d:region name中按照前面部分的MD5雜湊值
table t_lisa: 表名
row: lisa5:行鍵
column: cf_1:w1:列族和列識別符號
value: 10d2:值
Delete 和 insert操作的日誌並沒有明顯寫明action
檢視HFile的資訊,這裡可以看到HFile中的kv資料、壓縮、起始rowkey等非常詳細的資訊:
[root@a01 ~]# cd /home/hbase
[root@a01 hbase]# bin/hbase org.apache.hadoop.hbase.io.hfile.HFile -f /hbase_root/t_lisa1/787ce41dabb55075935e7060583ae6af/cf_1/e541b8a04f224e869166ee43783bd8d0 -v -m -p
K: lisa1/cf_1:a/1384389531130/Put/vlen=1/ts=0 V: 1
K: lisa1/cf_1:b/1384390435899/Put/vlen=1/ts=0 V: 6
K: lisa1/cf_1:b/1384389531157/Put/vlen=1/ts=0 V: 5
K: lisa1/cf_1:b1/1384390714903/Put/vlen=2/ts=0 V: 61
firstKey=lisa1/cf_1:a/1384389531130/Put,
lastKey=lisa1/cf_1:b1/1384390714903/Put,
MAX_SEQ_ID_KEY = 2309244
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/51862/viewspace-1061242/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 關於-日誌檔案Oracle
- 日誌檔案和歸檔日誌檔案的關係以及如何切換日誌
- 對日誌檔案組和日誌檔案組成員的管理
- 重做日誌檔案的相關操作
- 日誌檔案和歸檔管理
- 關於SQL Server 2000的日誌檔案壓縮SQLServer
- ASM的優點總結--關於日誌檔案調整ASM
- 關於歸檔日誌的切換測試
- Oracle日誌組新增冗餘檔案和日誌組Oracle
- 【Oracle日誌】- 日誌檔案重建Oracle
- 日誌檔案
- 12C關於CDB、PDB 日誌檔案redo log的總結
- 日誌檔案的管理
- 日誌檔案的大小
- go開發屬於自己的日誌庫-檔案日誌庫實現Go
- 關閉和開啟歸檔日誌
- 刪除日誌檔案組與日誌檔案成員
- 關於MySQL 通用查詢日誌和慢查詢日誌分析MySql
- go 開發屬於自己的日誌庫-檔案日誌庫原型實現Go原型
- LNAV:基於 Ncurses 的日誌檔案閱讀器
- 【Oracle】如何修改資料檔案和日誌檔案的路徑Oracle
- 官方文件nodemanager 配置檔案和日誌檔案的路線圖
- 管理日誌檔案
- dump日誌檔案
- APACHE日誌檔案Apache
- 保護資料和日誌檔案的安全
- Linux中常見的日誌檔案和命令Linux
- SQL Server 2005 日誌刪除和日誌檔案限制SQLServer
- RAC的告警日誌檔案
- linux的日誌檔案Linux
- 關於歸檔日誌的幾個引數選項
- 控制檔案/歸檔日誌
- 增加日誌檔案,修改當前日誌檔案大小
- 基於Docker應用容器日誌檔案收集Docker
- 日誌檔案的監測與檔案清理
- linux檔案系統和日誌分析Linux
- 關於“日誌”的一點心得
- 基於NMAP日誌檔案的暴力破解工具BruteSpray