PHP如何解決網站大流量與高并發的問題(二)
865
2025-03-31
HBase關鍵流程
讀數據流程
當用戶讀取數據時,HRegionServer會首先訪問MemStore緩存,如果找不到,再去磁盤上面的StoreFile中尋找。讀流程可大致分為三個步驟:(1)客戶端發送讀數據請求,(2)定位Region,(3)Region內查找數據。
寫數據流程
寫流程跟讀流程非常類似,也是三步:(1)客戶端發送寫數據請求,(2)定位Region,(3)Region內寫數據。
當用戶需要寫入數據時,被分配到相應HRegionServer去執行。用戶數據首先被寫入到Hlog中,再寫入MemStore中,最終寫到磁盤上形成StoreFile。只有當操作寫入Hlog之后,commit()調用才會將其返回給客戶端。
緩存刷新
系統會周期性地把MemStore緩存里的內容刷寫到磁盤的StoreFile文件中,清空緩存,并在Hlog里面寫入一個標記,每次刷寫都生成一個新的StoreFile文件,因此,每個Store包含多個StoreFile文件,每個HRegionServer都有一個自己的HLog 文件,每次啟動都檢查該文件,確認最近一次執行緩存刷新操作之后是否發生新的寫入操作;如果發現更新,則先寫入MemStore,再刷寫到StoreFile,開始為用戶提供服務。
StoreFile的合并
當Hfile文件數目越來越多,所需要的讀取時延也越來越大。所以每次刷寫都生成一個新的StoreFile,但是生成的StoreFile數量太多的時候,影響查找速度。調用Store.compact()把多個合并成一個。合并操作比較耗費資源,只有數量達到一個閾值才啟動合并。
Store工作原理
Store是HRegionServer的核心,而一個Store由一個MemStore和多個StoreFile組成,當StoreFile的數據過多時,會發出將多個StoreFile合并成一個的操作,而單個StoreFile過大時,又觸發分裂操作,1個父Region被分裂成兩個子Region。
HBase
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。