HBase學習總結(4):HBase的工作原理,hbase工作原理

來源:互聯網
上載者:User

HBase學習總結(4):HBase的工作原理,hbase工作原理

一、切分和分配大表
HBase中的表是由行和列組成的。HBase中的表可能達到數十億行和數百萬列。每個表的大小可能達到TB級,有時甚至PB級。這些表會切分成小一點兒的資料單位,然後分配到多台伺服器上。這些小一點兒的資料單位叫region。託管region的伺服器叫RegionServer。一張表由多個小一點的region組成,1所示。

圖1 多個小一點的region組成一張表
RegionServer和HDFS DataNode典型情況下並列配置在同一物理硬體上,2所示。RegionServer本質上是HDFS用戶端,在上面儲存/訪問資料。主(master)進程分配region給RegionServer,每個RegionServer一般託管多個region。

圖2 RegionServer和DataNode典型情況下並列配置在同一台主機上
考慮到基礎資料存放區在HDFS上,所有用戶端都可以在一個命名空間下訪問。所有RegionServer都可以訪問檔案系統裡同一個檔案,因此RegionServer可以託管任何region,3所示。通過DataNode和RegionServer並列配置,理論上RegionServer可以把本地DataNode作為主要DataNode進行讀寫操作。

圖3 RegionServer託管region的
單個region大小由hbase-site.xml檔案裡的配置參數HBase.hregion.max.filesize決定,當一個region大小變得大於該值時,它會切分成兩個region。

二、如何找到region
當一個region分配給RegionServer時,用戶端應用如何知道它的位置?
HBase中有兩個特殊的表,-ROOT-和.META.,用來尋找各種表的region位置在哪裡。-ROOT-和.META.也會切分成region,其中,-ROOT-永遠不會切分超過一個region,.META.和其他表一樣可以按需切分成許多region。
當用戶端應用要訪問某行時,它先找-ROOT-表,尋找什麼地方可以找到負責某行的region。-ROOT-指向.META.表的region去尋找答案。.META.表由入口地址組成,用戶端應用使用這個入口地址判斷哪一個RegionServer託管待尋找的region。這個尋找過程就像是一個3層分布式B+樹(4所示),-ROOT-表是B+樹的-ROOT-節點,.META. region是-ROOT-節點的葉子,使用者表的region是.META. region的葉子。

圖4 -ROOT-、.META.和使用者表的B+樹視圖
在圖4中,-ROOT-表只包含了一個region,託管在RegionServer RS1上;.META.表包含了3個region,託管在RS1、RS2和RS3上面;使用者表T1和T2分別包含3個和4個region,分別在RS1、RS2和RS3上面。

圖5 HBase中的表分布在各個RegionServer上
5所示,RegionServer 1(RS1)託管使用者表T1的region R1和.META.表的region M2;RegionServer 2(RS2)託管使用者表的region R2、R3和.META.表的region M1;RegionServer 3(RS3)只託管了-ROOT-。

三、如何找到-ROOT-表
一個叫做ZooKeeper的系統提供了HBase系統的進入點。ZooKeeper是一種集中服務,用來維護配置資訊、命名服務、提供分布式同步和提供分組服務等。這是一種高可用的、可靠的分布式佈建服務。
用戶端與HBase系統的互動分幾個步驟,ZooKeeper是進入點。整個互動過程6所示。

圖6 用戶端與HBase系統的互動過程
從圖6可以看出,互動步驟為:
第一步:用戶端詢問ZooKeeper,-ROOT-在哪裡?
第二步:ZooKeeper回複用戶端,-ROOT-在RegionServer RS1上面。
第三步:用戶端詢問在RS1上的-ROOT-表,哪一個.META. region可以找到表T1裡的行00007?
第四步:RS1上的-ROOT-表回複用戶端,在RegionServer RS3上的.META. region M2可以找到。
第五步:用戶端詢問RS3上的.META. region M2,在哪一個region上可以找到表T1裡的行00007以及哪一個RegionServer為它提供服務?
第六步:RS3上的.META. region M2回複用戶端,資料在RegionServer RS3上面的region T1R3上。
第七步:用戶端發訊息給RS3上面的region T1R3,要求讀取行00007。
第八步:RS3上面的region T1R3將資料返回給用戶端。

本人公眾號:zhouzxi,請掃描以下二維碼:

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.