首页 - 信息 - 使用Alluxio构建计算存储解耦架构

使用Alluxio构建计算存储解耦架构

2023-10-02 05:15
本博客讨论了在数据平台上使用Alluxio的几个优点,主要从以下几个方面: 1 计算存储解耦架构的崛起趋势 2 Alluxio如何在存储解耦架构中加速计算-数据访问 3 通过运行SparkSQL工作负载展示Alluxio的优势 动机 计算-存储紧耦合架构是在数据存储节点上进行计算的架构。这种架构解决了计算引擎的数据需求,但是维持这种紧耦合的架构需要一定的成本,这往往会超出其带宽。即将到来的性能改进。随着云计算的兴起,独立扩展的计算和存储变得更便宜,维护成本也更低。 此外,数据已成为一种新型的宝贵资源。所有现代组织都试图获取尽可能多的数据,而数据存储阶段往往早于数据价值探索阶段,因此存储和计算的紧密耦合是不切实际的。计算存储范式的倒置使许多数据平台陷入困境,迫使它们在性能、成本和灵活性之间进行权衡。 Alluixo 通过提供计算-存储解耦架构解决了这一困境,该架构与计算-存储紧耦合架构具有相同的性能,并且更加灵活。 Alluxio 的工作原理 当 Alluxio 在计算节点上或附近运行时,Alluxio 通过提供靠近计算端的缓存来提高性能。应用程序和计算框架通过Alluxio发送请求,Alluxio又从远程存储系统获取数据。同时,Alluxio复制一份数据并将其缓存在Alluxio存储空间中,以便数据可以在Alluxio节点的内存中或持久存储介质中可用。然后应用程序将直接读取缓存中的数据。这肯定会提高计算存储解耦架构的性能。然而,Alluxio只处理工作集数据,不保存持久数据。因此,Alluxio不需要大容量存储,无论数据总量有多少,都可以在一定大小的存储空间内运行。 Alluxio还利用多级缓存和数据管理技术来有效管理存储空间。 Alluxio位于计算层和存储层之间,为数据访问和集成提供统一的入口。这意味着应用程序可以自由使用Alluxio支持的任何统一接口,例如S3接口或Hadoop兼容接口。另外,数据可以在存储系统和应用端之间自动交互,而不管底层存储系统原本支持什么接口。这个概念不仅仅局限于API的翻译,底层存储系统的安全性和一致性等特性也通过Alluxio抽象并提供。在 S3 和 Alluxio 之上运行 SparkSQL 为了说明Alluxio给计算存储解耦架构带来的性能提升,我们在SparkSQL上运行TPC-DS 2.4,数据存储在S3中。 TPC-DS是专门为大数据分析查询定制的实用工业测试基准。这组99个查询是顺序执行的,这意味着初始查询读取S3中的冷数据,然后将从Alluxio存储系统中查询缓存的数据。实验在AWS上进行,使用开源版本的Alluxio 1.7.0和Apache Spark 2.2。集群有4个r4.4xlarge工作节点,Alluxio工作器和Spark工作器在每个节点上同时运行。灰色的S3数据代表TPC-DS查询S3中存储的Parquet数据的实验性能结果。 Alluxio 根本不参与数据读取。写。蓝色的Alluxio数据代表使用Alluxio后的实验性能结果,但Alluxio在实验开始时并没有存储数据。随着查询的进行,Alluxio 会缓存数据并根据数据流行度自动管理其存储空间。例如,对于频繁访问的文件,Alluxio 会复制数据的多份副本,以提高读取数据的吞吐量。下表展示了测试中不同类型查询的性能结果以及应用Alluxio对查询性能的影响。 第一个查询集是初始查询,直接从S3读取冷数据。由于Alluxio必须预先从S3读取数据,因此两种查询方式的效果几乎相同。从Alluxio 1.7.0版本开始,Alluxio Worker将通过客户端数据访问智能异步读取块数据,因此初始数据读取阶段不会产生重大影响,甚至可能提高查询效率。 在最好的情况下,大部分数据集存储在Alluxio中并且查询是I/O密集型的,Alluxio可以将查询速度提高约10倍。对于大多数查询类型,使用Alluxio后性能都会得到提高,例如宽扫描查询。不使用Alluxio时查询的I/O速度处于网络通信级别,而使用Alluxio时,S3上的I/O查询速度可以接近本地内存级别。在评估查询性能时,查询受到I/O瓶颈的限制越多,引入Alluxio后吞吐量的提升就越大。由于使用了S3和AWS存储,网络状态理想,实验可以充分利用10G饱和网络连接。在网络带宽或磁盘I/O带宽较低、数据传输受到较多限制的情况下,Alluxio将带来更大的性能提升。 相反,对于计算极其密集或缓冲密集型查询(例如具有复杂谓词的连接查询请求),Alluxio 的性能提升较小。对于计算和I/O都成为部分瓶颈的查询,Alluxio对I/O受限的部分进行加速,提升的性能处于整体实验结果的中间位置。在实验中,使用 Alluxio 后没有查询出现性能下降。 比较总运行时间,虽然Alluxio最初不加载数据,但Alluxio仍然比直接从S3读取数据快40%。随着查询任务的进行,Alluxio 根据数据访问模式和频率逐渐缓存数据。但总的运行时间并不能完全描述实际情况,因为长时间的查询会占很大比例。通过给予每个查询相同的权重,Alluxio 可以将查询的几何平均值提高近两倍!这些结果反映了 Alluxio 在所有 TPC-DS 基准测试中提高查询性能的能力,甚至对某些查询提高了一个数量级。此外,将Alluxio引入整个技术堆栈不会对任何查询性能产生负面影响。 综上所述 TPC-DS代表一类使用Alluxio实现计算存储解耦架构以提高性能的工作负载。通过使用Alluxio,需要不同API的应用程序可以无缝地访问和传输来自解耦和以前不兼容的存储系统的数据,而无需处理性能损失。