爱奇艺大数据混合云存储
公众号名称:爱奇艺技术产品团队
作者名称:大数据团队
发布时间:2026-06-11 12:00
01__#
背景介绍
随着业务规模增长,爱奇艺大数据团队自 2023 年开始引入混合云以应对私有云资源的固有局限。相比受限的私有云物理机(机房限制、扩容慢、物理机买断等),公有云不仅能按需弹性伸缩,还能引入新型计算机型、冷存储等更具性价比的资源,并在出海等场景中实现更快速的服务交付。
弹性与成本优势的背后,混合云也带来新的挑战:需对异构资源统一抽象适配,让内部用户无感使用;要避免被单一云厂商绑定,保持架构与数据的可迁移性;还需精细化治理与成本管控,避免资源浪费和管理失控。
爱奇艺大数据在多AZ统一调度架构的基础上,进一步完成了混合云建设,升级为混合多云统一调度,实现了混合云的数据无缝访问和计算调度,大幅降低存储计算成本,提升数据开发与分析效率。
存储层,爱奇艺通过自研的QBFS (iQIYI Bigdata FileSystem) 大数据文件系统提供统一访问入口,屏蔽底层文件系统和集群,实现了云上云下、多家公有云间数据的无感路由、自由流转。
本文将介绍 QBFS 在混合云存储场景中的管理策略,以及实践过程中遇到的问题和解决方案。
02__#
整体架构
QBFS是一个虚拟文件系统,其底层支持多种存储服务,提供跨集群/跨文件系统的统一命名空间、缓存加速、分层存储、透明迁移等功能。整体系统由以下模块构成
-
**QBFS 客户端 / 路由服务端:**大数据应用通过 QBFS 客户端与底层存储服务交互,由服务端的路由和配置来动态决定访问的具体存储集群和客户端参数。元数据和代理访问非常轻量,能充分保持存储服务的功能和性能。
-
**数据缓存层:**基于 Alluxio 构建的缓存体系,能够透明的将持久层数据接入缓存。
-
**持久层存储:**包括 HDFS 及私有云 / 公有云对象存储,其集群分布在多个 Region-AZ 中,后文简称为 UFS。
-
**数据调度服务:**结合 QBFS 路由机制,可以实现冷热分层、透明迁移、备份等数据调度功能。
-
**存储元仓:**整合多种底层存储服务元数据,支持冷热分析、缓存分析、用量成本审计等数据治理功能。

图 1 QBFS 架构
03__#
公有云对象存储适配
在私有云多 AZ 阶段,QBFS 已经支持了 HDFS、私有云对象存储、Alluxio。进入混合云后,我们与公有云厂商深入合作,在 QBFS 中扩展接入了多种公有云对象存储。
在 QBFS 的统一命名空间中,可将库、表、分区等虚拟路径映射到公有云对象存储,上层应用只需访问 QBFS 路径,无需关心底层存储细节。QBFS 完成了客户端整合、认证鉴权、数据治理等适配,极大降低了业务使用各公有云存储的复杂度。

图 2 QBFS 统一命名空间
3.1 统一客户端访问
QBFS 客户端作为上层应用的统一访问入口,是适配公有云对象存储的核心组件。QBFS 客户端包中,整合了各底层存储服务的 SDK,上层应用调用 QBFS 客户端的 HCFS 接口时,客户端代理层会完成路由解析、接口兼容、缓存等一系列处理,最终调用 UFS 客户端,完成存储服务访问。
同时,QBFS 客户端会在 Oozie、Kyuubi 等入口以 provided 方式提供,平台侧可对客户端进行统一维护和升级。

