写点什么

被全球最大用户弃用!曾经的数据库霸主 HBase 正在消亡

  • 2024-06-28
    北京
  • 本文字数:3114 字

    阅读完需:约 10 分钟

大小:1.51M时长:08:47
被全球最大用户弃用!曾经的数据库霸主HBase正在消亡

近日,Pinterest 品趣志的工程团队最近公布了弃用 HBase 集群的流程规划,理由是该方案基础设施建设与维护成本过高、HBase 专业人才难寻以及产品功能不足。而随着 Pinterest 也转向Druid/StarRocksGoku、KVStore、TiDB 等数据库技术,技术社区开始质疑在 Hadoop 和 HDFS 之上运行非关系数据库的作法是否正迅速衰落。

全球最大的 HBase 部署体系已经逃离 HBase

Pinterest 曾经拥有全世界规模最大的 HBase 生产部署体系,其峰值体量涵盖约 50 个集群、9000 个 AWS EC2 实例并容纳超过 6 PB 数据。典型的生产部署由一个主集群加一个备用集群组成,两端通过 write-ahead-logs(WAL)实现相互复制,借此实现更高的可用性。在线请求首先会被路由主集群,而离线工作流和资源密集型集群操作(例如日常备份)则在备用集群上进行。一旦主集群发生故障,系统将执行故障转移以切换主集群与备用集群。

 

Pinterest 公司高级软件工程师 Alberto Ordonez Pereira 及高级工程经理 Lianghong Xu,解释了这家设计灵感分享平台从由 HBase 支持的多项在线存储服务,过渡至具有新型数据存储与统一存储服务的全新架构的过程。

 

于 2013 年上线的 HBase 是 Pinterest 采用的首个 NoSQL 数据存储方案。随着 NoSQL 的日益普及,HBase 迅速成为 Pinterest 内部使用最广泛的存储后端之一。自那时起,它也成为 Pinterest 技术栈中的基础设施构建块,为一系列内部及开源系统提供支持,具体包括公司的图形服务 Zen、宽列存储 UMS、监控存储 OpenTSDB、指标报告 Pinalytics、事务数据库Omid/Sparrow、索引数据存储 Ixia 等。这些系统共同支持多种用例,使得 Pinterest 能够显著扩展自身业务,并在过去 10 年间不断扩大用户规模并改进产品体验。

 

具体影响范围涵盖智能反馈、URL 爬虫、用户消息、pinner 通知、广告索引、购物目录、Statsboard 监控、实验指标等等。



Pinterest 的 HBase 生态系统。HBase 为多种服务提供存储后端,也为整个公司内的广泛应用程序提供支持。

为什么弃用 HBase?

 

HBase 项目起源于 2007 年,是 Apache Hadoop 的一个子项目,并于 2010 年 2 月发布第一个独立版本。从那时起,它不断发展,每个新版本的稳定性和可扩展性都得到了增强。

 

HBase 的灵感来源于谷歌的 Bigtable 项目,由 Java 编写而成,是一套基于 HDFS 构建并供 Apache Hadoop 使用的键值存储方案。根据 Pereira 和 Xu 的解释,HBase 是 Pinterest 的第一套 NoSQL 数据存储方案,也是这家图像共享与社交媒体厂商使用最广泛的存储后端之一。

 

自从在 Pinterest 上线以来,HBase 已经凭借实际表现证明了自身的耐用性、可扩展性以及还算过得去的性能。然而经过全面评估并从利益相关方处收集大量反馈之后,公司于 2021 年底决定放弃这项技术,具体原因他们写道:

 

HBase 的维护成本已经高得令人望而却步,这主要是受到多年技术债及其可靠性风险的拖累。由于种种历史原因,我们的 HBase 版本落后上游五年,缺少关键性 bug 修复与改进内容。而且由于长期遗留的构建/部署/配置管线与兼容性问题,Pinterest 内部的 HBase 版本升级又成为一个缓慢且痛苦的过程。

维护成本高企

到评估时,HBase 的维护成本已经高得令人望而却步,而这主要是受到多年技术债及其可靠性风险的拖累。由于种种历史原因,Pinterest 的 HBase 版本落后上游五年,缺少关键性 bug 修复与改进内容。而且由于长期遗留的构建/部署/配置管线与兼容性问题,Pinterest 内部的 HBase 版本升级又成为一个缓慢且痛苦的过程(上次从 0.94 升级至 1.2 版本耗费了近两年时间)。此外,为 HBase 寻找领域专家变得越来越困难,而新工程师的培养门槛也极不友好。

