HBase版本进化史及大版本特性
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版本。
HBase版本进化史及大版本特性的更多相关文章
- 【RMAN】RMAN跨版本恢复(下)--大版本异机恢复
[RMAN]RMAN跨版本恢复(下)--大版本异机恢复 BLOG文档结构图 ORACLE_SID=ORA1024G 关于10g的跨小版本恢复参考:http://blog.chinaunix.net/u ...
- 滴滴HBase大版本滚动升级之旅
桔妹导读:滴滴HBase团队日前完成了0.98版本 -> 1.4.8版本滚动升级,用户无感知.新版本为我们带来了丰富的新特性,在性能.稳定性与易用性方便也均有很大提升.我们将整个升级过程中面临的 ...
- Go 语言的下一个大版本:Go 2.0 被安排上了(全面兼容1.X,改进错误处理和泛型这两大主题)
今年 8 月 Go 开发团队公布了 Go 2.0 的设计草案,包括错误处理和泛型这两大主题.现在备受瞩目的 Go 2.0 又有了新动向 —— 昨日 Go 开发团队在其官方博客表示,Go 2 已经被安排 ...
- Elasticsearch 6.x版本全文检索学习之分布式特性介绍
1.Elasticsearch 6.x版本全文检索学习之分布式特性介绍. 1).Elasticsearch支持集群默认,是一个分布式系统,其好处主要有两个. a.增大系统容量,如内存.磁盘.使得es集 ...
- cocos3.2版本中的一些新特性
1.设置屏幕分辨率的大小,需要手动添加: 2.去掉了所有CC开头的命名: 3.所有的单例(以前是采用shared开头方法),全部改为getInstance(); 4.cocos3.x以上的版本支持C+ ...
- xmake v2.1.5版本正式发布,大量新特性更新
此版本带来了大量新特性更新,具体详见:xmake v2.1.5版本新特性介绍. 更多使用说明,请阅读:文档手册. 项目源码:Github, Gitee. 新特性 #83: 添加 add_csnippe ...
- CAP 2.4版本发布,支持版本隔离特性
前言 自从上次 CAP 2.3 版本发布 以来,已经过去了几个月的时间,这几个月比较忙,所以也没有怎么写博客,趁着2019年到来之际(现在应该是2019年开始的时候),CAP也发布了2018年的最后一 ...
- [51CTO]给您介绍Windows10各大版本之间区别
给您介绍Windows10各大版本之间区别 随着win10的不断普及和推广,越来越多的朋友想安装win10系统了,但是很多朋友不知道win10哪个版本好用,为了让大家能够更好的选择win10系统版本, ...
- 各大版本idea永久破解激活方法
文章转载自:https://www.jiweichengzhu.com/article/a45902a1d7284c6291fe32a4a199e65c 如果还有问题,加群交流:686430774(就 ...
随机推荐
- PAT甲级【2019年3月考题】——A1158 TelefraudDetection【25】
Telefraud(电信诈骗) remains a common and persistent problem in our society. In some cases, unsuspecting ...
- 用函数递归的方法解决古印度汉诺塔hanoi问题
问题源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规 ...
- MYSQL 使用存储过程批量更新表数据
功能:实现将表result_good_city_dzl中的字段lat更新为表 result_good_city_lh中的lat,条件是两个表中的id一样 即: update result_good_c ...
- undefined,null,var 0 = {},var s = '',的区别
undefined:不清楚变量的类型:var m; null:知道该变量是对象的引用,但是地址为空 var o = {};这是一个对象,有指向地址,但是值为空 var 0 = '';这是一个空的字符串
- luogu P4183 Cow at Large P (暴力吊打点分治)(内有时间复杂度证明)
题面 贝茜被农民们逼进了一个偏僻的农场.农场可视为一棵有N个结点的树,结点分别编号为 1,2,-,N .每个叶子结点都是出入口.开始时,每个出入口都可以放一个农民(也可以不放).每个时刻,贝茜和农民都 ...
- LOJ6682 梦中的数论
题目 不难发现我们要求的东西是\(\sum_{i=1}^n\binom{\sigma(i)}{2}=\sum_{i=1}^n\frac{\sigma(i)(\sigma(i)-1)}{2}=\frac ...
- C++判断字符是否是元音字母
写这个随笔的起因很奇怪. 我本来想找找C++有没有内置的函数(类似isalpha(), isdigit(), isalnum()之流)能直接完成这个功能,但是函数没发现,却发现很多博客都是逐个字符判断 ...
- js 在array的遍历操作中修改arry中元素数量 出现的一些奇特的操作
在js中array是属于复杂类型,在arr1=arr2得赋值操作中,arr1得到的值并不是arr2的value,而是一个指向引用.那么修改arr1的同时arr2读取的值也会同步变化,那么问题来了,上代 ...
- MyISAM和InnoDB引擎的区别
MySQL默认采用的是MyISAM. MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以 ...
- python--MySql(外键约束、多表查询(*****))
两张表之间的关系: 一对一(两张表可以合并成一张表) 一对一用的比较少,多对一对外键设置unique约束可以实现一对一 一对多(例如:每一个班主任会对应多个学生 , 而每个学生只能对应一个班主任) 多 ...