图 3 QBFS 客户端
在 QBFS 客户端框架下,我们完成了多种公有云对象存储 SDK 整合,主要解决以下问题
-
**客户端瘦身:**通过严格控制 QBFS 客户端体量,降低 YARN、容器等环境下的分发与启动压力;统一管控第三方依赖,保持最小化引入,并采用各公有云厂商提供的精简化 SDK,进一步压缩包大小。
-
**跨平台兼容:**针对集群中多硬件架构(x86_64 / aarch64)和多操作系统环境,对服务 SDK、第三方库及 Native 组件进行统一适配;通过 Shaded 方式隔离依赖冲突,并实现 Native 包的自动匹配与按需加载。
-
HCFS 兼容性**:**业界通过 HCFS 版对象存储、JuiceFS、S3A FS 等方案增强对象存储的 HCFS 支持能力。QBFS 在选型阶段优先选择 HCFS 支持成熟的产品,重点评估一致性、原子 rename 、高效 list 等特性。针对实际应用中仍会出现的不兼容问题,则通过 QBFS 客户端代理层进一步完善接口兼容处理。
-
**终端节点服务:**统一采用各公有云提供的类终端节点技术(PrivateLink),将对象存储桶域名解析为各公有云 VPC 网段内的 IP,私有云应用经专线直达该 IP 即可访问对象存储,对企业的现网架构零侵入。
3.2 混合云认证鉴权
为了兼容各类公有云对象存储的认证与权限机制,我们构建了混合云认证鉴权体系,让同一身份与权限在云之间无缝衔接,确保数据访问安全可控、策略一致。
在认证方面,QBFS 兼容了公有云对象存储的 AK/SK 认证机制,上层应用统一使用 Kerberos 认证,QBFS 自动完成认证信息的转换,动态从公有云 IAM 获取对应的临时 AK/SK,有以下两种场景
-
**非 YARN 任务场景:**由客户端进程本地完成 Kerberos 认证,并通过 CredentialProvider 插件及 SPNEGO 协议,安全地从密钥兑换服务获取公有云临时 AK/SK。
-
**YARN 任务场景:**我们参考 S3A Delegation Tokens 框架,将临时 AK/SK 封装为 Token,在任务提交时交给集群分发到各个 Container 中。对于长时任务,会定期更新 Token。

图 4 混合云认证
在权限管理上,业务只需关心 QBFS 命名空间中库、表(视图)、路径的权限,系统会根据元信息,找到 UFS 中的路径,并在各 UFS 的权限引擎中完成授权。
同时,QBFS 路径挂载变更、视图更新时,系统也能完成各类复杂的权限更新处理。

图 5 混合云权限管理
3.3 混合云存储****元数据
随着公有云对象存储的逐步引入,数据治理需求从传统 HDFS 扩展至对象存储领域。为了保持元数据格式与分析方法的一致性,我们实现了对象存储元数据的统一解析能力,主要包括以下方面
-
**文件目录清单:**对象存储的桶清单与 HDFS FSImage 类似,我们对不同对象存储清单进行清洗与语义对齐,结合挂载信息,构建统一的 QBFS 层元数据清单。
-
**操作审计日志:**整合 HDFS、对象存储、Alluxio 的审计日志,构建统一的 QBFS AuditLog,作为访问行为分析的基础。此外,通过 QBFS 客户端的埋点采集,增强了端到端读写流量、延时等信息。
-
**元数据服务:**基于各 UFS 元数据与路由表,提供了类似 Observer NameNode 的元数据实时查询能力,支撑目录统计、增长分析、接口加速等功能。
在此基础上,我们进一步开展了数据冷热分层、热点数据缓存、用量成本审计等一系列治理工作。
04__#
混合云分层存储
大数据场景中,数据通常都按时间分区组织,一个表最近 90 天的读请求按照“读时分区年龄”聚合:diffDate(读请求日期,所读分区的数据日期),可得到表的访问热度特征。
我们发现,大部分数据都是如下图所示的访问模式,数据分区在生产当天访问最热,生产 2-3 天后读请求迅速下降,超过一定时间后访问趋近于 0,这也符合大数据中 T+1 计算场景的普遍规律。

图 6 表的访问热度特征
基于大数据的这种热度特征,QBFS 将数据划分为标准、低频、归档三层。新近且访问频繁的数据保存在标准存储;生命周期推进后访问频率低于阈值的数据转为低频;更久且几乎无访问的数据进入归档。
私有云中,我们用 EC 编码方式存储“低频数据”,用更高密度的硬件存储“归档数据”。随着公有云对象存储的接入,我们也引入了混合云低频存储与混合云归档存储。这两种模式能有效降低成本,并使受限的私有云资源演进为可灵活伸缩的混合云资源。
4.1 混合云低频存储
混合云低频存储的结构如图 7 所示,dt5-dt4 的标准数据分区放置在私有云 HDFS 中,dt3-dt1 的低频数据分区放置在公有云对象存储的标准存储中,上层应用通过 QBFS 路由访问,在 QBFS 命名空间中整合为表的完整数据。

图 7 混合云低频存储
4.1.1 一对多路由
为了使业务能正确的访问各部分数据,在 QBFS 路由层中,我们参考 HDFS RBF 的挂载设计,实现了一对多路由的处理策略,即一个挂载点映射到多个 UFS。该方式能适应数据分区的动态变化,简化路由配置。
我们在 QBFS 客户端模块中实现一对多路由的功能,客户端从服务端获取“路由配置”后,协调各存储服务 SDK 完成多个 UFS 的访问。该功能的核心策略主要包括**“写入集群选择”**和“多集群调用”。
写入集群选择,是指在一对多路由中选择 UFS 新建文件或目录。RBF 中实现了 HASH, HASH_ALL, LOCAL 等策略,在 QBFS 中我们扩展实现了 FIRST 策略,其规则如下
-
新增挂载点下 =1 级的文件或目录时,默认放置在第一个 UFS 中
-
新增挂载点下 >1 级的文件或目录时,找到最近父目录所在 UFS 进行创建
-
混合云分层存储中,时间分区目录只会存在于一个 UFS 中,新增时间分区目录会创建在私有云 HDFS 中

