Hbase 是什么?

Hbase是一個(gè)開(kāi)源的,面向列的開(kāi)源數(shù)據(jù)庫(kù)?;贔ay Chang所撰寫(xiě)的Google論文“Bigtable:一個(gè)結(jié)構(gòu)化數(shù)據(jù)結(jié)構(gòu)的分布式存儲(chǔ)系統(tǒng)”

Hbase在hadoop之上提供了類(lèi)似于Bigtable的能力。Hbase是Apache的Hadoop項(xiàng)目的子項(xiàng)目。基于列的模式提供數(shù)據(jù)存儲(chǔ),非常適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)。

bigtable & hbase

Hbase是一個(gè)高可靠、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng)。利用Hbase技術(shù)可以在廉價(jià)PC Server上搭建大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群。

Hbase在hadoop生態(tài)中的位置

image.png

從Hadoop的生態(tài)系統(tǒng)圖中可以看到Hbase位于結(jié)構(gòu)化存儲(chǔ)層,Hadoop Hdfs為hbase提供高可靠性的底層存儲(chǔ)支持,Hadoop MapReduce為Hbase提供高性能的計(jì)算能力,Zookeeper為Hbase提供了穩(wěn)定服務(wù)和failover機(jī)制。

Hbase和hadoop各版本之間的適配關(guān)系
hbase在生態(tài)中的位置 hbase最新版本

  • √ 支持
  • × 不支持
  • ?未測(cè)試
hadoop & hbase 版本

Hbase各版本特性 摘自網(wǎng)絡(luò)

1.0
1.API的變化,比如放棄了客戶(hù)端幾個(gè)重要的API:( HTableInterface, HTable,HBaseAdmin),建議程序升級(jí)到新的API,老的PAI會(huì)在2.X中刪除。
2.不重啟regionserver的情況下讀取配置文件。
3.master節(jié)點(diǎn)也運(yùn)行regionserver。master與regionserver共享RPC端口。
4.global memstore和block cache大小的自動(dòng)調(diào)整。
5.Bucket cache改進(jìn)(data blocks的可用性和壓縮方面)
6.集群中一個(gè)新的可插拔式的終端來(lái)復(fù)制成自定義存儲(chǔ)。(A new pluggable replication endpoint to plug in to HBase’s inter-cluster replication to replicate to a custom data store)
7.新增truncate table 命令
8.新增meta table來(lái)替代zk來(lái)進(jìn)行更快的region分配(此功能默認(rèn)是關(guān)閉都)
9.廣泛的文檔改進(jìn)
10.[HBASE-12511] - namespace permissions - add support from table creation privilege in a namespace ‘C’
11.位Thrift Server添加Thrift-over-HTTPS 和 doAs支持(?)
12.bulkload復(fù)制表
13.使用前綴設(shè)置一個(gè)行的開(kāi)始和結(jié)束更加easy了。
14.腳本停止regionserver使用RPC
15.客戶(hù)端的原子性檢查和變化的支持。
16.自動(dòng)增加heap size的值如果開(kāi)始沒(méi)有指定大小的話(huà)。
17.regionserver協(xié)處理器終端。
18.添加了在一個(gè)regionserver上壓縮所有region的命令。
19.添加LongComparator過(guò)濾器
20.[shell]在線(xiàn)加載配置文件的改變。
21.REST server的一些修復(fù)。
22.需要zk3.4.X的支持。
23.需要hadoop2.x的支持
24.jdk1.7,不再支持1.6
25.默認(rèn)的端口號(hào)已經(jīng)由600xx改成了160XX
26.默認(rèn)使用hfile version3
27.Slab cache已經(jīng)被移除,使用bucket cache
28.默認(rèn)的regionserver堆內(nèi)存由1G改為jdk默認(rèn)的數(shù)值,一般為物理內(nèi)存的四分之一。
29.mapred包和類(lèi)已經(jīng)被廢除。
30.加入兩個(gè)新的模塊:hbase-annotations 和 hbase-rest

