HBase 2.0 新特性介紹
2018年4月30日HBase發布了2.0的Release版本。HBase的2.0版本承載了太多的Features,共包含4551個Issues,可以說是迄今最大的一個版本。
- A new Region assignment manager
AssignmentManager V2("AMv2")基於Procedure V2實現,能夠更快速的分配Region,維護的region狀態機存儲不再依賴於ZooKeeper,能夠更好的應對Region長時間RIT問題。
- Offheaping of Read/Write
減少對Heap內存的使用,改用Offheap區的內存,有效減少GC壓力
- In-Memory Compaction
重新設計了CompactingMemStore 替代 DefaultMemStore,CompactingMemStore中的數據達到一定大小以后,不是直接Flush成HDFS中的HFile文件,而是先Flush到內存中的一個不可改寫的Segment,這樣,內存中的多個Segments可以預先合並,當達到一定的大小以后,才Flush成HDFS中的HFile文件,這樣做的好處是希望有效降低Compaction所帶來的寫IO放大問題。
- NettyRpcServer
HBase2.0 開始默認使用NettyRpcServer
使用Netty替代HBase原生的RPC server,大大提升了HBaseRPC的吞吐能力,降低了延遲
- Async RPC Client
HBase2.0 Client不在是原來同步等待,而是利用異步RPC機制,大大提高Client端請求並發度,有效提高資源利用率,擴大吞吐。
- RegionServer Group
在HBase 2.0中我們可以將RegionServer划分到多個邏輯Group中,這樣可以提供多租戶的能力。
- Support for MOB
MOB特性使得HBase支持存儲小於10MB 的中等媒體對象數據,這些小對象文件采用獨立的HFile文件進行存儲,相比原來直接存儲大對象插入hbase,其讀寫效率更高;Mob數據存儲還是以hfile格式存儲,兼容HBase現有特性,如snapshot、bulkload、replication等。MOB數據文件有獨立的compaction和expire clean機制,穩定性更可控。
- 與1.x版本的兼容性
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新版本中包含了一些新的安全特性:
- 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版本。