图 8 写入集群选择策略
多集群调用,是将 QBFS 层的文件访问操作转换为多个 UFS 的方法调用,并整合返回结果。参考 RBF 的架构,我们在 QBFS 客户端中实现了多集群调用策略。
-
invokeSingle:仅对其中一个挂载路径进行调用
-
invokeSequential:对各挂载路径依次进行调用,直到某一次调用成功返回
-
invokeConcurrent:对各挂载路径同时进行调用,最后合并结果
各文件访问操作分别采用相应的多集群调用策略,可以保证正确的文件访问语义。

图 9 多集群****调用策略
4.1.2 低频数据转存
在一对多路由的基础上,平台以“时间分区”为调度单元,将数据透明地从标准存储转存到低频存储。
转存流程如图 10 所示:将源分区复制到目标 UFS 临时目录,禁止 QBFS 层该分区写入并校验两端数据一致,将目标分区移动到正式路径、源分区移动到临时目录,再次校验后放开写入,最后清理源端数据。整个过程充分考虑了幂等重试、并发访问、数据一致、流量控制等设计。
在线上,数据调度系统会根据 TTL 规则生成转存任务,完成排序、流控、容错等调度处理,平台每天可以稳定执行约 10 万个分区转存任务。

图 10 分区转存流程
4.1.3 其他问题
在实现“混合云低频存储”的过程中,我们也解决了许多其他问题,列举部分问题供参考
-
Hive **重写分区:**用户重写 Hive 的低频分区时,可能会出现跨 UFS rename 的情况,我们完善了 Hive commit 中 Hive.needToCopy() 判断, 确保能将 rename 转换为 copy 操作。
-
**表全量更新:**表全量更新时,可能会对表级挂载点执行删除操作,但 QBFS 不支持对挂载点删除。我们对 Spark任务都配置了 convertInsertingUnpartitionedTable=false,该模式下不会对表级路径执行删除。
-
**时间分区非一级:**表或 Fileset 的“时间分区”列可能是非一级路径,这种情况我们扩展了一对多路由的策略,引入了“时间分区”层级信息,> 层级仍采用 FIRST 写入策略,<= 层级采用类 HASH_ALL 策略。
4.2 混合云归档存储
基于公有云对象存储中的“归档存储类型”,我们扩展实现了混合云归档存储,进一步降低存储成本。业务需主动设置“归档 TTL”,超过 TTL 的“数据分区”会被转存到公有云归档存储中,并从表中移除。
归档管理策略
归档以数据分区为单位管理,先将分区拷贝到目标桶的临时目录,校验完整后再移动到归档路径,归档路径数据基于桶规则 1 天后归档。需要考虑以下策略
-
**云内数据归档:**如果“数据分区”已经是公有云对象存储中的数据,则可以跳过 distcp,直接移动到归档路径。
-
**最低存储时间:**对于不满足公有云最低存储时长的数据,系统会根据成本分析自动降级为“私有云归档”。
-
**数据湖表归档:**对于 Iceberg 等强依赖元数据文件的数据湖表,当前采用 Spark 导出为 Hive 数据分区归档。
归档恢复流程
公有云对象存储中,已归档的“数据分区”会先解冻为可访问状态,支持两种恢复方式
-
**原地恢复:**通过 QBFS 路由恢复为原来的路径,并在原表中恢复分区,适合快速适配处理。
-
**独立恢复:**通过 QBFS 路由恢复为不同的路径,恢复为一个独立的表,适合隔离定制处理。
05__#
透明迁移
混合云环境中,数据迁移是常态:从 A 云迁移到 B 云,从单 AZ 桶迁移到多 AZ 桶,机房搬迁、升级到新集群等。QBFS 的目标是让迁移发生在底层,业务仍使用原有路径,应用程序无需修改,同时运行中的程序受影响小。
5.1 表级迁移
表级透明迁移可分为两种类型:时间分区数据的迁移、非时间分区数据的迁移。
时间分区数据,可按“时间分区”为单位,逐步完成整表的迁移。
-
**迁移前置准备:**配置一对多路由、复制权限、暂停表的其他任务(分层、备份等);一对多路由采用 FIRST 写入策略,目标 UFS 在前,源端 UFS 在后,新的时间分区会创建在目标 UFS 上。
-
**时间分区迁移:**逐个迁移表的时间分区,每个“时间分区”会生成对应的迁移子任务,流程与“低频转存”类似。
-
**生产中分区:**最新时间分区下可能还在生产数据,可以将最近的时间分区延后几天迁移
-
**混合云低频:**路由层面可配置一对 N 路由,能够满足标准、低频两部分数据的迁移需求
-
**表迁移:**完成所有的分区迁移后,迁移表级的其他子目录,例如 Iceberg metadata、Paimon manifest 等目录。该阶段会短暂禁止整表写入。
-
**迁移后置处理:**1)改为一对一路由,去除源端依赖;2)清理源端权限;3)开启表的其他任务。

