HBase版本

数据库 Quarterback 39℃ 0评论

本文主要讨论这几个问题:

  1. 关于HBase版本及兼容性
  2. HBase各版本特性

1. 关于HBase版本及兼容性

97805812
hbase-0.18.0, 2018-09-21
hbase-0.20.5, 2010-06-19
hbase-0.89.20100621 – hbase-0.99.x, 2010-06-25 – 2015
hbase-1.0.0-hbase-1.4.10, 2015.2 – 2019.06
hbase-2.0.0-hbase-2.2.1, 2018.4-2019.09
  • 从0.20大跳跃到0.89,主要是之前hbase版本都是追随hadoop主版本,由于hadoop的版本更新放缓,hbase则更加活跃发布版本更频繁,并且hadoop已有多个分支,hbase也需要兼容多个分支,因此hbase不再需要与hadoop的版本更新保持一致。另外,hbase的实现以及基本实现bigtable中功能,更接近”1.0″,应该赋予一个更接近1.0的版本
  • 0.94.x版本是HBase历史上第一个相对稳定的生产线版本,国内最早使用HBase的互联网公司(小米、阿里、网易等)都曾在生产线上大规模使用0.94.x作为服务版本,即使在当前,依然还有很多公司的业务运行在0.94.x版本
  • 之后的2年时间,官方在0.94版本之后发布了两个重要版本:0.96版本和0.98版本,0.96版本实现了很多重大的功能改进,比如BucketCache、MSLAB、MTTR优化等,但也因为功能太多而引入了很多bug,导致生产线上真正投入使用的并不多。直至0.98版本发布。0.98版本修复了大量的bug,大大提升了系统可用性以及稳定性。不得不说,0.98版本是目前业界公认的HBase历史上最稳定的版本之一,也是目前生产线上使用最广泛的版本之一。
  • hbase-1.0.0起的版本,版本号比较规律,即采取所谓语义版本(semantic versioning)的方式,版本号采用:Major.Minor.Patch
    • Major为大版本,意味着可能带来不兼容的API变更。
    • 其中中间的Minor,主要是增加了一些功能特性,但API接口扔是向前兼容的。
    • 最后的Patch主要是针对bug修复,原则上越大越稳定,因为小版本并不会增加新特性,而是修正一些代码的漏洞和问题
  • 在1.0的基础上官方先后发布了1.1.x、1.2.x、1.3.x以及1.4.x等多个版本。因为稳定性的原因,并不建议在生产线上使用1.0.0~1.1.2中间的版本。目前,HBase社区推荐使用的稳定版本为1.4.10。
  • hbase-2.0.0版本是迄今包含改动最多的一个版本,2.x包含的核心功能特别多,包括:大幅度减小GC影响的offheap read path/write path工作,极大提升系统稳定性的Procedure V2框架,支持多租户隔离的RegionServer Group功能,支持大对象存储的MOB功能等。
  • 在升级时,不能跨越Major版本进行跳跃式升级,比如要从0.98.x升级到2.x,必须先从0.98.x升级到1.2.x,然后从1.2.x升级到2.x
  • HBase自身兼容性维度主要考虑:
    • Client-Server 线协议兼容性:
      • 允许不同步更新客户端和服务器。
      • 我们只能允许先升级服务器。也就是说,服务器将向后兼容旧客户端,这样新的 API 就可以使用。
      • 示例:用户应该能够使用旧客户端连接到升级的群集。
    • Server-Server 协议兼容性:
      • 不同版本的服务器可以共存于同一个群集中。
      • 服务器之间的有线协议是兼容的。
      • 分布式任务的工作人员(如复制和日志拆分)可以共存于同一个群集中。
      • 相关协议(如使用ZK进行协调)也不会改变。
      • 示例:用户可以执行滚动升级。
    • 文件格式兼容性:
      • 支持文件格式向前和向后兼容
      • 示例:文件、ZK 编码、目录布局自动升级为 HBase 升级的一部分。用户可以降级到旧版本,并且一切都将继续工作。
    • 客户端 API 兼容性:
      • 允许更改或删除现有的客户端 API。
      • 在我们更改/删除主要版本之前,API 需要被弃用。
      • 修补程序(patch)版本中提供的 API 将在所有后续修补程序版本中提供。但是,可能会添加新的 API,这些 API 在以前的修补程序版本中将不可用。
      • 修补程序版本中引入的新 API 只能以源代码兼容的方式添加:即实现公共 API 的代码将继续编译。示例:使用新废用的 API 的用户不需要使用 HBase API 调用修改应用程序代码,直到下一个主要版本。*
    • 客户端二进制兼容性:
      • 写入给定修补程序版本中提供的 API 的客户端代码可以运行不变(不需要重新编译),以抵补新的 jar 后续补丁版本。
      • 写入给定修补程序版本中提供的 API 的客户端代码可能无法针对早期修补程序版本中的旧 jar 运行。示例:旧编译的客户端代码将在 jar 中保持不变。
      • 如果客户端实现 HBase 接口,则可能需要重新编译升级到较新的次要(minor)版本。
    • 服务器端有限的 API 兼容性(取自 Hadoop):
      • 内部API被标记为“稳定(Stable)”,“正在发展(Evolving)”或“不稳定(Unstable)”。
      • 这意味着协处理器和插件(可插入类,包括复制)的二进制兼容性,只要这些只使用标记的接口/类。
      • 例如:旧编译的协处理器,过滤器或插件代码将在新 jar 中保持不变。
    • 相关性(依赖)兼容性:
      • HBase 的升级不需要依赖项目的兼容升级,包括运行 Java 时。
      • 示例:Hadoop 的升级不会使我们所做的任何兼容性保证失效。
    • 操作兼容性:
      • 度量标准的更改
      • 服务的行为变化
      • 通过 /jmx/ 端点公开的 JMX API
  • 以下是各维度兼容性矩阵列表:
    Major Minor Patch
    客户端 – 服务器协议兼容性 不兼容 兼容 兼容
    服务器 – 服务器协议兼容性 不兼容 兼容 兼容
    文件格式兼容性 不兼容 兼容 兼容
    客户端API兼容性 不兼容 兼容 兼容
    客户端二进制兼容性 不兼容 不兼容 兼容
    服务器端有限的API兼容性
    稳定性(Stable) 不兼容 兼容 兼容
    发展性(Evolving) 不兼容 不兼容 兼容
    不稳定性(Unstable) 不兼容 不兼容 不兼容
    相关性(依赖)兼容性 不兼容 兼容 兼容
    操作兼容性 不兼容 不兼容 兼容
  • HBase各版本对JDK的兼容性:
