《HBase權威指南》讀書筆記:第一章 簡介

傳統的關係型數據庫無法存放海量數據,因此HBase誕生,解決海量數據存取難題。當然除了HBase,還有很多其他類型的數據庫解決不同的問題。HBase的誕生參考了谷歌的這兩篇論文,值得閱讀:

HBase應用邏輯的基本概念有:

  • 表:表有表名,其含有多個row
  • row:由row key和多個column組成。行級別的數據是原子性的。
  • column:儲存任意二進制數據。column可以達到上百萬個。數據可以有多個版本,每個版本的數據存在cell中。版本可以設置刪除策略,支持數量、過期時間策略。
  • column family:由多個column組成。column family只能有幾十個。

HBase支持的操作有:對數據的CRUD、scan、CAS、計數器、coprocessor,還有建表、刪表、增加列族、修改列族、刪除列族。

  • CURD:用row key去增刪改查
  • scan:指定row key的範圍,批量取數據
  • CAS:爲確保一致性而提供的操作,check and set,確認版本沒變過的情況下寫入數據
  • 計數器:支持原子性的計數器操作
  • coprocessor:協處理器,客戶端提交代碼在服務端運行,更快的處理數據

HBase運維層面的基本概念有:

  • master節點:負責協調region在各個節點中的分佈,並將信息儲存在zookeeper中,一個集羣內可以起多個master節點,但同一時間只能有一個master掌握實權,其餘都是替補。
  • region server:負責處理針對region的請求。一個region server內可以包含多個region。通常10~1000個region性能最優。客戶端直接與region server相連,請求直接發給它。
  • region:最小負載單元,每個region包含表名、首行key、末行key。也就是說每個region負責一張表的一部分內容。如果region中數據量過多,則會進行自動拆分,分成兩個region,然後遷移到別的節點。
  • HFile:包含多個塊,每個塊中儲存某個column數據的一部分。文件末尾是塊的索引。服務啓動時將塊索引加載到內存中。HFile儲存在HDFS中。

架構參考了LSM樹(log-structured sort-and-merge-map)。在HBase中,寫入的數據先寫到write-ahead log,然後放在內存memstore中,等到內存佔用達到閾值,做flush,將memstore中的內容寫到HDFS成爲HFile。當HFile數量較多時,做compation操作,將小文件合併成大文件。這種架構也被ElasticSearch、Cassandra、InfluxDB採用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章