在啟動的時候,每台hregion伺服器都會檢查自己的hlog檔案(hlog是磁碟上的記錄檔案,它記錄著所有的更新操作),看看最近一次執行flushcache之後有沒有新的更新寫入操作。如果沒有更新,就表示所有的資料都已經更新到檔案中了;如果有更新,伺服器就會先把這些更新寫入快取記憶體,然後呼叫fulshcache寫入到檔案中。最後伺服器會刪除舊的hlog檔案,並開始讓使用者訪問資料。
因此,為了節省時間可以少呼叫flushcache,但是這樣會增加記憶體的佔用量,而且在伺服器重啟的時候會延長很多時間。如果定期呼叫flushcache,快取大小將會控制在乙個較低的水平上,而且hlog檔案也會很快重構,但是呼叫flushcache的時候會造成系統負載瞬間增加。
hlog會被定期回滾,回滾的時候是按照時間來備份檔案的,每次回滾的時候,系統會刪除那些已經被寫到檔案中的更新,回滾hlog只會占用很少的時間,建議經常回滾以減少檔案尺寸。
每一次呼叫flushcache會生成乙個新的hstorefile檔案,從乙個hstore裡面獲取任何乙個值都需要訪問所有的hstorefile檔案,這會十分耗時,所以我們要定期把這些分散的檔案合併到乙個大檔案裡面,hstore.compact()可以完成合併工作。不過這樣的工作十分占用資源,所以只有在hstorefile檔案的數量超過乙個設定值的時候才會觸發。
flushcache會建立乙個新的hstorefile檔案,並把快取中所有需要更新的資料寫到檔案裡,在flushcache之後,log的重建次數會清零。
compact會把所有的hstorefile檔案合併成乙個大檔案。
和bigtable不同的是,hbase的每個更新如果被正確提交,且commit沒有返回錯誤,拿它就被寫到記錄檔案裡面了,這不會造成資料丟失。
兩個hregion可以通過呼叫hregion.closeandmerge()合併成乙個新的hregion,在當前版本下進行此操作需要兩台hregion都停機。
當乙個hregion變得太過巨大,超過設定的閾值時,hregion伺服器會呼叫hregion.closeandsplit()將此hregion拆分為兩個,並且報告給主伺服器讓它決定由哪台hregion伺服器來存放新的hregion。這個拆分過程十分迅速,因為兩台新的hregion最初只是保留原來hregionfile檔案的引用,這個時候舊的hregion會處於停止服務的狀態,當新的hregion拆分完成並且把引用刪除了以後,舊的hregion才會刪除。
hbase master伺服器
Hadoop實戰應用
1 雲盤儲存系統通過hdfs實現 2 hadoop三大發行版本 1 apache 基礎版本,實際企業使用比較少 2 cloudera cdh cloudera的hadoop發行版 clouderamanager 集群軟體分發及管理監控 3 hortonworks hdp hortonworks da...
Hadoop實戰 11 hive閱讀筆記
hive安裝 配置 error logs錯誤日誌 hive錶可儲存的資料型別 hive ddl 資料操作 hive是hadoop的乙個重要子專案,封裝mapreduce程式設計技術,提供hive ql的類sql的程式設計介面,方便快捷的訪問和使用mapreduce。hive是乙個基於hadoop檔案...
hadoop實戰隨筆 0712
org.apache.hadoop.conf 定義了系統引數的配置檔案處理api。org.apache.hadoop.fs 定義了抽象的檔案系統api org.apache.hadoop.dfs hadoop分布式檔案系統 hdfs 模組的實現 org.apache.hadoop.mapred ha...