功能缺失

HBase 强调提供相对简单的 NoSQL 接口。虽然能够满足 Pinterest 内部的多种用例,但其有限的功能配置也确实难以满足客户们在强一致性、分布式事务、全局二次索引、丰富查询功能等实践方面不断变化的需求。举例来说,HBase 缺少分布式事务导致 Pinterest 的内部图形服务 Zen 发生多种 bug 和意外事件,原因是局部更新失败可能导致图形效果无法保持一致。调试此类问题往往既困难又耗时,严重影响到服务管理者及客户的情绪和工作/使用体验。

系统复杂性过高

为了向客户提供更多高级功能,Pinterest 过去几年间也尝试在 HBase 之上构建了几项新服务。例如,Pinterest 在 HBase 和 Manas realtime 上建立起 Ixia,用以支持 HBase 中的全局二级索引。我们还在 Apache Phoenix Omid 之上构建起 Sparrow,用于支持 HBase 之上的分布式事务。虽然当时根本没有更好的替代方案能够满足业务需求,但这些系统本身也已经造成了巨大的开发成本并成为维护负担的新源头。

夸张的基础设施成本

生产级 HBase 集群通常要借助具有 6 个数据副本的主-备用设置以实现快速灾难恢复。但在 Pinterest 的业务规模之下,这会带来极高的基础设施成本。如果能够将 HBase 迁移至数据副本成本较低的数据存储方案,显然有望大大降低基础设施的整体运营开销。举例来说,通过对副本及部署机制的精心设计,TiDB、Rickstore 和 MySQL 都能在保持可用性 SLA 不受太大影响的前提下,实现三副本灾难恢复。

行业使用率与社区使用率双双下降

过去几年来,Pinterest 观察到行业内对于 HBase 的使用率及其社区活跃度似乎稳步下滑,许多同行企业也都在寻求更好的解决方案以替代生产环境下的 HBase 实现。这种趋势反过来又造成人才供应萎缩、准入门槛提高,导致新人工程师们越来越不愿意学习并培养自己的 HBase 业务技能。

弃用 HBase 之路

在 Pinterest,彻底弃用 HBase 曾被认为是一项不可能完成的任务,因为它深深扎根于 Pinterest 现有的技术栈中。然而,Pereira 和 Xu 的团队并不是 Pinterest 内部唯一一个意识到 HBase 在处理不同类型工作负载时存在各种缺点的团队。例如,Pereira 和 Xu 的团队发现 HBase 的表现比最先进的 OLAP 工作负载解决方案更差。它无法跟上不断增长的时间序列数据量,这给可扩展性、性能和维护负载带来了重大挑战。与KVStore (一种基于 RocksDB 和Rocksplicator构建的内部键值存储)相比,它的性能和基础效率也不高。因此,在过去几年中,Pereira 和 Xu 的团队启动了多项计划,用更适合这些用例场景的技术取代 HBase。

 

具体来说,在线分析工作负载将迁移到Druid / StarRocks,时间序列数据将迁移到Goku(一种内部时间序列数据存储),键值用例将迁移到 KVStore。经过一系列尝试,该团队找到了在 Pinterest 彻底弃用 HBase 的可行途径。

 

为了满足其余的 HBase 使用情况,他们还需要一种新技术,它既能提供像 NoSQL 数据库一样的出色可扩展性,又能支持像传统 RDBMS 一样强大的查询功能和 ACID 语义。因此该团队最终选择了TiDB,算是彻底逃离了 HBase 了。

HBase 是否正走向消亡?

 

Pinterest 弃用 HBase 的消息在社区中引发了剧烈讨论。在《Pinterest 为何弃用 HBase?HBase 是否正走向消亡》一文中,Shivang Sarawagi 强调称过去五年来 HBase 在谷歌引擎上的搜索量始终稳步下降。文章提到:

 

虽然 HBase 仍在行业内占有一席之地,但多年来,随着云原生服务的出现,已经有多种替代性解决方案可用于支撑特定系统用例。

 

在 Hacker News 网站上的一条热门帖中,用户 dehrmann 评论称:

 

