利用Alluxio构建计算-存储解耦架构

存储 存储软件
计算-存储紧耦架构是一种在数据存储的节点上进行计算的架构,这种架构解决了计算引擎的数据需求,但维持这种紧耦结合的架构需要一定代价,这往往超出了其带来的性能提升。

 这篇博客探讨了在数据平台上使用Alluxio的几点优势,主要从如下方面介绍:

1 计算-存储解耦架构兴起的趋势

2 Alluxio如何加速计算-存储解耦架构中数据访问

3 通过运行SparkSQL workload展现Alluxio的优势

动机

计算-存储紧耦架构是一种在数据存储的节点上进行计算的架构,这种架构解决了计算引擎的数据需求,但维持这种紧耦结合的架构需要一定代价,这往往超出了其带来的性能提升。随着云计算的兴起,独立扩展计算和存储的成本和维护代价更低。

另外,数据已经成为一种新型的珍贵资源,所有现代组织都在试图获取尽可能多的数据,而数据存储阶段往往早于发掘数据价值阶段,所以存储计算的紧耦合是不切实际的。计算-存储范式的颠倒使很多数据平台陷入困境,强迫他们在性能,成本和灵活性之间进行权衡。Alluixo解决了这一两难困境,它提供了一种计算存储解耦架构,其性能与计算-存储紧耦合架构相同,并且更加灵活。

[[226316]]

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 worker节点,每个节点上同时运行Alluxio worker和Spark worker,灰色的S3数据代表了TPC-DS查询存储在S3中的Parquet数据的实验性能结果,Alluxio完全不参与数据读写。蓝色的Alluxio数据代表了使用Alluxio后的实验性能结果,但Alluxio在实验开始时没有存储数据。随着查询进行,Alluxio将对数据进行缓存,同时基于数据热度自动管理其存储空间。比如,对于经常访问的文件,Alluxio为了提升读数据的吞吐量,将拷贝多份数据,下表展示了测试中不同类型的查询性能结果,以及应用Alluxio对查询性能产生的影响。

***个查询集合是初始查询,即直接从S3中读取冷数据。因为Alluxio必须从S3中预先读取数据,所以两种查询方式的效果几乎相同。从Alluxio1.7.0版本开始,Alluxio worker会通过客户端数据访问方式智能地异步读取块数据,所以初始读取数据阶段不会造成较大影响,甚至会提升查询效率。

在***情况下,即大多数数据集都存储在Alluxio中,并且查询是I/O密集型,Alluxio可以加速查询速度10倍左右。针对绝大多数查询类型,使用Alluxio后性能都有所提升,例如宽扫描查询。不使用Alluxio查询的I/O速度是网络通信级别的,而使用Alluxio后,在S3上进行的I/O查询速率可以接近本地内存级别。在评估查询性能时,查询越受到I/O瓶颈限制,则引入Alluxio后提升的吞吐量越多。因为使用了S3和AWS存储,网络状态是理想的,实验可以充分利用10千兆饱和网络连接。在网络带宽或磁盘I/O带宽更低,数据传输受限更多的情况,Alluxio会带来更大的性能提升。

相反,对于极度的计算密集型或shuffer密集型查询,例如带有复杂谓词的join查询请求,Alluxio性能提升较少。对于计算和I/O都成为部分瓶颈的查询,Alluxio加速I/O受限的部分,提升的性能在总体实验结果中居中。在实验中,没有查询在使用Alluxio后性能下降。

 比较运行总耗时,尽管Alluxio初始没有加载数据,Alluxio还是比直接从S3读取数据快40%。随着查询任务的进行,Alluxio根据数据访问模式和频率逐渐缓存数据。然而,总运行耗时并不能全面描述实际情况,因为长耗时查询会占很大比重。通过赋予每个查询相同的比重,Alluxio可以提高查询的几何平均数接近两倍!这些结果反映了Alluxio可以提高所有TPC-DS基准测评中的查询性能,对于某些查询性能甚至能够提高一个数量级。而且,将Alluxio引入整个技术栈不会对任何查询性能产生负面影响。

结论

TPC-DS代表了一类采用Alluxio实现计算-存储解耦架构而提升性能的工作负载。通过使用Alluxio,需要不同API的应用可以无缝地从解耦开的、并且之前不兼容的存储系统中访问传输数据,而且这种数据访问无需处理性能损失方面的问题。

责任编辑:武晓燕 来源: Alluxio
相关推荐

2020-11-20 15:22:32

架构运维技术

2018-05-08 10:46:31

Hadoop大数据存储

2017-11-15 09:32:27

解耦战术架构

2017-12-26 15:52:31

MQ互联网耦合

2012-07-10 01:47:14

代码架构设计

2022-09-02 08:23:12

软件开发解耦架构

2018-01-01 06:41:44

耦合互联网架构配置中心

2013-09-16 10:19:08

htmlcssJavaScript

2016-11-30 15:30:42

架构工具和方案

2012-03-19 10:43:39

ibmdw

2021-03-10 05:50:06

IOCReact解耦组件

2024-03-08 16:27:22

领域事件DDD项目跨层解耦

2022-04-15 11:46:09

轻量系统解耦鸿蒙操作系统

2021-08-27 08:44:52

MQ架构耦合

2022-06-07 07:58:16

流程解耦封装

2022-12-28 07:45:17

2019-06-20 10:23:23

架构代码前端

2021-01-04 11:10:08

人工智能存储云计算

2021-09-18 10:51:09

分布式存储

2020-10-16 18:41:43

command设计模式代码
点赞
收藏

51CTO技术栈公众号