HBase 2.0版本正式发布

举报
且听风吟 发表于 2019/11/10 10:03:36 2019/11/10
【摘要】 Apache HBase PMC主席Michael Stack在Mail List中宣布了HBase 2.0版本已正式Release的消息,该版本可以说是迄今为止最大的一个版本,共包含了4551个Issues(截止这篇文章写作之时,HBase社区共有20510个Issues,也就是说,这些Issues***有22%的问题单被包含在2.0版本中):

640?tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

这距离HBase 1.0版本的发布已经过去了3年多的时间:640?tp=webp&wxfrom=5&wx_lazy=1&wx_co=1640?tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

在1.0版本正式发布之前,我们看看几个比较大的版本相关信息:

- 0.90.0版本于2011年1月19日发布,共包含1028个Issues。

- 0.92.0版本于2012年1月23日发布,共包含695个Issues。

- 0.94.0版本于2012年5月14日发布,共包含423个Issues。

- 0.96.0版本于2013年10月19日发布,共包含290个Issues。

- 0.98.0版本于2014年2月16日发布,共包含1307个Issues。


而在2.0版本之前,共有如下几个Minor Releases:

- 1.1.0版本于2015年5月14日发布,共包含440个Issues

- 1.2.0版本于2016年2月22日发布,共包含647个Issues

- 1.3.0版本于2017年1月16日发布,共包含895个Issues

- 1.4.0版本于2017年12月18日发布,共包含665个Issues


对比于1.0版本,只能说2.0版本中承载了太多的改动。一个版本承载了太多的Features也许是一件好事,但从质量上说,在短期上可能会带来一点担忧。


关于HBase版本定义


HBase从1.0.0版本开始,在版本定义上正式遵循了Semantic Versioning规范:


一个版本号,由三部分组成: MAJOR.MINOR.PATCH,关于这三部分数字的变更,定义如下:

- MAJOR版本号变更:意味着可能带来不兼容的API变更。

- MINOR版本号变更:主要是增加了一些功能特性,但API接口却是向前兼容的。

- PATCH版本号变更:主要是针对Bug修复。


按照该定义,我们举例说明如下:

- 从1.0.0到2.0.0版本,可能带来一些不兼容的API变更。

- 从1.0.0到1.1.0版本,意味着合入了一些新的Feature,但API接口却是兼容的。

- 从1.0.0版本到1.0.1版本,只是在1.0.0版本基础之上,做了一些Bug修复,但没有合入新的Feature。


Semantic Versioning的相关定义,仅仅涉及对外API接口。事实上,HBase的接口可能包含了两部分,一部分是供内部使用的Internal Interfaces,另外一部分是对外发布的External Interfaces。Coprocessors, MapReduce以及Spark所依赖的,是一些Internal Interfaces,如果这些接口发生了变更如何体现在版本号的变更中?另外,更广泛的兼容性,应该还要包含源文件/二进制Jar包文件级别的兼容性,序列化/反序列化级别的兼容性,IPC消息的兼容性,Protobufs相关的接口变更等等。因此,HBase Semantic Versioning需要更细节的一些定义,这些最新的定义,请参考HBase官方资料中的"HBase version number and compatibility"章节。

2.0关键特性

关于2.0版本所包含的一些关键特性,在以前的很多文章中都已经揭示过,这里再简单阐述一下:


New region assignment manager

基于Procedure V2的AssignmentManager V2,旨在能够更快速的分配Region,状态机的存储不再依赖于ZooKeeper,能够更好的应对Region长时间RIT问题。


In-memory flush and compaction

MemStore中的数据达到一定大小以后,不是直接Flush成HDFS中的HFile文件,而是先Flush到内存中的一个不可改写的Segment,这样,内存中的多个Segments可以预先合并,当达到一定的大小以后,才Flush成HDFS中的HFile文件,这样做的好处是希望有效降低Compaction所带来的写IO放大问题。

在《一条数据的HBase之旅,简明HBase入门教程-Flush与Compaction》一文中,详细介绍了该特性。


Off-heap read and write

减少对Heap内存的使用,改用Offheap区的内存,有效减少GC压力。


Async RPC Client

利用异步RPC机制,提升客户请求并发度,提升Client端线程资源利用率。


RegionServer Group

将RegionServer划分成多个逻辑Group,提供多租户能力。


MOB

