HBase 2.0 新特性介紹
2018年4月30日HBase發佈了2.0的Release版本。HBase的2.0版本承載了太多的Features,共包含4551個Issues,能夠說是迄今最大的一個版本。
shell
- A new Region assignment manager
AssignmentManager V2("AMv2")基於Procedure V2實現,可以更快速的分配Region,維護的region狀態機存儲再也不依賴於ZooKeeper,可以更好的應對Region長時間RIT問題。api
減小對Heap內存的使用,改用Offheap區的內存,有效減小GC壓力安全
從新設計了CompactingMemStore 替代 DefaultMemStore,CompactingMemStore中的數據達到必定大小之後,不是直接Flush成HDFS中的HFile文件,而是先Flush到內存中的一個不可改寫的Segment,這樣,內存中的多個Segments能夠預先合併,當達到必定的大小之後,才Flush成HDFS中的HFile文件,這樣作的好處是但願有效下降Compaction所帶來的寫IO放大問題。服務器
HBase2.0 開始默認使用NettyRpcServer
使用Netty替代HBase原生的RPC server,大大提高了HBaseRPC的吞吐能力,下降了延遲併發
HBase2.0 Client不在是原來同步等待,而是利用異步RPC機制,大大提升Client端請求併發度,有效提升資源利用率,擴大吞吐。異步
在HBase 2.0中咱們能夠將RegionServer劃分到多個邏輯Group中,這樣能夠提供多租戶的能力。oop
MOB特性使得HBase支持存儲小於10MB 的中等媒體對象數據,這些小對象文件採用獨立的HFile文件進行存儲,相比原來直接存儲大對象插入hbase,其讀寫效率更高;Mob數據存儲仍是以hfile格式存儲,兼容HBase現有特性,如snapshot、bulkload、replication等。MOB數據文件有獨立的compaction和expire clean機制,穩定性更可控。性能
1.x版本的Client能夠訪問2.0版本的集羣,進行正常的數據讀寫操做。但從1.x版本不停服務的狀況下滾動升級到2.0版本是無法作到的,1.x版本的coprocessor/Endpoint不作改動的狀況下也沒法在2.0版本中正常使用。加密
HBase1.0 新特性介紹
- API的變化,好比放棄了客戶端幾個重要的API:( HTableInterface, HTable,HBaseAdmin),建議程序升級到新的API,老的PAI會在2.X中刪除。
- 不重啓regionserver的狀況下讀取配置文件。
- master節點也運行regionserver。master與regionserver共享RPC端口。
- global memstore和block cache大小的自動調整。
- Bucket cache改進(data blocks的可用性和壓縮方面)
- 集羣中一個新的可插拔式的終端來複製成自定義存儲。(A new pluggable replication endpoint to plug in to HBase's inter-cluster replication to replicate to a custom data store)
- 新增truncate table 命令
- 新增meta table來替代zk來進行更快的region分配(此功能默認是關閉都)
- 普遍的文檔改進
- [HBASE-12511] - namespace permissions - add support from table creation privilege in a namespace 'C'
- 位Thrift Server添加Thrift-over-HTTPS 和 doAs支持(?)
- bulkload複製表
- 使用前綴設置一個行的開始和結束更加easy了。
- 腳本中止regionserver使用RPC
- 客戶端的原子性檢查和變化的支持。
- 自動增長heap size的值若是開始沒有指定大小的話。
- regionserver協處理器終端。
- 添加了在一個regionserver上壓縮全部region的命令。
- 添加LongComparator過濾器
- [shell]在線加載配置文件的改變。
- REST server的一些修復。
- 須要zk3.4.X的支持。
- 須要hadoop2.x的支持
- jdk1.7,再也不支持1.6
- 默認的端口號已經由600xx改爲了160XX
- 默認使用hfile version3
- Slab cache已經被移除,使用bucket cache
- 默認的regionserver堆內存由1G改成jdk默認的數值,通常爲物理內存的四分之一。
- mapred包和類已經被廢除。
- 加入兩個新的模塊:hbase-annotations 和 hbase-rest
HBase 0.98 新特性介紹
HBase 0.98新版本中包含了一些新的安全特性:spa
- cell可見性標籤
- cell ACL以及透明化的服務器端加密等
- 預寫日誌線程模型在高負載狀況下可提供了更高的吞吐量
- 反向掃描器
- 快照文件MapReduce
- Stripe Compaction
HBase版本進化史
2006年至今,HBase經歷了10多年的演化迭代:
- 2006年12月,Google發佈了論文《Bigtable: A Distributed Storage System for Structured Data》,基於該文論的設計思想,HBase原型實現後來才得以誕生。
- 2007年02月,做爲Hadoop項目的分支,初版HBase誕生。
- 2007年10月,第一個可用的HBase版(Hadoop0.15.0)誕生。
- 2008年01月,Hadoop成爲Apache的頂級項目,HBase爲其子項目。
- 2008年10月,HBase 0.18.0版本發佈。
- 2009年01月,HBase 0.19.0版本發佈。
- 2009年10月,HBase 0.20.0版本發佈。
- 2010年05月,HBase晉升爲Apache的頂級項目。
- 2010年06月,HBase 首個開發者版本(0.89.20100621)發佈。
- 2011年01月,Hbase 首個可持續的,穩定版(0.90.0)版本發佈。
- 2012年01月,Hbase 0.92.0版本發佈,支持事物(coprocessor)和安全(security)做爲其版本標籤。
- 2012年05月,HBase 0.94.0版本發佈,性能做爲其版本標籤。
- 2013年01月,HBase 0.96.0版本發佈。
- 2014年02月,0.98.0版本發佈,該版本也是不少國內公司最先使用的版本。
- 2015年02月,HBase 1.0.0版本發佈。
- 2016年02月,HBase 1.2.0版本發佈。
- 2017年05月,HBase 1.2.6版本發佈,做爲其1.2版本的穩定版標籤。
- 2018年04月,HBase 期待已久的2.0.0版本正式發佈。
- 2018年06月,Hbase Hbase2.0.1版本發佈。
HBase0.98.0、HBase1.2.6版本、HBase1.4+版本是目前不少互聯網公司主流版本,系統穩定性、可靠性等都經受了不少考驗。另外,對於想緊跟社區步伐,體驗新功能的同窗,可使用最新的2.0版本。