金融行业湖仓一体化在存算分离的架构下,通过解耦计算和存储层,在中间产生一个数据编排层,负责对上层计算应用隐藏底层的实现细节。Alluxio 通过把数据缓存在靠近计算的地方,减少数据移动和复制所带来的开销,加速数据计算。
本次分享的内容涵盖了数据平台架构发展趋势、湖仓一体的价值与挑战,以及Alluxio 编排与缓存在湖仓一体架构中的价值等内容,希望通过本次分享,为读者带来经验和灵感。
一、湖仓一体架构介绍
1、数据平台架构发展趋势—湖仓一体
首先简要介绍一下湖仓一体架构。湖仓一体融合了数仓和数据湖的优势,通过将数仓构建在数据湖上,在用于数据湖的低成本存储上实现与数据仓库中类似的数据结构和数据管理功能。其最重要的一点,是实现湖里和仓里的数据、元数据能够无缝打通,并且自由流动。湖仓一体架构核心定位是基于一套存储、一份数据、一套任务,实现数据集成、处理、治理等任务,面向可扩展的、可插拔的各种计算和应用的一种架构体系。
第一个阶段:
随着业务模式和技术的发展,数据应用场景越来越复杂度,数据也越来越丰富,数据平台由传统的数据仓库发展到以大数据 Hadoop 平台为主的数据湖架构,典型业务应用场景是 Hadoop 大数据平台+MPP 数据库。
第二个阶段:
随着流批需求的出现,架构出现了包括 Lambda 架构和 Kappa 架构的架构实现。Lambda 架构是通过同时维护两套分布式系统,一套处理离线数据业务,一套处理实时数据业务来支撑流批需求的。Kappa 架构主要是通过计算引擎高速处理实时数据业务,对离线数据业务的处理稍显不足。为了解决这个问题,流批一体的概念被提出来了,并最终出现了像 Hudi、Iceberg 等流批一体的解决方案,最终形成了湖仓一体的技术格局。
特别是最近几年,数据越来越丰富,数据规模也越来越大,并且出现了丰富的 AI 应用场景,在湖仓一体化建设的过程中又会面临一些新的挑战:比如数据分布在多个集群、数据存储集群技术选型不同、跨集群查询效率低下、不同场景需要使用不同的访问接口等问题,因此在基础的湖仓一体架构下又衍生出了结合数据编制技术、数据虚拟化技术的方案,并且逐渐在实践中得到越来越多的应用。
2、数据平台架构发展趋势—湖仓一体 Plus
湖仓一体数据平台架构在实践和落地过程中包括两种模式,一种是集中式建设模式,另一种是非集中式建设模式。
- 集中式建设
湖仓一体数据平台架构数据规模较小、数据复杂度低、应用场景简单,比较适合于集中式建设。
集中式建设数据分布相对集中,集群规模不大,比如基于原有的 Hadoop 的 HDFS 存储、对象存储,构建一个集中式的存储体系。然后在其上构建元数据层,包括 Meta 和 schema,完成数据建模。通过流批处理引擎、交互式查询与分析、AI 引擎,完成数据应用和数据治理。满足业务应用场景和 AI 应用场景。集中式建设是大数据平台建设中比较常见的一种建设模式。
- 非集中式建设
另外一种建设模式是非集中式。由于数据量、安全、业务分布或成本等问题,数据可能分散在不同地方存储,可能是数据中心或者云上云下,在物理上是分开的。要实现一套存储、一份数据、一套任务,就需要去建设统一的元数据管理层、统一的数据开发平台、统一的资源调度平台,以及统一的任务调度平台,最终形成一个基于非集中式建设的湖仓一体架构。在这个过程中需要用到数据编制或者数据虚拟化的技术。
3、湖仓一体的价值
湖仓一体的价值表现在两个方面,一方面是降低成本,另一方面是提升效率。
在湖仓一体架构的发展过程中,除了一些技术或数据时效性的驱动力,更大的驱动来在于降低成本。传统的 Lambda 或者 Kappa 架构,数据流是分开的,存储和计算的成本,以及整个技术复杂性所带来的维护成本都是非常高的。使用湖仓一体化架构后,第一个显著的效果就是降低整体成本。
首先,可以降低存储成本,数据不再需要存储多个拷贝,只有一份数据就行了。第二,可以降低数据管理成本,减少拷贝带来的复杂度,也减少数据搬运、数据治理以及开发维护的成本。第三,还可以避免多份数据导致的数据一致性问题以及各种数据安全问题,降低使用数据时的技术对接成本。
另一方面的价值就是增效。首先是提升业务 ROI,随着业务孵化成本的降低,业务迭代效率将会更高。第二,提升数据质量和时效性,流批一体可以大大提升数据集成的时效性,由于源头唯一,可以实时感知数据源头的变化,并且基于一份数据集中安全和质量管理。第三,可以提升架构灵活性,解放了计算和应用的约束,只需要兼容湖仓的开放式存储和模型的接口即可快速的部署应用。
4、湖仓一体的挑战
湖仓一体架构在带来了很多价值的同时,也带来了一些挑战。
- 性能保障
湖仓一体架构下很难确保所有的计算和存储都在一起,远程数据访问会带来数据访问性能的下降,连带引起计算性能和计算资源利用率的下降。
网络资源相对有限,扩展难,数据访问高峰期会引发网络波峰,导致数据访问的性能下降。
计算多样性扩展迅速,数据读写的压力被“一份”数据承载,存储的服务能力可能会成为瓶颈。 - 架构改造
需要考虑兼容性,尽量减少或者避免湖仓一体架构下存储、计算的技术选型引发上层应用的改造。
原有的数据管理体系特别是数据安全的管理如何传承和保障也是一大挑战,特别是湖仓一体架构下的存储可能变成了权限管理能力较弱的对象存储。
要将原有数据湖平台平稳地迁移到湖仓一体架构中,在软件、硬件、数据各方面充分利旧,降低改造迁移周期和成本,降低对业务的影响。
针对这些挑战,接下来将介绍 Alluxio 是如何助力湖仓一体架构落地的。
二、Alluxio 在湖仓一体架构中的定位和作用
Alluxio 架构的定位为助力云原生大数据分析和 AI 计算的数据编排平台。它处于计算层和存储层之间,向下能够兼容多种存储引擎、不同存储技术,对上能提供统一的数据服务能力。
1、Alluxio 能力概述
Alluxio 的核心是在计算层和存储层之间起到承上启下的作用。设计初衷是零侵入地实现计算应用和存储数据之间的连接。
整体能力分为四个部分。
- “南向”实现多个存储系统的集成
包括多存储集群技术协议和安全协议的识别和对接。 - “北向”实现多个计算/应用的对接
包括主流的 Spark、Flink、Presto 等,以及基于一些接口协议的 AI 场景,S3 协议的接口等,并且接口统一,实现了存储集群接口协议的转换。
安全统一,基于 Alluxio 进行安全认证、权限管理。
数据视图统一,将多个不同存储中的数据以统一的目录树结构,对上提供统一的数据视图。 - “缓存”让数据离计算更近
一方面通过缓存命中,使数据离计算更近,提升数据的读写 IO。另一方面,缓存使用的存储介质更高效,因此整体性能会更高。 - “策略管理”解耦数据迁移对业务的影响
多目录联合访问,消除冷热数据的访问割裂。
策略化迁移,消除数据在多个目标之间的迁移对上层数据访问的影响。
2、Alluxio 在湖仓一体架构中的价值
(1)保障性能
Alluxio 从物理架构上,是贴近于计算层进行部署的,一个是贴近当前计算节点的local 层面的缓存 Alluxio Edge,另一个是 Alluxio Cluster 提供了一个分布式的、可扩展的分布式缓存。根据应用场景不同,可以选择灵活选择单独使用或配合使用。
利用缓存的能力,Alluxio 可以带来的价值主要为:
- 提升计算性能
贴近计算侧部署,通过 Alluxio 双层缓存,提供离计算更近、性能更高的数据读写,提升整体计算性能,最终提升终端业务效率。 - 网络削峰
通过 Alluxio 缓存减少重复数据访问以及临时数据读写带来的网络流量,降低业务繁忙时的网络流量,同时有效降低按流量收费的成本。 - 缓解存储负载
通过缓存减少存储侧部分数据读取和写入,延缓因服务能力不够的存储扩展,同时有效降低按照接口调用收费的成本。特别是很多公有云,比如用多少的空间,可以得到相应的网络带宽,但如果数据量并没有那么大,却想达到更高的性能,可能就需要采购额外的空间。使用 Alluxio 即可减少这部分成本。
(2)降低改造成本
从逻辑上来看,Alluxio 架构更加贴近于存储,因为其提供的是文件协议的接口能力。因此可以带来如下价值:
- 多存储统一访问
通过 Alluxio 集成不同位置、不同接口、不同安全协议的存储系统,提供统一数据访问入口,降低存储技术变动对上层的影响。 - 零业务改造
引入 Alluxio 不会引发业务代码的改造,包括库表 DDL 以及其他的数据访问链路的改造,让改造只停留在 Infra 层,降低架构升级的成本和阻力。 - 策略化数据管理
Alluxio 可以实现不同存储的 Union,把不同位置的数据 Union 成一个目录供访问,降低数据冷热分层、业务分区等改造成本。
3、基于 Alluxio 的湖仓一体架构
上图展示了 Alluxio 湖仓一体的逻辑架构。无论是大数据平台,还是湖仓一体化平台,整体上并没有很大区别,一般都是包括存储层、元数据层、计算层和管理应用层。
对于湖仓一体,table format 会有所不同,主要为 Hudi、Iceberg,或者现在新的 Paimon。这样湖仓 warehouse 和原有的 MPP 就统一了。另外,是 file format,不论数据是存在 HDFS 还是对象存储,一般会使用 Parquet、ORC 等比较高效的数据存储格式。
最终,形成统一的 Catalog service,对上服务。
从逻辑架构上来看,Alluxio 更加贴近存储层。命名空间把多个存储实现成一个统一视图,对上提供服务,进行接口协议的转换以及缓存加速,使得数据更容易被计算层使用。
从部署架构上,Alluxio 更加贴近于计算层,一般是使用计算层的资源进行部署,这样可以让 Alluxio 的缓存能力发挥最大化。
三、Alluxio 在湖仓一体架构中的应用场景
接下来介绍一些实际案例。
1、基于 Alluxio 的湖仓一体化实践:传统 Hadoop 向基于对象存储的湖仓一体化架构升级
第一个案例是从传统 Hadoop 向基于对象存储的湖仓一体化架构的升级。
希望升级为基于 Iceberg 或者 Paimon 的湖仓一体架构,在数据时效性以及开放性上进行一次升级。
挑战和痛点主要有:
- 湖仓一体使用的对象存储无法提供比较完善的数据安全保障。
- 湖仓一体使用的对象存储数据访问性能较低,影响各个层面的业务效率。
- 会有一段 Hadoop + 湖仓一体架构的并行期,有数据交互。
依托 Alluxio 构建了安全、高效的基于对象存储的湖仓一体架构。带来的价值收益包括:
- 安全保障:基于 Alluxio 构建北向 Kerberos 认证、Ranger 安全体系。
- 性能提升:对比直连 OSS,数据访问性能提升 3-5 倍。
- 新旧共存:HDFS 到 OSS 的策略化数据迁移,且不影响业务正常访问。
2、基于 Alluxio 的湖仓一体化实践:AI 和数据湖有机结合
最初的湖仓一体的架构是面向结构化和半结构化数据,但是现在随着 AI 大模型的突飞猛进,金融行业从传统的机器学习数据挖掘,转变为 AI 大模型体系,面对着非常多的非结构化数据。因此需要将 AI 与数据湖有机结合。
作为在线服务,模型的更新会非常频繁,随着大模型的推广,模型文件越来越大,更新上线效率挑战也越来越大。另外,因为 GPU 资源的稀缺性,模型训练往往需要跟着 GPU 分散在多个云上云下平台,模型训练获取数据的挑战也越来越大。
痛点主要有以下两方面:
- 在线推理服务往往跟离线数仓不在一起,并且使用的 S3 或者 FUSE 接口也不是 HDFS 可以提供的。
- 不论是推理服务的模型结果数据还是模型训练的训练数据以往都是通过搬运数据解决的:需要维护复杂的工程,占用大量的重复存储成本,数据等待也影响了GPU 利用率。
通过 Alluxio,连接唯一数据湖/仓库作为模型训练和推理集群的唯一真实数据来源,使用 GPU 集群的本地 SSD 资源作为缓存,只需要利用少量缓存空间即可,既实现了接口转义也保障了性能。带来的价值收益包括:
- 性能提升:GPU 利用率从 20-30% 提高到了 90+%
- 工程成本降低:数据迁移和搬运的开发和维护成本降低 75%。
- 存储成本降低:只需要整个数据集不到 3% 的缓存成本即可满足需求。
上图中展示了 AI 与数据湖结合的逻辑示意图。基于唯一的一个数据湖,构建训练集群,通过 Alluxio 实现数据链路的链接。通过 Alluxio 的数据预加载机制,配合数据模型训练实现数据的预加载,基于唯一的真实数据源建立起AI 和数据湖的有机结合。使得数据的时效性新鲜度大大提升,GPU 利用率也更高,而同时维护改造成本则更低,数据迁移和多副本管理的成本都完全消除了。并且,不用再去额外采购高性能存储介质,现有存储即能支撑模型训练。
3、基于 Alluxio 的湖仓一体实践:OLAP 性能提升
一些业务访问量大并且时效性要求高,针对这类需求,Alluxio 的缓存功能可以有效提升 OLAP 性能。
这一案例中,客户数据湖 HDFS 负载较高,加入 OLAP 分析业务后,Namenode响应以及 Datanode 吞吐都面临了很大挑战,经常因为 HDFS 集群的超时,导致业务查询延迟大大增加。
通过 Alluxio,既缓解了 Datanode 的压力,更缓解了 Namenode 的压力,使吞吐性能提升了 10 倍,整体端到端业务查询性能提升了 40%。
4、基于 Alluxio 的湖仓一体实践:网络削峰
使用对象存储,采购云上存储,吞吐能力和带宽都是有限的,任务量大时,对象存储本身的服务能力受限,会成为瓶颈。Alluxio 可以实现网络削峰。
可以看到在这一案例中,通过 Alluxio,大幅降低了查询延迟,得到了 4-5 倍的性能提升,减少了 80% 以上的远程访问,节省了存储成本。
5、Alluxio 带来的业务和技术价值
Alluxio 的核心技术价值为通过缓存减少数据拷贝,提升访问性能,并通过统一的数据访问模式,降低各种适配、改造成本。同时,通过多租户架构,保障各租户SLA 不互相影响。
Alluxio 带来的商业价值包括,更高的 ROI 和更低的 TCO,无需重组平台架构,缩短价值实现时间,帮助企业获得更高更快的营收。并且,应用可在不同存储和云厂商间移植,可即刻实现混合云/多云部署,降低成本。
以上就是本次分享的内容,谢谢大家。