深入淺出系列Hbase之原理及概念(1)

我們先來看看官網是如何介紹Hbase組件,其官網:http://hbase.apache.org/ 

Apache HBase™是Hadoop數據庫,這是一個分佈式可擴展的大數據存儲。

當您需要對大數據進行隨機實時的讀/寫訪問時,請使用Apache HBase™。該項目的目標是在商品硬件羣集上託管超大型表-數十億行X數百萬列。Apache HBase是一個開源的,分佈式的,版本化的,非關係型數據庫,其仿照Google的Bigtable: Chang等人的“ 結構化數據分佈式存儲系統 ”。正如Bigtable利用Google文件系統提供的分佈式數據存儲一樣,Apache HBase在Hadoop和HDFS之上提供類似於Bigtable的功能。

關於特性:

  • 線性和模塊化可擴展性。

              注:Hbase的regionserver相當於Hadoop的DataNode,可以進行水平擴展

  • 嚴格一致的讀寫。

              注:不會發生髒數據的讀或寫的操作

  • 表的自動和可配置分片
  • RegionServer之間的自動故障轉移支持。
  • 方便的基類,用於通過Apache HBase表備份Hadoop MapReduce作業。
  • 易於使用的Java API用於客戶端訪問。

              注:簡單的API還是比較好些,但是很多的API是非常難寫

  • 塊緩存和Bloom過濾器用於實時查詢。

              注:塊緩存主要用於讀的場景

  • 通過服務器端過濾器查詢謂詞下推
  • 支持通過Hadoop指標子系統將指標導出到文件或Ganglia;或通過JMX

 

表:

  1. rowkey 每一條數據的主鍵
  2. column family 列族/簇 將表進行 橫向切割 簡稱CF    生產上列族不要超多3個
  3. column 列 是屬於一個列族
  4. version number 類型是long 默認是系統時間戳 用戶也可以自定義
  5. value 列對應的值

直接把概念列在這,總感覺乾巴巴的,那麼接下來通過一張圖來進一步的介紹

上面的圖表示

1、一行row數據是可以包含一個或者多個CF(列族),但是並不推薦一張表設計時CF>3

2、Column表示列,它是屬於一個列族,一個CF是包含多個Column(列)的

 

Region:

    它是一段數據的集合,從數據的物理層面來說,所有的數據都是存放在region裏的,而region是由RegionServer管理的。

通過上圖,我們可以清楚的知道 一個RegionServer管理多個Region,一個Region又管理着一個或多個的CF,而我們再結合之前的圖,又明白一個CF包含着多個Column,至此對他們之間的關係又有了稍微清晰的認知。

 

OK,接下來繼續看下面兩張圖

    在數據的邏輯概念來說,表是按照rowkey範圍進行劃分爲不同的region, 而region按照不同的列族劃分不同的store,每個store中包含一個memstore和0個或多個storefile

    建表時默認只有一個region,如果指定split key,就會有多個region。 當表的行數超過閾值,表就水平分割2個region, 可以把region理解爲子表。

    不同的region會被hmaster分配到合適的hregionserver來管理。比如一個表切分成很多的region,不代表很多的region只在一個機器節點上,假如一張表切分成3個region,有可能region1在第一臺機器節點上,region2在第二臺上,region3在第三臺上,當select進行查詢的時候,這樣便可以充分利用三臺機器的IO(磁盤/網絡)。另外不同的Region是存儲在不同的Store中的。

    大家也看到MemStore使用紅色標註,這是hbase調優的重點,這裏暫時先不說,後面會重點進行介紹。

    數據是以KV結構進行存儲,每個KV只存儲一個單元格的cell數據,而且不同的CF數據是存儲在不同的File裏

 

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