图 11 Iceberg 时间分区表的透明迁移
**非时间分区数据,**通常较小且写入频率低,例如 T+1 全量更新的表、较少更新的维度表等。因此,可以避开数据生产时间,采用传统的停写迁移方式,整体流程大致相同。
5.2 整库迁移
在更大规模的整库迁移中,平台会把库或业务目录拆分为表和子目录,再按时间分区与非时间分区分别处理。库下表都完成迁移后,再做库级路由切换并清理多余表级路由。借助调度平台,管理员可以管理成百上千个表和目录的迁移过程。
06__#
混合云缓存
大数据混合云场景中,专线带宽往往会成为瓶颈,在爱奇艺当前的混合云资源结构下,主要有以下情况
-
私有云任务大量读取混合云低频 / 归档数据
-
公有云计算节点大量读取私有云数据
为此,我们在 QBFS缓存体系基础上扩展混合云缓存能力,构建跨多云的 Alluxio 公共缓存层,主要有以下扩展
-
**混部资源:**公有云计算节点的异构机器上部署 Alluxio Worker,构成公有云 AZ 中的缓存资源池。
-
**就近访问:**基于自研的节点选择策略,QBFS 能识别客户端所在云 AZ 信息,优先选择本地云 Worker 读写缓存。
-
**对象存储:**Alluxio 通过 QBFS 插件能非常方便的适配对象存储,并兼容 QBFS 复杂的路由处理。

图 12 混合云缓存
6.1 低频与归档数据缓存
对于私有云任务读取云上低频或归档数据的场景,QBFS 会将云上数据缓存到 Alluxio 私有云的 Worker 中。
-
**低频定期访问:**低频数据的平均访问频率低,但一些低频数据存在月度、季度等周期性访问,我们会对这些数据配置缓存规则,QBFS 会提前加载数据到私有云缓存中。
-
**低频变热:**如果监控发现低频数据重新变热,可以临时配置缓存,长期需求则通过 TTL 调整逐步迁回私有云。
-
**归档恢复:**归档数据解冻恢复后,QBFS 会主动加载数据到私有云缓存中。
6.2 任务调度与缓存
对于公有云计算节点读取私有云数据的场景,我们实验发现,如果任务随机调度到云上,云上热数据分布也不稳定,难以针对性缓存;需要任务调度与数据缓存紧密配合,才能有效降低流量。
-
调度合适的任务组:将任务按用户、队列等维度分组,剔除部分高流量任务,统计每个分组的单位核输入流量;在核数使用量 TopN 的任务组中,优先将单位核流量较低的任务组调度到云端。
-
**缓存任务组的数据:**针对调度到云上的任务组,其访问数据相对固定,可以分析该组任务的热点数据,并将相关数据缓存到公有云的 Alluxio Worker 中。其中,任务组生产的数据,可以 write-through 写云上 Worker 时缓存;依赖的第三方数据则通过缓存规则提前加载。
基于 eBPF 监控与客户端采集,我们能精确分析任务的流量情况,某用户的任务组采用调度与缓存方案后,跨专线的高峰时段流量降低 70%。
07__#
总结及规划
大数据混合云存储架构已在爱奇艺全面落地,构成多云统一调度框架的基石,帮助大数据降本 30% 以上。基于当前架构,我们可以快速接入新的公有云对象存储,并实施精细的服务治理。同时,通过混合云分层、透明迁移、缓存,我们可以动态调整云上云下存储分配比例,实现多云、多 AZ 的融合与弹性。
未来我们会进一步扩大混合云存储的应用比例,逐步替换私有云内过保的机器,达成更高的降本收益。同时,我们也会优化混合云数据放置与缓存策略,实现存算协同上云,使混合多云统一调度框架具备更强的扩展性。
此外,基于公有云对象存储和相关生态的丰富功能,我们也会扩展 QBFS 在多模态数据、AI 数据链路、数据高可用等方面的应用。

别让AI瞎猜了:用Harness Engineering 终结无限返工
内存峰值降60%+,动图加载快75%:爱奇艺图片库一次从’能用’到’极致’的跨越
内容效果不满意?点此反馈