在上一篇博文中,我們提到master啟動時會啟動splitlogmanager, 並進行log分割。那麼什麼是log split, 為什麼要進行log split呢?要回答這個問題,我們先來看一下hlog(也叫wal)的格式,如下圖:
hlog是每個region server只有乙份,乙個region server上的所有region共用乙個hlog, hlog用來在系統異常down掉,memstore中大量更新丟失時,對資料進行恢復。從上圖中可以看出,對每個region的更新在hlog裡不是連續的,而是分散在hlog裡的。hlog中的每項更新都會記錄該更新所屬的region, hbase要通過在每個region上應用hlog中的更新來恢復資料,因此需要把hlog中的更新按照region分組,這一把hlog中更新日誌分組的過程就稱為log split(日誌分割)。
對於hbase 0.90及之前的版本, log split都是由master完成的, master啟動時,所有的log由master順序進行分割,如果log檔案很多很大,這一過程在master上是很耗時的,但是同時所有的region server都在閒著,等待master完成log split。 hbase 0.92版本開始採用了分布式日誌分割技術(hbase-1364)。對於分布式日誌分割,master負責將日誌分割的任務分配給不同的region server,有region server同時並行完成日誌分割,大大提公升了日誌分割速度。
hmaster啟動時會啟動splitlogmanager,該類負責把log split任務通過建立znode發布到zookeeper上,並監控znode了解log split任務完成狀態。在每個region server中有單獨的執行緒監控zookeeper中log split相關的znode, 一旦發現自己的任務,就開始進行log split, 最終負責log split實際工作的類是hlogsplitter。
分布式日誌分割可以通過配置項hbase.master.distributed.log.splitting來控制,預設為true, 即預設情況下分布式日誌分割是開啟的。
nginx日誌分割
以下這個指令碼實施的核心是 每天凌晨將日誌檔案壓縮並移動到相應的年份月份目錄下,然後重新生成日誌檔案,同時記錄日誌 bin bash logs path home wwwlog 日誌存放位置 year date y 年份 month date m 月份 day date y m d 日期 time ...
linux cronolog分割日誌
1 日誌分割設定 apache的日誌分割要借助於目前國際上最流行 最通用的日誌分割工具cronolog。日誌輪循工具cronolog,已經是比較的相當成熟,在不中斷apache伺服器的情況下,它能嚴格的按每一天00 00 00 23 59 59來實現日誌檔案的分割,同時不受apache伺服器重啟的影...
apache日誌分割
一 日誌切割 安裝cronolog centos 5.4中編譯安裝apache預設日誌是不切割的,需要用用工具cronnolog進行日誌切割 wget tar zxvf cronolog 1.6.2.tar.gz cd cronolog 1.6.2 configure make make insta...