2.0
A new Region assignment manager
AssignmentManager V2(“AMv2”)基于Procedure V2實(shí)現(xiàn),能夠更快速的分配Region,維護(hù)的region狀態(tài)機(jī)存儲(chǔ)不再依賴(lài)于ZooKeeper,能夠更好的應(yīng)對(duì)Region長(zhǎng)時(shí)間RIT問(wèn)題。
Offheaping of Read/Write
減少對(duì)Heap內(nèi)存的使用,改用Offheap區(qū)的內(nèi)存,有效減少GC壓力
In-Memory Compaction
重新設(shè)計(jì)了CompactingMemStore 替代 DefaultMemStore,CompactingMemStore中的數(shù)據(jù)達(dá)到一定大小以后,不是直接Flush成HDFS中的HFile文件,而是先Flush到內(nèi)存中的一個(gè)不可改寫(xiě)的Segment,這樣,內(nèi)存中的多個(gè)Segments可以預(yù)先合并,當(dāng)達(dá)到一定的大小以后,才Flush成HDFS中的HFile文件,這樣做的好處是希望有效降低Compaction所帶來(lái)的寫(xiě)IO放大問(wèn)題。
NettyRpcServer
HBase2.0 開(kāi)始默認(rèn)使用NettyRpcServer
使用Netty替代HBase原生的RPC server,大大提升了HBaseRPC的吞吐能力,降低了延遲
Async RPC Client
HBase2.0 Client不在是原來(lái)同步等待,而是利用異步RPC機(jī)制,大大提高Client端請(qǐng)求并發(fā)度,有效提高資源利用率,擴(kuò)大吞吐。
RegionServer Group
在HBase 2.0中我們可以將RegionServer劃分到多個(gè)邏輯Group中,這樣可以提供多租戶(hù)的能力。
Support for MOB
MOB特性使得HBase支持存儲(chǔ)小于10MB 的中等媒體對(duì)象數(shù)據(jù),這些小對(duì)象文件采用獨(dú)立的HFile文件進(jìn)行存儲(chǔ),相比原來(lái)直接存儲(chǔ)大對(duì)象插入hbase,其讀寫(xiě)效率更高;Mob數(shù)據(jù)存儲(chǔ)還是以hfile格式存儲(chǔ),兼容HBase現(xiàn)有特性,如snapshot、bulkload、replication等。MOB數(shù)據(jù)文件有獨(dú)立的compaction和expire clean機(jī)制,穩(wěn)定性更可控。
與1.x版本的兼容性
1.x版本的Client可以訪(fǎng)問(wèn)2.0版本的集群,進(jìn)行正常的數(shù)據(jù)讀寫(xiě)操作。但從1.x版本不停服務(wù)的情況下滾動(dòng)升級(jí)到2.0版本是沒(méi)法做到的,1.x版本的coprocessor/Endpoint不做改動(dòng)的情況下也無(wú)法在2.0版本中正常使用。
備注:
1,結(jié)構(gòu)化數(shù)據(jù):可以用二維表結(jié)構(gòu)來(lái)邏輯表達(dá)實(shí)現(xiàn)的數(shù)據(jù),即行數(shù)據(jù),行數(shù)據(jù)中的每個(gè)字段都有具體切明確的含義。參考鏈接
2,非結(jié)構(gòu)化數(shù)據(jù):不方便用數(shù)據(jù)庫(kù)二維邏輯表來(lái)表現(xiàn)的數(shù)據(jù)即稱(chēng)為非結(jié)構(gòu)化數(shù)據(jù)。包括所有格式的辦公文檔、圖片、文本、XML、HTML、各類(lèi)報(bào)表、圖像和音視頻。參考鏈接
3,failover機(jī)制:故障(失效)轉(zhuǎn)移機(jī)制。是一種備份操作模式,當(dāng)主要組件異常時(shí),其功能轉(zhuǎn)移到備份組件。其要點(diǎn)在于有主有備,且主故障時(shí)備可啟用,并設(shè)置為主。例如Mysql的雙Master模式。

延展
1,failfast:快速失敗。盡可能發(fā)現(xiàn)系統(tǒng)中的錯(cuò)誤,是系統(tǒng)能夠按照事先設(shè)定好的錯(cuò)誤執(zhí)行流成執(zhí)行,對(duì)應(yīng)的方式是錯(cuò)誤容忍(fail-tolerant),例如:在java中線(xiàn)程A通過(guò)iterator遍歷集合,若該集合的內(nèi)容被其他線(xiàn)程所改變了,那么線(xiàn)程A在訪(fǎng)問(wèn)集合時(shí),就會(huì)拋出ConcurrentModificationException,即發(fā)現(xiàn)錯(cuò)誤執(zhí)行設(shè)定好的流程。參考鏈接
2,failback:失效自動(dòng)恢復(fù)。在簇網(wǎng)絡(luò)系統(tǒng)(有兩臺(tái)或多臺(tái)服務(wù)器互聯(lián)的網(wǎng)絡(luò))中,由于要對(duì)某臺(tái)服務(wù)進(jìn)行維修,需要網(wǎng)絡(luò)資源和服務(wù)暫時(shí)重定向到備用系統(tǒng),在此之后將網(wǎng)絡(luò)資源和服務(wù)恢復(fù)為由原始主機(jī)提供的過(guò)程稱(chēng)為自動(dòng)恢復(fù)。參考鏈接
3,failsafe:失效安全。即使在故障的時(shí)候也不會(huì)造成傷害或者減少傷害。維基百科上一個(gè)形象的例子是紅綠燈的“沖突監(jiān)測(cè)模塊”當(dāng)監(jiān)測(cè)到錯(cuò)誤或者沖突的信號(hào)時(shí)會(huì)將十字路口的紅綠燈變?yōu)殚W爍錯(cuò)誤模式,而不是全部顯示為綠燈。參考鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • HBase簡(jiǎn)介 對(duì)大數(shù)據(jù)領(lǐng)域有一定了解的小伙伴對(duì)HBase應(yīng)該不會(huì)陌生,HBase是Apache基金會(huì)開(kāi)源的一個(gè)分...
    端碗吹水閱讀 244評(píng)論 0 0
  • 1. hbase 的特點(diǎn)是什么? (1) Hbase一個(gè)分布式的基于列式存儲(chǔ)的數(shù)據(jù)庫(kù),基于Hadoop的hdfs存...
    Tim在路上閱讀 761評(píng)論 0 9
  • 一、HBase簡(jiǎn)介 1.1 HBase是什么 HBase是一個(gè)分布式的、面向列的開(kāi)源數(shù)據(jù)庫(kù),Hadoop 數(shù)據(jù)庫(kù)。...
    這一刻_776b閱讀 1,020評(píng)論 0 0
  • Hbase介紹 Hadoop生態(tài)系統(tǒng) spark已經(jīng)替代mahout hbase簡(jiǎn)介: 非關(guān)系型數(shù)據(jù)庫(kù)知識(shí)面擴(kuò)展c...
    文茶君閱讀 277評(píng)論 0 0
  • 一、HBASE概述 (1)概述 基于hadoop的數(shù)據(jù)庫(kù)工具 來(lái)源于google的一片論文BigTable 后來(lái)由...
    truezqx閱讀 521評(píng)論 0 4

友情鏈接更多精彩內(nèi)容