我曾在一家大量采用 HBase 的企业工作。他们从 AWS 迁移到 GCP 就是为了向 BigTable 靠拢……HBase 和 HDFS 的管理强度很高,而且非常不可靠,迫使大家只能随时设置一套故障转移集群。有趣的是,迁移过程中还出现了单元/表退化,这可能也是造成可靠性问题的部分原因。

 

Pinterest 之前曾分享过他们如何将部分工作负载从HBase迁移至TiDB,且不造成任何停机。Sarawagi 补充道:随着现代数据库的出现,业界的关注焦点正逐渐从 HBase 身上移开。然而,还不能说这项技术已经就此过时。

 

参考链接:

https://www.infoq.com/news/2024/06/pinterest-deprecates-hbase/

https://medium.com/pinterest-engineering/online-data-migration-from-hbase-to-tidb-with-zero-downtime-43f0fb474b84

2024-06-28 18:269192
用户头像
李冬梅 加V:busulishang4668

发布了 1061 篇内容, 共 679.0 次阅读, 收获喜欢 1223 次。

关注

评论 1 条评论

发布
用户头像
123131

寻以及产品功能不

2024-07-04 19:11 · 北京
回复
没有更多了
发现更多内容

CSS09 - 文本&背景属性

Mr.Cactus

html/css

开始的开始-可能是最早提交的28天写作活动作品

石君

28天写作

云算力矿机租赁挖矿APP系统开发|云算力矿机租赁挖矿软件开发

系统开发

SpringCloud从入门到精通01---父项目创建

Felix

SpringCloud Eureka 高可用架构

【CSS】CSS对大小写敏感吗?

德育处主任

28天写作

文档驱动开发模式在 AIMS 中的应用与实践

华为云开发者联盟

Web 代码 API 文档

代码也能“杀”虫:此虫,真虫非Bug也

华为云开发者联盟

代码 华为云 modelarts

价值 - 价值的底色(一)

石云升

读书笔记 投资 28天写作 价值

如果你听说过 Elastic Certified Engineer

escray

七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

Hive的调优你都知道那些?

大数据老哥

大数据 hadoop hive

技术实录 | 灵雀云基于 OVN 的 Kubernetes 网络架构解析

York

灵雀云 Kubernetes k8s Kube-OVN

俯瞰Dubbo全局,阅读源码前必须掌握这些!!

冰河

架构 分布式 微服务 dubbo 服务治理

边缘计算安全技术研究

华为云原生团队

云计算 大数据 云原生 边缘计算 华为云

volatile 关键字精讲

伯阳

Java volatile 后端 关键字 多线程与高并发

Java中定时器Timer致命缺点(附学习方法)

叫练

学习 定时任务 多线程 定时器 技术学习

软件界旷世之架:测试驱动开发(TDD)之争

华为云开发者联盟

软件 测试 TDD 代码 devcloud

如何使用Eclipse内存分析工具定位内存泄露

AI乔治

Java eclipse 架构

【Mysql-InnoDB系列】InnoDB架构

程序员架构进阶

MySQL 架构 innodb 28天写作

如何使用Eclipse内存分析工具定位内存泄露

Java老k

Java 内存泄露

杜绝标题党,好的标题是成功的99%

xcbeyond

方法论 28天写作 写作技巧

从七日更,到28天写作挑战,我无法拒绝的原因

梁龙先森

大前端 编程语言 28天写作

数据中心“容灾”和“备份”的区别

LeetCode题解:111. 二叉树的最小深度,BFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

还在手动写数据库文档吗?试试这个工具,划水干活儿两不误!

我爱娃哈哈😍

数据库 文档生成

一个正确的编程思维

程序员吴师兄

28天写作

一次系统调用时间过长追踪完整教程案例

AI乔治

Java Linux 架构

要想软件“一想之美”,UI测试少不了

华为云开发者联盟

软件 测试 华为云

VUE项目性能优化实践——通过懒加载提升页面响应速度

葡萄城技术团队

Vue

ETL都没弄懂,谈什么大数据 ?我用一分钟给你整明白

智分析

ETL

新思科技网络安全研究中心发现Bouncy Castle中的漏洞

InfoQ_434670063458

新思科技 Bouncy Castle

Spark HistoryServer日志解析&清理异常

kwang

大数据 spark hdfs

被全球最大用户弃用!曾经的数据库霸主HBase正在消亡_数据库_李冬梅_InfoQ精选文章