新聞中心
1. Hbase的集群架構
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于網(wǎng)站設計制作、成都網(wǎng)站建設、九龍坡網(wǎng)絡推廣、微信小程序、九龍坡網(wǎng)絡營銷、九龍坡企業(yè)策劃、九龍坡品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學生創(chuàng)業(yè)者提供九龍坡建站搭建服務,24小時服務熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
首先hbase是hadoop的一個組件.而hadoop內(nèi)部有很多的組件,這些組件幾乎都依賴于hadoop最核心的兩個東西建立起來的,一個是hdfs文件系統(tǒng),另一個是mapreduce。當然hbase也不例外。
hbase其實就是一個非關系型的數(shù)據(jù)庫系統(tǒng),可以將他和關系型數(shù)據(jù)庫MySQL類比一下,可能會便于
理解。
(此圖引用于百度百科)
Hbase有3種搭建方式:本地模式,偽分布模式和集群模式。那么一般情況下,我們便于學習Hbase的各種特性,只需要搭建偽分布模式即可。偽分布模式和集群模式的區(qū)別就是,hbase這個系統(tǒng)的所有守護進程全部運行在一個物理節(jié)點上和真正的分布在不同的物理節(jié)點之上。
那么不論是偽分布和集群模式。其集群都包含幾個主要的守護進程:HMaster,HRegionserver,zookeeper,以及client。那么我們通過命令行或者JavaApi或其他方式來使用Hbase時,都是通過client向hbase發(fā)送命令的。
簡單理解一下各個守護進程的作用:HMaster并不像hdfs中的Namenode那樣,維護了整個系統(tǒng)的元數(shù)據(jù),負責與client交互以實現(xiàn)對分節(jié)點的管理控制等全部統(tǒng)籌功能。Hmaster不負責與client有太多的交互,大部分情況下是由zookeeper來與client通信,然后實現(xiàn)對hbase的使用和管理。同時元數(shù)據(jù)也是由zookeeper來維護的,包括各個regionserver的地址等等。
下面是一個簡單的總結這兩者各自的分工:
Zookeeper
保證任何時候,集群中只有一個running master
存貯所有Region 的尋址入口
實時監(jiān)控Region Server 的狀態(tài),將Region server 的上線和下線信息,實時通知給Master
存儲Hbase 的schema,包括有哪些table,每個table 有哪些column family
Master可以啟動多個HMaster,通過Zookeeper的Master Election機制保證總有一個Master運行
為Region server 分配region
負責region server 的負載均衡
發(fā)現(xiàn)失效的region server 并重新分配其上的region
2. Hbase的存儲方式和結構
要講Hbase的存儲方式,我們從兩方面來描述,一個是邏輯存儲方式和物理的存儲方式。(比如mysql中的二維關系表就是關系型數(shù)據(jù)庫的邏輯存儲結構,而這些表在硬盤上實際的存儲形式便是所謂的物理存儲方式)。
Hbase的邏輯存儲方式:
表是稀疏表,所以可以類別mysql的關系表來理解,但是實際上并不是一回事。首先表有行健,列簇,列名,時間簇等幾個概念。一個表定義之初,應該給出其表名,列簇信息。一行中,有多個固定的列簇,每個列簇下在插入數(shù)據(jù)時可以設置任意的列名。由一個行健,一個列簇+列名可以標定一個表中的單元格,而一個單元格中有由時間戳區(qū)分不同版本的值。表中的所有信息實際上都是以二進制形式存儲的。不像關系表中支持那么多的數(shù)據(jù)類型。所以如果要用各種數(shù)據(jù)類型,只能由自己在程序中進行維護。
Hbase的物理存儲方式:
Hbase的數(shù)據(jù)其實是由Hmaster進行配置,實際上存在各個Hregionserver中的。一個稀疏表是按行健進行排序和存儲。這些表會按行被拆分為多個region存儲道不同的regionserver中,一個regionserver中可以存儲多region。這些region對應了表中的不同部分的行,而這些行實際也被劃分為不同的文件存儲,劃分方式即是列簇,一個列簇一個文件,所以稱之為面向列的數(shù)據(jù)庫。那么這些文件實際上是放在hdfs里的,也就是以block的形式存儲在硬盤上的。
那么表是按rowkey的字典順序來存儲的,簡單來說,就是對于rowkey,從左到右,譯成ascii碼來比大小排序。所以呢由于這個原因,在設計rowkey時,最好不要直接把時間戳這樣的數(shù)據(jù)直接作為rowkey,因為這樣會導致新產(chǎn)生的數(shù)據(jù)由于其時間戳都在一個范圍內(nèi),導致存儲的時候全部擁擠到某一個regionserver中。一般可以在時間戳前面加上散列值,設計成:(散列值:時間戳)這樣的形式
網(wǎng)頁名稱:Hbase體系結構理解
當前URL:http://www.ef60e0e.cn/article/ijhjpp.html