Alluxio DORA:新一代Alluxio架构

2023/12/20 19:17
阅读数 62

近期,我们推出了全新的Alluxio Enterprise AI产品。新产品的一项关键创新是采用了新一代架构 DORA——去中心化对象存储架构。本文探讨了我们对DORA 架构的开发过程,包括开发契机、设计决策和架构实现。


一、从数据分析转向AI工作负载

Alluxio自 2016 年推出企业版以来,一直在不断强化针对 Spark、Presto、Trino 和 Hive等大数据分析工作负载的功能和性能。它的语义类似于通用分布式文件系统,是专门为这些框架及其工作负载量身定制的。例如,Alluxio使用基于RAFT的分布式系统进行日志存储并确保高可用性,通过由单个master来创建和维护 inode tree来提供具有强一致性的文件系统语义。此外,还针对顺序文件操作进行了优化,提高了 MapReduce 和 Spark 工作负载的吞吐量。


近年来不少发展趋势都在挑战或重构我们当初的设计假设和设计考量,包括 Kubernetes 环境中存储和计算的内在解耦、传统HDFS 向对象存储和云存储过渡,以及在分析工作负载中列式结构化数据存储越发占据主导地位。而这其中的突出机遇和挑战之一是解决模型训练和模型服务的爆炸性增长,这当中可能涉及数十亿甚至更多的文件。


这些转变为Alluxio当前的架构提供了独特机遇和挑战。具体来说,在一个master节点上通过中心化的inode tree 来管理整个命名空间可能会给Alluxio master带来压力,尤其是当命名空间不断增长时。此外,在同时处理数十亿个文件时,当前的文件系统日志也可能成为重启或故障转移期间的性能瓶颈。此外,频繁访问列式存储会导致大量的seek操作。现有的优化主要是将块大小(block size)设置为较大数值64-256MB,性能好坏很大程度取决于预拉取策略,而激进的预拉取策略会引起不必要的读放大问题,从而引起网络流量压力增加。


因此,我们正在向更简单、更具可扩展性和模块化的架构转型。转型后,开发人员将能够快速迭代、降低运营成本并确保更高的可靠性。


二、全新的去中心化对象存储架构

DORA(Decentralized Object Repository Architecture的缩写)是Alluxio的新一代架构。


作为分布式缓存系统,DORA具有低延迟、高吞吐量和节省成本的特点,同时旨在为 AI 工作负载提供高性能的数据访问层

 

DORA 利用去中心化存储和元数据管理来提供更高的性能和可用性,以及可插拔的数据安全和治理,从而提高大规模数据访问的可扩展性和管理效率。

 

DORA的架构目标:

可扩展性:可扩展性是DORA的首要目标,旨在支持数十亿个文件,从而满足数据密集型应用(如AI训练)的需求。

高可用性:DORA的架构设计考虑了高可用性,具有99.99%的正常运行时间,并在master节点层面提供了单点故障保护。

性能:性能也是DORA的核心目标,它优先考虑模型训练、模型服务的速度,以及用于AI工作负载的GPU利用率

下图展示了DORA的架构设计,包含四个重要组件:服务注册(service registry)、调度器(scheduler)、客户端(client)和worker。

服务注册负责服务发现并维护worker列表;

Scheduler 处理所有异步作业,例如分布式数据加载;

客户端在应用程序内部运行,并通过一致性哈希算法来确定要访问哪个worker;

Worker 是最重要的组件,因为它存储共享同一个键(key)的元数据和数据,键通常是文件的路径。


三、技术亮点

3.1缓存数据亲和

客户端从高可用服务注册(例如基于Raft或Kubernetes的Alluxio Master,可以支持数万个Alluxio Worker)获取所有DORA Worker的列表。然后,客户端使用一致性哈希算法以文件路径为键来确定访问哪个worker,确保同一个文件始终缓存到同一个worker上,从而获得缓存命中率最大化。由于服务注册不在关键I/O路径上,因此不会成为性能瓶颈。


此外,DORA的架构允许向集群添加更多节点来轻松实现扩容。每个worker节点可以支持数千万个文件,可以轻松应对不断增长的数据量和用户群。


3.2页数据存储

DORA 使用经严格测试的页存储模块进行缓存,从而可以更精细地缓存大文件上小至中等规模的读取请求。这种可靠的页存储技术已在 Meta、Uber 和TikTok的Presto 等应用中得到验证。DORA 的细粒度缓存使得读放大情况减小到原先的1/150,并使得文件随机读性能提高了 15 倍。


3.3去中心化元数据存储

