hbase的寫和讀,大合並和小合並


Hbase寫: 
客戶端向hbase服務器端發送寫的請求時,hbase會同時進行兩個動作,把記錄寫在WAL(write ahead log)日志文件中,每台服務器所有表都共享這個WAL文件。然后會寫到memStore內存中,memStore是內存中的寫入緩存區,如果memStore寫滿就刷新寫到硬盤,生成HFile文件。當服務器宕機時memStore內存中的內容就沒了,這時可以通過回放WAL日志文件恢復,回放的動作由hbase內部機制調用,不需要用戶調用。 
HFile存儲在底層文件系統,hbase是Hadoop數據庫,所以會在分布式文件系統hdfs上,HFile對應列族,一個列族可以有多個HFile文件,一個HFile文件是一個列族中的內容。在集群的每個節點上,每個列族有一個memStore.注意千萬別把WAL關閉 
Hbase讀: 
hbase讀路徑順序 memStore==>blockCache==>HFile 
現在metStore找,找不到就到到blockCache,再找不到就讀取HFile文件到內存中,hbase使用blockCache緩存技術,blockCache保存從HFile中讀取到內存的頻繁訪問的數據,每個列族都有自己的blockCache (block是建立索引的最小數據單元,block大小是可以調整的,默認是64kb)一個完整的行信息可能存放在多個HFile中,為了讀出完整行,Hbase可能需要讀取包含該行信息的所有HFile 
hbase合並: 
刪除一條記錄,就會在該記錄上打上標記,被打上標記的記錄就成了墓碑記錄,該記錄使用get和scan查詢不到,但還是在HFile中。只有進行大合並的時候才會刪除HFile中的墓碑記錄。大合並:指定region的一個列族的所有HFile.合並完成后,這個列族的所有HFile文件合並成一個HFile文件,可以在shell中手動觸發,但該動作相當耗資源。小合並是將多個小的HFile文件內容讀取出來合並生成一個大的HFile,把新文件設置成激活狀態,然后刪除小的HFile


免責聲明!

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



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