HBase 版本
JDK7 JDK8 JDK9(Non-LTS) JDK10(Non-LTS) JDK11
2.1+ 不支持 支持 不支持(HBASE-20264 不支持(HBASE-20264 不支持(HBASE-21110
2.0 不支持 支持 不支持(HBASE-20264
不支持(HBASE-20264
不支持(HBASE-21110
1.3+ 支持 支持 不支持(HBASE-20264 不支持(HBASE-20264
不支持(HBASE-21110
1.2 支持 支持 不支持(HBASE-20264
不支持(HBASE-20264
不支持(HBASE-21110
  • HBase各版本对Hadoop的兼容性:
  HBase-1.2.x HBase-1.3.x
HBase-1.4.x
HBase-1.5.x
HBase-2.1.x
HBase-2.2.x
Hadoop-2.4.x 支持 支持
不支持
不支持
不支持
不支持
Hadoop-2.5.x
支持 支持
不支持
不支持
不支持
不支持
Hadoop-2.6.0
不支持 不支持
不支持
不支持
不支持
不支持
Hadoop-2.6.1+
支持
支持
不支持
不支持
不支持
不支持
Hadoop-2.7.0
不支持
不支持
不支持
不支持
不支持
不支持
Hadoop-2.7.1+
不支持
支持
支持
不支持
支持
不支持
Hadoop-2.8.[0-2]
不支持
不支持
不支持
不支持
不支持
不支持
Hadoop-2.8.[3-4]
未测试
未测试 未测试
不支持
支持
不支持
Hadoop-2.8.5+
不支持
未测试
未测试
支持
支持
支持
Hadoop-2.9.[0-1]
不支持
不支持
不支持
不支持
不支持
不支持
Hadoop-2.9.2+
不支持
未测试
未测试
支持
未测试
支持
Hadoop-3.0.[0-2]
不支持
不支持
不支持
不支持
不支持
不支持
Hadoop-3.0.3+
不支持
不支持
不支持
不支持
支持
不支持
Hadoop-3.1.0
不支持
不支持
不支持
不支持
不支持
不支持
Hadoop-3.1.1+
不支持
不支持
不支持
不支持
支持
支持
HBase-1.2.x HBase-1.3.x HBase-1.5.x HBase-2.0.x HBase-2.1.x
Hadoop-2.4.x S S X X X
Hadoop-2.5.x S S X X X
Hadoop-2.6.0 X X X X X
Hadoop-2.6.1+ S S X S X
Hadoop-2.7.0 X X X X X
Hadoop-2.7.1+ S S S S S
Hadoop-2.8.[0-1] X X X X X
Hadoop-2.8.2 NT NT NT NT NT
Hadoop-2.8.3+ NT NT NT S S
Hadoop-2.9.0 X X X X X
Hadoop-2.9.1+ NT NT NT NT NT
Hadoop-3.0.x X X X X X
Hadoop-3.1.0 X X X X X

2. HBase各版本特性

  • HBase2.x版本的一些主要特性:


/* 本文属于原创文章,转载请注明作者和出处 quarterback.cn,请勿用于任何商业用途 */




喜欢 (0)or分享 (0)
Quarterback.cn 打赏作者
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址