开启一个新时代: Apache HBase 1.0 发布
创始人
2024-03-01 14:54:47
0

HBase社区的过去、现在及未来

Apache HBase社区发布了Apache HBase 1.0.0。它花费了七年时间在Apache HBase项目领域取得了里程碑式的发展,这次发布提供了一些令人兴奋的特性和并未牺牲稳定性的新API,无论在线还是在硬盘上都与HBase 0.98.x兼容。

让我们回顾Apache HBase 项目的过去、纵观它的现在、展望一下未来。

版本啊版本

在列举这个版本的详细特性之前,让我们来浏览一下过去的版本历史。HBase 始于 Apache Hadoop 一个子项目, 大约在 2007 随同 Hadoop 一起发布。三年后,HBase 成为了一个独立的 Apache 顶级项目。由于 HBase 依赖于 HDFS,所以社区让 HBase 与 Hadoop 的主版本号保持一致。例如,HBase 0.19.x 可以和 Hadoop 0.19.x 协同工作,等等。

然而,HBase 社区希望可以让一个 HBase 版本可以与多个 Hadoop 版本协同工作—不仅仅是其所匹配的主版本号。这样一来,一个新的命名方案就诞生了,新版本将以接近1.0的主版本0.90开始,就像上面时间线中展示的一样。我们也运用了一种“偶数-奇数”版本的惯例,也就是奇数版本是“开发者预览”,偶数版本是可以用来发布的“稳定版”。稳定发布系列包括0.90、0.92、0.94、0.96和0.98(详见HBase版本)。

在0.98之后,我们把主干版本命名为0.99-SNAPSHOT,但是我们官方已经用完了所有的数字!欠考虑了,去年 HBase 社区一致认可这个项目已经足够成熟稳定,可以作为1.0.0版本了。在三个0.99.x“开发者预览”系列版本和六个 Apache HBase 1.0.0备选版本之后,HBase 1.0.0现在发布了!看上面的图表,它是由 Lars George 发布的时间表,显示了每个版本的支持周期,及任何开发者预览版本(例如0.99->1.0.0),如果有的话。

HBase 1.0.0,开启了一个新时代

1.0.0版本有三个目标

1)为将来的1.x系列版本奠定稳定基础

2)稳定运行的 HBase 集群及客户端

3)让版本和兼容性方面更加明确

包括之前的0.99.x系列版本,1.0.0解决了超过1500个 JIRA 跟踪的问题。其中一些主要的修改包括:

API 整理和改变

HBase 的客户级 API 已经发展多年了。为了简化语义和支持,让它可以扩展并且在将来更容易使用,我们回顾了1.0之前的API。为此,1.0.0引进了新的 API,并且废弃了一些常用的客户端 API(HTableInterface, HTable 和 HBaseAdmin)

我们建议您更新您的应用程序来使用新风格的 API,因为这些废弃的 API 在将来2.x系列版本之后被删除。进一步的指导,请访问:http://www.slideshare.net/xefyr/apache-hbase-10-releasehttp://s.apache.org/hbase-1.0-api

所有的客户端 API 都标识为 InterfaceAudience.Public 类。以表明其是 HBase 官方的“客户端 API”(更多 Audience 的说明详见 HBase Refguide 中的“11.1.1HBase API Surfase”)。接下来,所有的1.x 版本的 API 都会与 public 客户端的类相兼容。

使用时间轴协调区域副本的可读性

作为第一阶段的一部分,这个发行版包括了一个实验性的“使用时间轴协调区域副本的可读性”特点。也就是说,一个区域可以以只读模式放在多个区域服务器上。该区域副本之一将会是主服务器,支持写入,其它副本将共享与之相同的数据。对复制副本的读请求可以为后备的 RPC 请求来提供时间连续的高可用性。查看JIRA HBASE-10070 了解更多详情。

在线配置修改及来自0.89-fb分支的其它前向移植

Apache HBase 的 0.89-fb 分支是 Facebook 发布他们的修改的地方。 HBASE-12147 JIRA 的前向移植补丁支持重载服务器配置的一个子集,而无需重启区域服务器。

除了上面所列举的,还有成百上千的改进和性能提升(提升的WAL pipeline,使用 disruptor, 多 WAL, 更多的off-heap 等等)和漏洞修复以及其它好的东西,太多了就不列举了。详细介绍请查看官方的发布日志。发布日志和白皮书也包含了二进制、源代码和协议的兼容性说明、所支持的 Hadoop 和 Java 版本,从0.94、0.96和0.98版本升级的说明以及其它重要详情。

HBase 1.0.0版本也开始使用“语义版本号”发布 HBase。换言之,将来 HBase 版本将会使用显示兼容语义的“主版本.次版本.补丁”版本号。HBas e的白皮书包含了所有兼容性方面的内容和不同版本之间预计的内容。

接下来

我们将 HBase 1.0.0标记为 HBase 的下一个稳定版本,这就意味着所有的新用户都应该开始使用这个版本。然而,作为一个数据库,我们明白,切换到更新的版本可能会花费一些时间。我们将会继续维护和使用0.98.x版本,直到用户社区准备结束它的生命。1.0.x、1.1.0、1.2.0等发行版预计将发布其相应的分支,而2.0.0和其它主要的版本也将如时到达。

两段读复制、按列族刷新、procedure v2、SSD for WAL 或列族数据等等特性也即将到来。

总结

最后,HBase 1.0.0发行版已经走过了一段漫长的道路,大量的核心成员、提交者、贡献者的辛勤工作带来了诸多贡献,我们想对所有的用户和 HBase 贡献者致以衷心的感谢!

Keep HBase’ing!

相关内容

不能使用反应式方法将文档保...
要将文档保存到Couchbase,不能使用反应式方法,而是需要使用...
2024-12-27 06:32:12
布隆过滤器原理hbase
布隆过滤器是一种快速判断一个元素是否存在于集合中的数据结构,它能够...
2024-12-26 18:01:50
BlazorWebAsse...
可以通过使用在启动Blazor WebAssembly应用程序时在...
2024-12-22 01:00:30
BlazorWebAsse...
解决方法是在启动类中手动将pathbase设置为"/",即可解决该...
2024-12-22 00:31:19
避免Zookeeper客户...
以下是一个示例代码,演示如何使用Java编写一个避免Zookeep...
2024-12-17 20:01:36
比较和交换:如何将CAS元...
要将CAS(Compare and Swap)元数据字段映射到Co...
2024-12-13 16:30:28

热门资讯

使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
Bazzite:专为 Stea... 为 Linux 桌面或者 Steam Deck 做好游戏准备,听起来都很刺激!对于一个专为 Linu...
Motrix:一个漂亮的跨平台... 一个开源的下载管理器,提供了一个简洁的用户界面,同时提供了跨平台操作的所有基本功能。在这里了解关于它...
Bash 脚本中如何使用 he... here 文档 here document (LCTT 译注:here 文档又称作 heredoc ...
使用 dialog 和 jq ... 为何选择文字用户界面(TUI)?许多人每日都在使用终端,因此, 文字用户界面 Text User I...