HBase之WAL機制


一.簡介

  在分布式環境下,用戶必須要考慮系統出錯的情形,例如,Region服務器發生故障時, MemStore 緩存中還沒有被寫入文件的數據會全部丟失。因此,HBase 采用 HLog 來保證系統發生故障時能夠恢復到正常的狀態。

  

二.WAL機制

  1. 每個 Region 服務器都有一個 HLog 文件,同一個 Region 服務器的 Region 對象共用一個 HLog,HLog 是一種預寫日志(Write Ahead Log)文件。
  2. 用戶更新數據必須先被記入日志后才能寫入 MemStore 緩存,當緩存內容對應的日志已經被寫入磁盤后,即日志寫成功后,緩存的內容才會被寫入磁盤。
  3. ZooKeeper 會實時監測每個 Region 服務器的狀態,當某個 Region 服務器發生故障時,ZooKeeper 會通知 Master,Master 首先會處理該故障 Region 服務器上遺留的 HLog 文件。由於一個 Region 服務器上可能會維護着多個 Region 對象,這些 Region 對象共用一個 HLog 文件,因此這個遺留的 HLog 文件中包含了來自多個 Region 對象的日志記錄。系統會根據每條日志記錄所屬的 Region 對象對 HLog 數據進行拆分,並分別存放到相應 Region 對象的目錄下。再將失效的 Region 重新分配到可用的 Region 服務器中,並在可用的 Region 服務器中重新對各種操作進行日志記錄, 把日志記錄中的數據寫入 MemStore 然后刷新到磁盤的 StoreFile 文件中,完成數據恢復。

在 HBase 系統中每個 Region 服務器只需要一個 HLog 文件,所有 Region 對象共用一個 HLog,而不是每個 Region 使用一個 HLog。在這種 Region 對象共用一個 HLog 的方式中,多個 Region 對象在進行更新操作需要修改日志時,只需要不斷地把日志記錄追加到單個日志文件中,而不需要同時打開、寫入多個日志文件中,因此可以減少磁盤尋址次數,提高對表的寫操作性能。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM