這篇文章主要講解了“Hadoop生態(tài)的組件HBase怎么搭建”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Hadoop生態(tài)的組件HBase怎么搭建”吧!
10年積累的做網(wǎng)站、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先制作網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有共青城免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
分布式表格系統(tǒng)對外提供表格模型,每個(gè)表格由很多行組成,通過主鍵唯一標(biāo)識,每一行包含很多列。整個(gè)表格在系統(tǒng)中全局有序。而Google的BigTable是分布式表格系統(tǒng)的始祖,它采用雙層結(jié)構(gòu)。底層用GFS作為持久層存儲層。而BigTable的對外的接口不怎么豐富。所以谷歌有開發(fā)出Megastore和Spanner.既提供來接口,又能處理事務(wù).
表格中的每一行都有主鍵(Row Key)作為唯一標(biāo)識。每一行又包含很多列(Column)。某一行的某一列構(gòu)成一個(gè)單元(Cell),每個(gè)單元包含多個(gè)版本的數(shù)據(jù)。整體來看的話,BigTable是一個(gè)分布式多維度映射表。
(row:string,column:string,timestamp:int64)->string
多個(gè)列的話又可以構(gòu)成一個(gè)列族(Column Family),所以列名就由列族(Column Family)+列名(qualifier).列族是訪問控制的單元,所以列族的話是預(yù)先定義好的,而列的話后面可以添加,數(shù)量任意.
存儲結(jié)構(gòu)如圖(邏輯視圖):
存儲結(jié)構(gòu)如圖(物理視圖):
行主鍵是任意的字符串,但是大小不能超過64KB。按主鍵排序,而主鍵是字典序.所以網(wǎng)址接近剛好可以排列在一塊.
HBase開源山寨版BigTable. 基于Hadoop的分布式文件系統(tǒng)HDFS之上。然后HDFS和HBase是有什么區(qū)別呢?
HDFS 是分布式文件系統(tǒng),適合保存大文件。官方宣稱它并非普通用途文件系統(tǒng),不提供文件的個(gè)別記錄的快速查詢。 另一方面,HBase基于HDFS且提供大表的記錄快速查找(和更新)。這有時(shí)可能引起概念混亂。 HBase 內(nèi)部將數(shù)據(jù)放到索引好的 "存儲文件(StoreFiles)" ,以便高速查詢。存儲文件位于 HDFS中。 PS:說白了,HBASE就是一個(gè)索引集合.
HBase與關(guān)系數(shù)據(jù)庫的存儲結(jié)構(gòu)對比(HBase是NOSQL--not only sql的一種):在HBase中定位到value值,需要幾個(gè)坐標(biāo):rowkey,列族,列,版本號。。在這里我對比的例子不太恰當(dāng)。。Hbase還是存儲一些半結(jié)構(gòu)化的數(shù)據(jù)要好一點(diǎn)。
MySQL:
id | name | password | type |
1 | zhangsan | xxxxx | sb |
2 | lisi | 324324 | sb2 |
3 | zhaowu | 423423 | db |
hbase:
rowkey(主鍵) | info(列族) | others(列族) |
name | password | type | age | |
rk0000999 | zhangsan,version1 zhangsan3,version2 | xxxxxxxx | sb | 10 |
前提: 已經(jīng)部署分布式文件系統(tǒng),例如HDFS.
3.1 機(jī)器準(zhǔn)備,以及節(jié)點(diǎn)的分配
在這里有三臺機(jī)器,其中一臺為HMaster,同時(shí)的有三個(gè)HRegionServer.所以有一臺機(jī)器時(shí)兩種角色.還需要部署HDFS和Zookeeper.我的HDFS也是三個(gè)節(jié)點(diǎn),也是有一臺機(jī)器同時(shí)有NameNode和DataNode,SecondaryNameNode,其他兩臺機(jī)器只有datanode.
IP | Hostname | JVM Pro?cess |
192.168.237.201 | Spark-0x64-001 | HMaster,HRegionServer,QuorumPeerMain,DataNode NameNode,SecondaryNameNode |
192.168.237.202 | Spark-0x64-002 | HRegionServer,QurumPeerMain,DataNode |
192.168.237.203 | Spark-0x64-003 | HRegionServer,QurumPeerMain,DataNode |
3.2 安裝非HA模式的HDFS
由于之前之前已經(jīng)安裝過HDFS的分布式集群,但是是非HA機(jī)制. 這里就不重復(fù)啦.
3.3 安裝集群的Zookeeper
不重復(fù)啦。之前的博客已經(jīng)寫啦.http://my.oschina.net/codeWatching/blog/367309
3.4 配置HBase的文件
a. 修改文件hbase-evn.sh.添加兩個(gè)地方.
export JAVA_HOME=/spark/app/jdk1.7.0_21/
export HBASE_MANAGES_ZK=false
b. 修改文件hbase-site.xml
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://Spark-0x64-001:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.master</name> <value>Spark-0x64-001:6000</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>Spark-0x64-001,Spark-0x64-002,Spark-0x64-003</value> </property> </configuration>
c.將hadoop中的core-site.xml和hdfs-site.xml拷貝到hbase的conf目錄下
d.編輯regionservers文件
Spark-0x64-001 Spark-0x64-002 Spark-0x64-003
3.5 將配置好的Hbase拷貝到其他機(jī)器上。Scp -r 命令.
3.6 配置時(shí)間時(shí)間服務(wù)器。見鏈接:........
3.7 啟動HBase
a.在三臺機(jī)器上啟動zookeeper b.啟動HDFS.已啟動 c.啟動Hbase(主節(jié)點(diǎn)Master)--->sh bin/start-hbase.sh. d.可選,啟動多個(gè)HMaster---->hbase-daemon.sh start master
3.8 驗(yàn)證Web頁面
http://192.168.237.201:60010
HBase的技術(shù)架構(gòu)圖:一覽無余
Client 1 包含訪問hbase的接口,client維護(hù)著一些cache來加快對hbase的訪問,比如regione的位置信息。 Zookeeper 1 保證任何時(shí)候,集群中只有一個(gè)master 2 存貯所有Region的尋址入口。 3 實(shí)時(shí)監(jiān)控Region Server的狀態(tài),將Region server的上線和下線信息實(shí)時(shí)通知給Master 4 存儲Hbase的schema,包括有哪些table,每個(gè)table有哪些column family Master 1 為Region server分配region 2 負(fù)責(zé)region server的負(fù)載均衡 3 發(fā)現(xiàn)失效的region server并重新分配其上的region 4 GFS上的垃圾文件回收 5 處理schema更新請求 Region Server 1 Region server維護(hù)Master分配給它的region,處理對這些region的IO請求 2 Region server負(fù)責(zé)切分在運(yùn)行過程中變得過大的region 可以看到,client訪問hbase上數(shù)據(jù)的過程并不需要master參與(尋址訪問zookeeper和region server,數(shù)據(jù)讀寫訪問regione server),master僅僅維護(hù)者table和region的元數(shù)據(jù)信息,負(fù)載很低。
HBase的尋找數(shù)據(jù)的流程
系統(tǒng)如何找到某個(gè)row key (或者某個(gè) row key range)所在的region hbase使用三層類似B+樹的結(jié)構(gòu)來保存region位置。 第一層是保存zookeeper(谷歌chubby)里面的文件,它持有root region的位置。 第二層root region是.META.表的第一個(gè)region其中保存了.META.z表其它region的位置。通過root region,我們就可以訪問.META.表的數(shù)據(jù)。 .META.是第三層,它是一個(gè)特殊的表,保存了hbase中所有數(shù)據(jù)表的region 位置信息。 PS:root region永遠(yuǎn)不會被split,保證了最需要三次跳轉(zhuǎn),就能定位到任意region 。 2.META.表每行保存一個(gè)region的位置信息,row key 采用表名+表的最后一樣編碼而成。 3 為了加快訪問,.META.表的全部region都保存在內(nèi)存中。 假設(shè),.META.表的一行在內(nèi)存中大約占用1KB。并且每個(gè)region限制為128MB。 那么上面的三層結(jié)構(gòu)可以保存的region數(shù)目為: (128MB/1KB) * (128MB/1KB) = = 2(34)個(gè)region 4 client會將查詢過的位置信息保存緩存起來,緩存不會主動失效,因此如果client上的緩存全部失效,則需要進(jìn)行6次網(wǎng)絡(luò)來回,才能定位到正確的region(其中三次用來發(fā)現(xiàn)緩存失效,另外三次用來獲取位置信息)。
網(wǎng)站標(biāo)題:Hadoop生態(tài)的組件HBase怎么搭建
文章起源:http://muchs.cn/article14/ihdsge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、服務(wù)器托管、企業(yè)建站、網(wǎng)站設(shè)計(jì)、做網(wǎng)站、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)