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版本进化史及大版本特性的更多相关文章

  1. 【RMAN】RMAN跨版本恢复(下)--大版本异机恢复

    [RMAN]RMAN跨版本恢复(下)--大版本异机恢复 BLOG文档结构图 ORACLE_SID=ORA1024G 关于10g的跨小版本恢复参考:http://blog.chinaunix.net/u ...

  2. 滴滴HBase大版本滚动升级之旅

    桔妹导读:滴滴HBase团队日前完成了0.98版本 -> 1.4.8版本滚动升级,用户无感知.新版本为我们带来了丰富的新特性,在性能.稳定性与易用性方便也均有很大提升.我们将整个升级过程中面临的 ...

  3. Go 语言的下一个大版本:Go 2.0 被安排上了(全面兼容1.X,改进错误处理和泛型这两大主题)

    今年 8 月 Go 开发团队公布了 Go 2.0 的设计草案,包括错误处理和泛型这两大主题.现在备受瞩目的 Go 2.0 又有了新动向 —— 昨日 Go 开发团队在其官方博客表示,Go 2 已经被安排 ...

  4. Elasticsearch 6.x版本全文检索学习之分布式特性介绍

    1.Elasticsearch 6.x版本全文检索学习之分布式特性介绍. 1).Elasticsearch支持集群默认,是一个分布式系统,其好处主要有两个. a.增大系统容量,如内存.磁盘.使得es集 ...

  5. cocos3.2版本中的一些新特性

    1.设置屏幕分辨率的大小,需要手动添加: 2.去掉了所有CC开头的命名: 3.所有的单例(以前是采用shared开头方法),全部改为getInstance(); 4.cocos3.x以上的版本支持C+ ...

  6. xmake v2.1.5版本正式发布,大量新特性更新

    此版本带来了大量新特性更新,具体详见:xmake v2.1.5版本新特性介绍. 更多使用说明,请阅读:文档手册. 项目源码:Github, Gitee. 新特性 #83: 添加 add_csnippe ...

  7. CAP 2.4版本发布,支持版本隔离特性

    前言 自从上次 CAP 2.3 版本发布 以来,已经过去了几个月的时间,这几个月比较忙,所以也没有怎么写博客,趁着2019年到来之际(现在应该是2019年开始的时候),CAP也发布了2018年的最后一 ...

  8. [51CTO]给您介绍Windows10各大版本之间区别

    给您介绍Windows10各大版本之间区别 随着win10的不断普及和推广,越来越多的朋友想安装win10系统了,但是很多朋友不知道win10哪个版本好用,为了让大家能够更好的选择win10系统版本, ...

  9. 各大版本idea永久破解激活方法

    文章转载自:https://www.jiweichengzhu.com/article/a45902a1d7284c6291fe32a4a199e65c 如果还有问题,加群交流:686430774(就 ...

随机推荐

  1. lerna----一个强大的专注组件库的管理工具

    最近在看关于lerna的资料,没有中文版api.简书上有一篇文章半英半汉,可以撸来看看. http://www.jianshu.com/p/63ec67445b0f

  2. Cocos2d-x之UI控件简介

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 在Cocos2d-x中提供了一种UI控件,UI控件是指用户交互界面的操作部件.UI控件可以是Button(按钮),CheckBox(选择框 ...

  3. qt ui界面控件布局设计

    1.布局控件简介: 水平布局,里面的控件将水平展示,布局器里面的控件大小若没有固定,其大小将随着布局的大小而自动拉伸.可以通过设置其左(layoutLeftMargin).上(layoutTopMar ...

  4. luoguP1084 疫情控制(题解)(搜索+贪心)

    luoguP1084 疫情控制 题目 #include<iostream> #include<cstdlib> #include<cstdio> #include& ...

  5. [fw]PAGE_SIZE & PAGE_SHIFT & _AC()

    PAGE_SIZE & PAGE_SHIFT & _AC() 在大多系统下,PAGE_SIZE被定义为 4k 大小,即 4096 字节. 在 x86 系统里,PAGE_SIZE 和 P ...

  6. android sdcard保存文件

  7. IntelliJ Idea 环境搭建

    安装IntelliJ Idea 可以去官网下载: https://www.jetbrains.com/idea/download/#section=windows 选择Ultimate.一路下一步安装 ...

  8. Scratch 少儿编程

    作者:小码王在线少儿编程链接:https://www.zhihu.com/question/23418685/answer/762725469来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...

  9. ivew-admin 点击预览图片

    1. ivew-admin table { title: '产品图片', key: 'avatar1', align: 'center', render: (h, params) => { re ...

  10. Bootstrap 警告框

    <div class="panel panel-primary"> <div class="panel-heading"> <h3 ...