写点什么

被全球最大用户弃用!曾经的数据库霸主 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:269205
用户头像
李冬梅 加V:busulishang4668

发布了 1071 篇内容, 共 688.4 次阅读, 收获喜欢 1232 次。

关注

评论 1 条评论

发布
用户头像
123131

寻以及产品功能不

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

【粉丝需求】如何把一个前端网页都搞下来?

孙叫兽

大前端

架构实战营 模块一作业

Dylan

架构实战营

全网最全人工智能专业术语表(中英文对照)

澳鹏Appen

人工智能 大数据 数据 科技互联网 专业术语

阿里的 RocketMQ 如何让双十一峰值之下 0 故障?

阿里巴巴云原生

容器 运维 云原生 k8s 消息中间件

微信业务架构

Fleng

架构实战营

北京天源迪科上线迪科商旅App

DT极客

Fluid — 云原生环境下的高效“数据物流系统”

阿里巴巴云原生

人工智能 云计算 容器 云原生 存储

Python系列:初遇python

Bob

Python 编程 4月日更

Flink集成Iceberg在同程艺龙的实践

Apache Flink

flink

微信业务架构图

@oo?金樱子

架构实战营模块1作业

半夏

学习 架构实战营

apk优化,Android高级工程师必看系列,在线面试指南

欢喜学安卓

android 程序员 面试 移动开发

Knative 基于流量的灰度发布和自动弹性实践

阿里巴巴云原生

Serverless 容器 开发者 云原生 k8s

聪明人的训练(六)

Changing Lin

4月日更

翻译:《实用的Python编程》02_00_Overview

codists

Python

架构实战营课程1作业

求索

学习 架构实战营

金三银四旗开得胜!春招字节正式批4面,顺利拿到offer

Java 编程 程序员 架构 面试

Linux ln 命令

一个大红包

4月日更

查漏补缺!驱动核心源码详解和Binder超系统学习资源,挥泪整理面经

欢喜学安卓

android 程序员 面试 移动开发

给视频添加雪花飘落特效

老猿Python

OpenCV 音视频 图形图像处理 视频特效 引航计划

业务架构:微信与学生管理系统

我不是坏人

安全之路其修远兮,吾将上下而求索

Thrash

双非本化学跨专业,投岗阿里/滴滴后端三面,最终拿下offer

Java 编程 程序员 架构 面试

史上最全的Java面试题库宝典,Github上标星200k,太香了!

Java架构之路

Java 程序员 架构 面试 编程语言

图解云原生应用设计模式

倪朋飞

Kubernetes 云原生

模块一课后作业

追随哆咪

架构实战营

如何让使命、愿景、价值观落地

石云升

价值观 使命 愿景 28天写作 4月日更

常用正则表达式整理【总结】

孙叫兽

正则表达式 大前端 正则

架构实战营 模块一 课后作业

Lingjun

架构实战营

阿里巴巴开源容器镜像加速技术

阿里巴巴云原生

Serverless 容器 云原生 k8s 存储

七进七出,终获阿里32k*16offer,这就是我悲惨的面试经历~

Java架构师迁哥

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