让HBase更好的支持数KB甚至数MB级别的小对象存储,这些小对象采用独立的HFile文件进行存储,而且不参与普通的Compaction,这样不会因为小对象数据使得Compaction的写IO放大问题进一步恶化。

与1.x版本的兼容性

1.x版本的Client可以访问2.0版本的集群,进行正常的数据读写操作。但从1.x版本不停服务的情况下滚动升级到2.0版本是没法做到的,1.x版本的coprocessor/Endpoint不做改动的情况下也无法在2.0版本中正常使用。


对比HBaseCon Asia 2017大会上Stack的演讲内容,似乎有了一些出入,这说明2.0版本为了发布还是不得不做了一些割舍。

附:邮件原文


以下是stack关于2.0版本发布的原始邮件内容:

Fromstack <st...@apache.org>

Subject[ANNOUNCE] Apache HBase 2.0.0 is now available for download

DateMon, 30 Apr 2018 23:27:24 GMT

The HBase team is happy to announce the immediate availability of Apache HBase 2.0.0.


Apache HBase™ is the Hadoop database, a distributed, scalable, big data

store. To learn more about HBase, see https://hbase.apache.org/.


HBase 2.0.0 is our second major release, the first release off the HBase

2.0 line.


Please review 'Upgrading from 1.x to 2.x' in the bundled HBase 2.0.0

Reference Guide before installing or upgrading for a list of notable

incompatibilities, major changes, and features including a new Region assignment manager ("AMv2"), a means for configuring the read and/or write path to run off-heap, and an optional In-Memory Compaction ("IMC", A.K.A "Accordion") facility.


According to our adopted Semantic Versioning guidelines[2], we allowed ourselves make breaking changes in this major version release. For example, Coprocessors will need to be recast to fit more constrained APIs and rolling upgrade of an hbase-1.x install to hbase-2.x without downtime is (currently) not possible. That said, a bunch of effort has been expended mitigating the differences; a hbase-1.x client can perform DML against an hbase-2 cluster. A bundled compatibility report showing difference from 1.2.6 may be of help[3].


For the complete list of fixes and improvements, see the included `CHANGES.md` (or online at [1]) and `RELEASENOTES.md`.


Download through an ASF mirror near you:

  http://www.apache.org/dyn/closer.lua/hbase/2.0.0/


The relevant checksums files are available at:

   https://www.apache.org/dist/hbase/2.0.0/hbase-2.0.0-src.tar.gz.sha512

   https://www.apache.org/dist/hbase/2.0.0/hbase-2.0.0-bin.tar.gz.sha512


Project member signature keys can be found at

  https://www.apache.org/dist/hbase/KEYS


PGP signatures are available at:

   https://www.apache.org/dist/hbase/2.0.0/hbase-2.0.0-src.tar.gz.asc

   https://www.apache.org/dist/hbase/2.0.0/hbase-2.0.0-bin.tar.gz.asc


For instructions on verifying ASF release downloads, please see

    https://www.apache.org/dyn/closer.cgi#verify


Question, comments, and problems are always welcome at:

dev@hbase.apache.org.

Thanks to all who contributed and made this release possible.


Cheers,

The HBase Dev Team


1. https://s.apache.org/hbase-2.0.0-JIRA-changes

2. http://hbase.apache.org/2.0/book.html#hbase.versioning.post10

3. http://apache.mirrors.tds.net/hbase/2.0.0/compatibiliity_report_1.2.6vs2.0.0.html


精彩文章推荐

《一条数据的HBase之旅》系列连载文章:

简明HBase入门教程-开篇

简明HBase入门教程-Write全流程

简明HBase入门教程-Flush与Compaction

图数据库相关文章:

「一起学图数据库」系列之图数据库概述

「一起学图数据库」系列之图数据库与传统数据库的对比分析

从扩线查询能力分析图数据库Titan的设计改进点

《OpenTSDB技术原理》系列连载文章:

OpenTSDB原理系列-元数据模型

OpenTSDB原理系列-TSDB数据表设计

OpenTSDB原理系列-线程模型

OpenTSDB原理系列-读取流程

其它精彩文章:

从HBase中移除WAL?3D XPoint技术带来的变革

号称十倍性能于Cassandra的ScyllaDB,究竟祭出了哪些技术"利器"?

NewSQL是否是NoSQL的取代者?

阅读开源项目源码的建议姿势


本文转载自微信公众号【Nosql漫谈】。

原文链接:https://mp.weixin.qq.com/s/qkG7tBufvvh21Jp8Q465rw

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。