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