解決HDFS不支持單條記錄的快速查找和更新的問題。
存在億萬條記錄的數(shù)據(jù)庫,只有千萬或者百萬條記錄使用RDBMS更加合適
確保你的應(yīng)用不需要使用RDBMS的高級(jí)特性(第二索引,事務(wù)機(jī)制,高級(jí)查詢語言等)
足夠的硬件配置,即節(jié)點(diǎn)數(shù),HDFS在少于5個(gè)節(jié)點(diǎn)時(shí)并不會(huì)表現(xiàn)得很好,HBase也存在相同情況。
使用Java語言開發(fā)的NoSQL類型的分布式數(shù)據(jù)庫
不支持RDBMS的一些高級(jí)特性,如事務(wù)機(jī)制,第二索引,高級(jí)查詢語言等
支持線性和模塊化擴(kuò)展,可以通過在商用機(jī)器上增加RegionServer來線性提高性能
強(qiáng)讀寫一致性:適合高速計(jì)數(shù)聚合操作
自動(dòng)切分?jǐn)?shù)據(jù):分布式存儲(chǔ)數(shù)據(jù),隨著數(shù)據(jù)增長進(jìn)行自動(dòng)切片
RegionServer自動(dòng)失效備援
與HDFS集成
支持MapReduce執(zhí)行大規(guī)模并行操作
提供Java Client API
提供Thrift/REST API
針對(duì)大容量查詢優(yōu)化的塊緩存和Bloom Fliter
可視化管理界面
WAL的重新執(zhí)行速度緩慢
故障恢復(fù)緩慢且復(fù)雜
主壓縮會(huì)引起 I/O風(fēng)暴(大量的I/O操作)
概念 | 中文 | 解釋 | 備注 | 舉例 |
---|---|---|---|---|
Table | 表 | 由多行組成 | ... | |
Row | 行 | 由一個(gè)Key和一個(gè)或者多列組成 | ||
Column | 列 | 由列族和列限定符組成 | 列族:列限定符 ;行與行之間的列可以相差很多 | |
Column Family | 列族 | 物理上存儲(chǔ)多個(gè)列;為提高性能設(shè)計(jì)的; | 表格創(chuàng)建時(shí)需要置頂 | content |
Column Qualifier | 列限定符 | 列族中數(shù)據(jù)的索引 | 表格創(chuàng)建時(shí)不需要指定,可以在任何時(shí)候添加 | content:html |
Cell | 單元 | 由行、列族、列限定符、值和代表版本的時(shí)間戳組成 | ||
TimeStamp | 時(shí)間戳 | 用來表示數(shù)據(jù)的版本 | 可以使用系統(tǒng)時(shí)間也可以自己指定 |
Row Key | Time Stamp | ColumnFamily contents | ColumnFamily anchor | ColumnFamily people |
---|---|---|---|---|
"com.cnn.www" | t9 | anchor:cnnsi.com = "CNN" | ||
"com.cnn.www" | t8 | anchor:my.look.ca = "CNN.com" | ||
"com.cnn.www" | t6 | contents:html = "… | ||
"com.cnn.www" | t5 | contents:html = "…" | ||
"com.cnn.www" | t3 | contents:html = "… | ||
com.example.www | t5 | contents:html: "..." | people:author: "John Doe" |
說明:
表格格式不是唯一和最精確的表達(dá)方式,還可以用Json格式來表達(dá)
表格中的空白單元不會(huì)占用物理存儲(chǔ)空間,只是概念上存在
操作 | API | 注意點(diǎn) | 與版本的關(guān)系 |
---|---|---|---|
Get | Table.get | 返回指定行的屬性;Scan的第一行 | 若沒有指定版本,則返回版本值大(但可能不是最新的)的數(shù)據(jù);可以通過設(shè)置MaxVersion的值修改返回的數(shù)據(jù)條數(shù) |
Scan | Table.scan | 返回滿足條件的多行 | 同上 |
Put | Table.put | Key存在則更新Key不在則插入;通過 Table.put (寫緩存) 或者Table.batch (沒有寫緩存) | 默認(rèn)使用系統(tǒng)時(shí)間;只要key、column和version相同就可以實(shí)現(xiàn)覆蓋;插入時(shí)可以指定版本 |
Delete | Table.delete | 1.刪除指定列;2.刪除列的所有版本;3.刪除特定列族的所有列 | 1. 刪除操作不會(huì)立刻執(zhí)行,而是給該數(shù)據(jù)設(shè)置墓碑標(biāo)簽,在空間清理的時(shí)候再執(zhí)行死亡數(shù)據(jù)和墓碑的清除工作;2.通過在 hbase-site.xml.中hbase.hstore.time.to.purge.deletes屬性來設(shè)置TTL(生存時(shí)間) |
說明:
版本數(shù)的大值和最小值是可以指定的,并且會(huì)影響操作
版本(時(shí)間戳)是用來管控?cái)?shù)據(jù)的存活時(shí)間的,最好不要手動(dòng)設(shè)置
1)Delete操作會(huì)影響Put操作:原因在于Delete操作并不是立刻執(zhí)行,而是給死亡數(shù)據(jù)設(shè)置墓碑標(biāo)簽,那么如果當(dāng)你執(zhí)行了一個(gè)Delete版本低于等于T的操作,而后有插入Put了一個(gè)版本為T的數(shù)據(jù),此時(shí)新Put的數(shù)據(jù)也會(huì)被打上標(biāo)簽,那么會(huì)在系統(tǒng)的下一次清理工作中將打上標(biāo)簽的數(shù)據(jù)全部清理掉,執(zhí)行查詢時(shí)則會(huì)獲取不到新Put的數(shù)據(jù),如果你不手動(dòng)設(shè)置版本的話,版本采用系統(tǒng)默認(rèn)時(shí)間,則不會(huì)出現(xiàn)這種情況。
2)清理工作會(huì)影響查詢:創(chuàng)建三個(gè)版本為t1,t2,t3的單元,并且設(shè)置大版本數(shù)為2.所以當(dāng)我們查詢所有版本時(shí),只會(huì)返回t2和t3。但是當(dāng)你刪除版本t2和t3的時(shí)候,版本t1會(huì)重新出現(xiàn)。顯然,一旦重要精簡工作運(yùn)行之后,這樣的行為就不會(huì)再出現(xiàn)。
查看更多關(guān)于數(shù)據(jù)模型的信息
1)主從架構(gòu)
2)有三個(gè)組件:
組件名稱 | 組件主要功能 |
---|---|
HMaster | 負(fù)責(zé)Region的分配和DDL操作(創(chuàng)建,刪除表) |
HRegionServer | RegionServer負(fù)責(zé)數(shù)據(jù)的讀寫;和客戶端通訊 |
ZooKeeper | 維持集群的活動(dòng)狀態(tài) |
3)底層儲(chǔ)存是HDFS
格式:([table],[region start key],[region id])
info:regioninfo (序列化HRegionInfo實(shí)例)
info:server (包含此Region的RegionServer的server:端口)
info:serverstartcode (包含此Region的RegionServer的啟動(dòng)時(shí)間)
2)存儲(chǔ)位置:ZooKeeper中
分配Region:啟動(dòng)時(shí)分配,失效RegionServer上Region的再分配,Region切分時(shí)分配
監(jiān)控集群中的所有RegionServer,實(shí)現(xiàn)其負(fù)載均衡
DDL:Data Definition Language(表格的創(chuàng)建、刪除和更新-列族的更新)
管理namespace和table的元數(shù)據(jù)
權(quán)限管理(ACL)
HDFS上的垃圾文件回收
響應(yīng)client的讀寫請(qǐng)求,進(jìn)行I/O操作(直接繞過HMaster)
與HDFS交互,管理table數(shù)據(jù)
當(dāng)Region的大小到達(dá)閥值時(shí)切分Region
本小節(jié)可參考Region Server詳解
保證集群中有且只有一個(gè)HMaster為Active
存儲(chǔ)hbase:meta,即所有Region的位置信息
存儲(chǔ)HBase中表格的元數(shù)據(jù)信息
監(jiān)控RegionServer狀態(tài),將RS的上下線情況匯報(bào)給HMaster
ZooKeeper集群本身使用一致性協(xié)議(PAXOS協(xié)議)保證每個(gè)節(jié)點(diǎn)狀態(tài)的一致性
本小節(jié)可參考Region詳解
本小節(jié)可參考Region Server詳解中的首次讀寫流程
本小節(jié)可參考Region Server詳解中的寫流程
本小節(jié)可參考Region Server詳解中的讀流程
本小節(jié)可參考Region Server詳解中的次壓縮部分
本小節(jié)可參考Region Server詳解中的主壓縮部分
本小節(jié)可參考Region Server詳解中的WAL Replay
在0.96.x之前是存在-ROOT-和.META兩個(gè)表格來維持region的元數(shù)據(jù)
.META. region key (.META.,,1)
info:regioninfo (hbase:meta的序列化實(shí)例)
info:server (存儲(chǔ) hbase:meta的RegionServer的server:port)
info:serverstartcode (存儲(chǔ) hbase:meta的RegionServer的啟動(dòng)時(shí)間)
從ZooKeeper中讀取-ROOT- Table所在HRegionServer
從該HRegionServer中根據(jù)請(qǐng)求的TableName,RowKey讀取.META. Table所在HRegionServer
從該HRegionServer中讀取.META. Table的內(nèi)容而獲取此次請(qǐng)求需要訪問的HRegion所在的位置
訪問該HRegionSever獲取請(qǐng)求的數(shù)據(jù)
本小節(jié)可參考2.2.2.2 組件中的hbase:meta和2.3 相關(guān)流程中的首次讀寫流程進(jìn)行比較
1)0.96.x版本之前是參考Goole的BigTable設(shè)計(jì)的,從讀取數(shù)據(jù)請(qǐng)求發(fā)起到真正讀取到數(shù)據(jù)要經(jīng)過4個(gè)步驟,Google設(shè)計(jì)BigTable的目的在于它的數(shù)據(jù)量巨大,多層的schema結(jié)構(gòu)能夠存儲(chǔ)更多的Region,但是隨著而來的就是訪問性能的下降。
2)一般公司的數(shù)據(jù)量沒有Google那么大,所以去掉-ROOT-表,留下.META(hbase:meta)表,提高Region的大小,不僅可以滿足存儲(chǔ)需求,而且訪問性能得到提高。
0.94.x 之前HBase中的WAL實(shí)現(xiàn)稱為HLog,存儲(chǔ)在/hbase/.logs/目錄下
0.94.x之后更名為WAL,存儲(chǔ)在/hbase/WALs/目錄下
待續(xù)...
待續(xù)...
待續(xù)...
本小節(jié)可參考HBase部署入門指南
本小節(jié)可參考HBase Shell 練習(xí)、HBase Java API 練習(xí)、使用MapReduce操作HBase
待續(xù)...
待續(xù)...
待續(xù)...
待續(xù)部分將會(huì)后期不定期更新,敬請(qǐng)期待。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)站題目:HBase框架學(xué)習(xí)之路-創(chuàng)新互聯(lián)
本文來源:http://aaarwkj.com/article32/dohesc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)頁設(shè)計(jì)公司、電子商務(wù)、域名注冊(cè)、App開發(fā)、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容