Region服務器的工作原理?
Region服務器是有HBase中核心的模塊,Region服務器內部管理了一系列Region對象和一個HLog文件。其中,HLog是磁盤上面的記錄文件,它記錄著所有的更新操作。
每個Region對象又是由多個store組成的,每個store對應了一個列族的存儲。
1. 用戶讀寫數據的過程
當用戶寫入數據時,會被分配到相應的Region服務器去執行操作。用戶數據首先被寫入到memstore和hlog中。當操作寫入hlog之后,commit()調用才會將其返回給客戶端。
2. 緩存的刷新
Memstore緩存的容量有限,系統會周期性地調用Region.flushcache()把Memstore緩存里面的內容寫到磁盤的storefile文件中,清空緩存,并在hlog文件中寫入一個標記,用來表示緩存中的內容已經被寫入storefile文件中。
3、storefile的合并
每次Memstore緩存的刷新操作,都會在磁盤上生成一個新的storefile文件,這樣,系統中的每個store就會存在多個storefile文件。當需要訪問某個store中的某個值時,就必須查找所有這些storefile,是很費時間的,因此,為了減少查找時間,系統一般會調用store.compact()把多個storefile合并成一個大文件。