揭秘Uber跨区域数据湖与灾难恢复机制:350PB数据、数百万事件、单一系统

来源: InfoQ 话题 - 大数据

原文

Uber构建了HiveSync,这是一个分片式批量复制系统,能够使Hive和HDFS数据在多个区域之间保持同步,它每天处理数百万个Hive事件。HiveSync确保了跨区域数据的一致性,实现了Uber的灾难恢复策略,并消除了由次要区域闲置而导致的低效问题——此前次要区域需承担与主区域一样的硬件成本,而HiveSync在维持高可用性的同时彻底解决了这一问题

HiveSync基于开源项目Airbnb ReAir构建并做了一些扩展,包括实现了分片、基于DAG的编排以及控制平面和数据平面的分离。ETL作业现在只在主数据中心执行,而HiveSync处理跨区域复制,实现了近乎实时的一致性,保持了灾难应对能力和分析访问权限。分片功能允许将表和分区划分为独立的单元,从而实现并行复制和细粒度容错。

HiveSync将控制平面(负责编排作业和管理关系元数据存储中的状态)与数据平面(执行HDFSHive文件操作)分离。Hive Metastore事件监听器负责捕获DDL和DML变更,将它们记录到MySQL中,并触发复制工作流。任务以有限状态机的形式呈现,支持任务重启与健壮的故障恢复机制。

HiveSync架构:控制平面和数据平面分离(来源:Uber博文

HiveSync有两个主要组件:HiveSync复制服务和数据修复服务。复制服务使用Hive Metastore事件监听器实时捕获表和分区变更,将它们异步记录到MySQL中。这些审计条目被转换为异步复制作业,以有限状态机的形式执行,为确保可靠性,状态会被持久化。Uber使用了混合策略:规模比较小的作业使用RPC以提高效率,而规模比较大的作业则利用YARN上的DistCp。DAG管理器强制执行分片级的排序和锁定,而静态和动态分片技术则实现了水平扩展,确保复制过程一致且无冲突。

HiveSync复制服务(来源:Uber博文

数据修复是一个持续检测异常的服务,如缺失的分区或非预期的HDFS更新,恢复数据中心1(DC1)和数据中心2(DC2)之间的一致性,从而保证数据的正确性。HiveSync保证了每四小时一次的复制SLA,99百分位的延迟大约为20分钟,并支持一次性复制,用于在切换到增量复制之前,一次性地将历史数据集导入新区域或集群。Uber的数据修复服务会扫描DC1和DC2,检测异常(如缺失或多余的分区),并修复任何不匹配的情况,从而确保跨区域的一致性,目标是准确性超过99.99%。

数据修复服务分析和解决数据中心之间的不一致性(来源:Uber博文

HiveSync的规模很大,管理着80万个Hive表,总计约300PB的数据,单表数据量从几GB到数十PB不等,单表分区数从几百到一百万多不等。每天,HiveSync处理超过500万个Hive DDL和DML事件,跨区域复制约8PB的数据。

展望未来,随着批量分析和ML管道迁移到谷歌云平台,Uber计划将HiveSync扩展到云端复制场景,进一步利用分片、编排和数据一致性技术来高效地维护其PB级数据的完整性。

原文链接:

https://www.infoq.com/news/2026/01/uber-hivesync-data-lake/