DORA 将元数据传递给每个worker,确保元数据始终可访问且可用。为了优化元数据访问,DORA 对元数据条目使用两级缓存系统。第一级缓存是内存缓存,它将元数据条目存储在内存中。此缓存具有可配置的最大容量和有效时间 (TTL) 设置,可设置过期时限。第二级缓存是持久化缓存,通过RocksDB 将元数据条目存储在磁盘上。持久化缓存具有无限容量,具体取决于可用磁盘空间,并且还使用基于TTL的缓存驱逐策略,防止主动同步或主动失效。存储的元数据类似页存储,也是基于完整UFS路径的哈希值来确定分发到哪个Dora Worker。


内存和持久化缓存的组合有助于确保元数据能够随时可用和可访问,同时还可以高效利用系统资源。元数据的去中心化避免了在元数据主要由master节点来管理的架构中可能出现的瓶颈。由于每个DORA worker节点可存储多达 3000 万至 5000 万个文件, 整个系统便可以支持拥有数十亿文件的大规模数据密集型应用。


3.4零拷贝网络传输

DORA提供了基于Netty的数据传输解决方案,相比gRPC,性能提升了30%-50%。该解决方案具有几个优点,包括:

减少跨不同线程池的数据拷贝;

采用零拷贝传输,避免Protobuf的序列化;

优化堆外(off-heap )内存使用,避免出现OOM错误;

没有额外的HTTP header, 因而减少数据传输量。


3.5 Scheduler and Distributed Loader  Scheduler 和 Distributed Loader

我们的scheduler提供直观且可扩展的解决方案,兼顾了可观察性、可扩展性和可靠性,确保高效作业调度。此外,Scheduler还用于实现分布式数据加载,能够加载数十亿个文件。


四、基准测试结果

4.1创建和读取海量文件(单个woker节点) 

我们对DORA进行简单的扩容测试,确定其在单个worker节点上读、写文件的能力是否存在性能退化。测试使用了三个不同文件数量参数 - 480万个文件、2400万个文件和4800万个文件。worker节点能够在不出现任何显著性能下降的情况下读、写4800万个文件。

4.2在结构化数据上的随机读取

从图中可见,在比较单线程随机冷读的性能(以延迟作为衡量指标)时,DORA和Alluxio 2.x 的延迟基本持平。然而,在对比单线程随机热读的性能时,DORA相较Alluxio 2.x有10倍的提升。当我们进行多线程测试(4个线程)时,性能差距进一步拉开。DORA在4线程随机冷读较Alluxio 2.x有3倍左右的性能提升,而在4线程随机热读上实现了高达20倍的性能提升。这组对比结果清晰地显示,DORA采用随机读算法的性能能很好地随着并发请求数的增加而成比例提升。如果说在单线程冷读对比中,不同版本Alluxio的性能还具有可比性;那么在热读场景下,不论是单线程还是多线程/并发读取,Alluxio DORA都展现出压倒性的优势。


五、结论及下一步工作

总而言之,DORA是一个去中心化的对象存储架构,在支持AI工作负载的同时可实现低延迟、高吞吐量和成本节约。该架构的设计考虑了可扩展性、高可用性和性能,旨在提供可支持数十亿文件的统一数据层。


DORA的发布是Alluxio演进过程中一个重要里程碑,有效地帮助企业在不断变化的市场环境中保持竞争力。


我们将继续强化DORA的可扩展性、可靠性和性能。此外,我们还将在下列领域进一步探索:

进一步优化成本和存储效率

增强数据和元数据的RESTful API

为ETL和remote shuffle 任务提供更好的支持


软件下载

Alluxio Enterprise AI 下载方式:(扫码下载)


关于Alluxio

Alluxio 是全球领先的针对分析和AI的高性能数据平台提供商,可加速企业AI产品价值变现,并最大化基础设施的投资回报率。Alluxio数据平台位于计算与存储系统之间,能够在数据工作流的各个阶段为数据平台上的工作负载提供统一视图。无论数据位于何处,该平台均可提供高性能的数据访问,简化数据工程,提高GPU利用率,并降低云计算和存储成本。企业无需使用专用存储,即可大幅加速模型训练和模型服务,并在现有数据湖上构建AI基础设施。


Alluxio在头部投资者的支持下, 为全球科技、互联网、金融和电信企业提供服务,目前全球排名前 10 的互联网公司中有 9 家在使用Alluxio。


【推荐阅读】


【新书发布,扫码抢购】


精选智库

本文分享自微信公众号 - Alluxio(Alluxio_China)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部