好程序員大數(shù)據(jù)學(xué)習(xí)路線Hbase總結(jié),為什么有hbase
成都創(chuàng)新互聯(lián)公司從2013年開始,先為趙縣等服務(wù)建站,趙縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為趙縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
隨著數(shù)據(jù)的逐漸增大,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫無法滿足對數(shù)據(jù)的查詢和存儲,而hive不是數(shù)據(jù)庫,只是數(shù)據(jù)倉庫,雖然能夠滿足簡單的存儲要求,但是始終無法滿足對非結(jié)構(gòu)化和半結(jié)構(gòu)化的數(shù)據(jù)的存儲和查詢
?
2hbase是什么
Hbase是阿帕奇旗下的一款開源的,多版本的,可擴(kuò)展的非關(guān)系型數(shù)據(jù)庫。
他是基于谷歌的bigtable的基礎(chǔ)上,建立在hdfs上的一款提供高?可靠性的,高性能的列式存儲,可伸縮,實時讀寫的NOSQL的數(shù)據(jù)庫系統(tǒng)
?
3適用場景
?????海量數(shù)據(jù)存儲
?????隨機(jī)實時讀寫和管理數(shù)據(jù)
?
4特點
??????列式存儲
??????模式:無模式(不需要use gp1808,就可以直接創(chuàng)建表了,所以導(dǎo)致hbase中的表是不可以重名的)
??????數(shù)據(jù)類型:單一的byte[]
??????多版本(version):每個值都可以有多個版本
??????稀疏存儲:如果kv為null,則不占用存儲空間
?
5結(jié)構(gòu)框架
?
Client:
hbase的客戶端,包含訪問的hbase的接口(linux shell ,java api)
?????維護(hù)一些cache(緩存)來加速hbase的速度,比如region的位置信息
?
Zookeeper:
???????監(jiān)控hmaster的狀態(tài),保證有且只有一個active的hmaster,達(dá)到高可用
???????存儲所有的region的尋址入口,
???????實時監(jiān)控hregionserver的狀態(tài),將regionserrver的上下線信息實時通知給hmaster
???????存儲hbase的所有表的信息(hbase的元數(shù)據(jù))
?
Hmster(hbase的老大)
?????為regionserver分配region(新建表)
?????負(fù)責(zé)regionserver的負(fù)載均衡
?????負(fù)責(zé)region的重新分配(處理hregionserver異常,hregion裂變)
?????Hdfs上的垃圾文件回收
?????處理schema的更新請求
?
Hregionserver(hbase的小弟) ??
?????維護(hù)老大給他的region(管理本機(jī)上的region)
?????處理client對region的IO請求,并和hdfs交互
?????Regionserver負(fù)責(zé)切分在運行過程中變大的region
?
Hregion:
?????Hbase中分布式的存儲和負(fù)載的最小單元,表或者是表的一部分
(在HBase中數(shù)據(jù)按主鍵排序,同時表按主鍵劃分為多個Region
Region按大小分割的,隨著數(shù)據(jù)增多,Region不斷增大,當(dāng)增大到一個閥值的Region就會分成兩個新的Region)
Region雖然是分布式存儲的最小單元,但并不是存儲的最小單元。每個Region包含著多個Store對象。每個Store包含一個MemStore或若干StoreFile,StoreFile包含一個或多個HFile。MemStore存放在內(nèi)存中,StoreFile存儲在HDFS上。
Hlog;
?????對hbase的操作進(jìn)行記錄,使用wal(Write-Ahead-Log)寫數(shù)據(jù),優(yōu)先寫入log,然后再寫入memstore,以防數(shù)據(jù)丟失時可以進(jìn)行日志回滾回復(fù)數(shù)據(jù)
Store:
??????相當(dāng)于一個列簇。
?
Memstore:128M
???????內(nèi)存緩沖區(qū),用于將數(shù)據(jù)批量刷新到hdfs上
?
Hstorefile(hfile)
???????Hbase中的數(shù)據(jù)是以hfile的形式存儲到hdfs上
?????
寫流程:
1client通過zookeeper的調(diào)度,向regionserver發(fā)出寫數(shù)據(jù)請求,在region中寫數(shù)據(jù)
2數(shù)據(jù)被寫入region的memstore,直達(dá)memstore達(dá)到預(yù)設(shè)的閾值(128M)
3memstore中的數(shù)據(jù)被flush成一個storefile
4隨著storefile文件的不斷增多,當(dāng)其數(shù)量增長到一定閾值的時候,觸發(fā)了compact合并操作,將多個storefile合并成一個storefile,同時進(jìn)行版本合并和數(shù)據(jù)刪除
5storefiles通過不斷的compact合并操作,逐漸形成越來越大的storefile
6單個storefile大小超過一定閾值之后,觸發(fā)spilt操作,把當(dāng)前的region切分成2個新的region,父region會下線,新切出的2個字region會被hmaster分配到相應(yīng)的regionserver上,使得原先的一個region的壓力的以分配到2個region上
?
讀流程:
1client訪問zookeeper,查找root表,獲取meta表的信息
2從meta表中查找,獲取存放的目標(biāo)的region信息,從而找到對應(yīng)的regionserver
3通過regionserver獲取需要查詢的數(shù)據(jù)
4regionserver的內(nèi)存分為memstore和blockcache兩部分,memstore主要用于寫數(shù)據(jù),blockcache主要用于讀數(shù)據(jù),請求先到memstore中查數(shù)據(jù),查不到就在blockcache在查,再查不到就會到storefile上讀,并把讀的結(jié)果放入blockcache
?
尋址過程:client-->Zookeeper-->-ROOT-表-->.META.表-->RegionServer-->Region-->client
Rowkey:行鍵,和MySQL的主鍵一樣,不允許重復(fù),按照字典順序排列
Columnfamily:列簇
Column:列
Timestamp:時間戳,默認(rèn)顯示最新的時間戳
Version:版本號,記錄數(shù)據(jù)的版本
Cell:單元格,一個key?一個value
當(dāng)前題目:好程序員大數(shù)據(jù)學(xué)習(xí)路線Hbase總結(jié)
分享地址:http://jinyejixie.com/article6/iiecig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、微信小程序、標(biāo)簽優(yōu)化、全網(wǎng)營銷推廣、品牌網(wǎng)站建設(shè)、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)