2013年10月19日apache官方发布了hbase0.96.0版本,共提交了2134个patch,与官方声称的0.94是性能提升版不同,0.96在可用性上做了很大努力,大幅提升了稳定性、可操作性以及伸缩性。下面介绍下0.96的主要新特性:
ReducedMean-Time-To-Recovery (MTTR)
大量优化操作使regionservercrash对集群影响从分钟级降到秒级。改进主要包括以下几个方面:
HBASE-5844和HBASE-5926:删除zookeeper上RegionServer/Master对应的znode,这样就省的等到znode30s超时才发现对应的RS/Master挂了。
HBASE-7006:DistributedLog Replay,就是直接从HDFS上读取宕机的WAL日志,直接向新分配的RS进行LogReplay,而不是创建临时文件recovered.edits然后再进行LogReplay
HBASE-7213/8631:HBase的META表中所有的Region所在的RegionServer将会有两个WAL,一个是普通的,一个专门给META表对应的Region用。这样在进行recovery的时候可以先恢复META表。
负载均衡策略
0.96之前版本的balance策略依据各regionserver管理的region数目,当各服务器管理的region数量超过一定差值后触发balance
0.96使用的是StochasticLoadBalancer,综合考虑数据本地化比例、storefile文件大小、memstore大小、以及表在各服务器上的region数量来做balance,这使得能更均衡的利用各服务器的资源。
Block压缩方式Prefix tree
说明:
1.作者没有指出单条KV的平均大小
2.NONE指的是不启用DataBlockEncode;PREFIX指的是PREFIXEncode算法;TRIE才是前缀树block压缩算法。
3.前缀树压缩算法在不同的blocksize下查找性能都很稳定,而NONE和PREFIX由于是用遍历的方式查找数据,所以查找性能随着blocksize直线下降。对于我们默认的64K的block大小,性能相差40+倍
4.NONE比PREFIX算法性能好,是由于PREFIX算法需要解压
Compaction策略
compaction的优化目标是执行Compaction操作能合并越多的文件越好,如果合并同样多的文件产生的IO越小越好,这样select出来的列表才是最优的。默认的Compaction算法从RatioBasedCompactionPolicy改为了ExploringCompactionPolicy。
主要不同在于:
RatioBasedCompactionPolicy是简单的从头到尾遍历StoreFile列表,遇到一个符合Ratio条件的序列就选定执行compaction。对于典型的不断flushmemstore形成StoreFile的场景是合适的,但是对于bulk-loaded是不合适的,会陷入局部最优。
而ExploringCompactionPolicy则是从头到尾遍历的同时记录下当前最优,然后从中选择一个全局最优列表。
protobufrpc
所有的请求都使用protobuf重写,方便不同版本间兼容、快速修复bug、添加新特性等操作。
版本升级不需要停集群
由于96使用protobuf重写了rpc组件,使得96之后做跨大版本升级不再需要重启集群。
支持多集群间不同版本相互通信
支持master/slavereplication 和多集群跨版本的访问。
Snapshots
HBaseSnapshots allow you to take a snapshot of a table without too muchimpact on Region Servers. Snapshot, Clone and restore operationsdon't involve data copying. Also, Exporting the snapshot to anothercluster doesn't have impact on the Region Servers.
参考
http://blog.cloudera.com/blog/2012/06/the-singularity-hbase-compatibility-and-extensibility
http://www.slideshare.net/ydn/hadoop-meetup-hug-october-2013-hue-the-ui-for-apache-hadoop
http://zjushch.iteye.com/blog/1843793
http://blog.csdn.net/yangbutao/article/details/12911487
http://www.slideshare.net/jaxlondon2012/intro-to-hbase-lars-george
https://blogs.apache.org/hbase/entry/hbase_0_96_0_released
http://hortonworks.com/blog/announcing-apache-hbase-0-96/
http://yanbohappy.sinaapp.com/?p=434