Alluxio分布式存储系统

Alluxio简介

Alluxio简介详见官网Alluxio,这里抄录部分官网简介内容。

什么是Alluxio

Alluxio是全球首个 用于分析的开源数据编排技术和用于云的AI。它弥合了数据驱动应用程序和存储系统之间的鸿沟,使存储层中的数据更接近数据驱动应用程序,并使其易于访问,从而使应用程序可以通过通用接口连接到众多存储系统。Alluxio的内存优先分层架构使数据访问的速度比现有解决方案快几个数量级。

在数据生态系统中,Alluxio位于数据驱动的应用程序(例如Apache Spark,Presto,Tensorflow,Apache HBase,Apache Hive或Apache Flink)与各种持久性存储系统(例如Amazon S3,Google Cloud Storage,OpenStack Swift,HDFS,GlusterFS,IBM Cleversafe,EMC ECS,Ceph,NFS,Minio和Alibaba OSS之间。Alluxio统一存储在这些不同存储系统中的数据,向其上层数据驱动的应用程序提供统一的客户端API和全局名称空间。

Alluxio项目起源于UC Berkeley AMPLab(请参阅论文),是Berkeley Data Analytics Stack(BDAS)的数据访问层。它在Apache License 2.0下是开源的。Alluxio是发展最快的开源项目之一,已吸引了300多家机构的1000多名参与者,其中包括阿里巴巴,Alluxio,百度,CMU,Google,IBM,Intel,NJU,Red Hat,腾讯,加州大学伯克利分校和Yahoo。

如今,Alluxio已由数百家组织机构投入生产 ,其中最大的机构部署超过了1500个节点。

Alluxio分布式存储系统

优势

Alluxio通过简化应用程序访问数据的方式(无论格式或位置如何),帮助克服了从数据中获取洞察力的障碍。Alluxio的优势包括:

  1. 内存速度I / O:Alluxio可用作分布式共享缓存服务,因此与Alluxio进行通信的计算应用程序可以透明地缓存频繁访问的数据(尤其是来自远程位置的数据),以提供内存中I / O吞吐量。此外,Alluxio可以利用内存,SSD或磁盘的分层存储使弹性扩展数据驱动的应用程序具有成本效益。

  2. 简化使用的云和对象存储:与传统文件系统相比,云和对象存储系统使用不同的语义,这些语义会对性能产生影响。常见的文件系统操作(例如目录列表和重命名)通常会导致很大的性能开销。当访问云存储中的数据时,应用程序没有节点级本地性或跨应用程序缓存。将Alluxio与云或对象存储一起部署可缓解这些问题,因为将从Alluxio而不是基础云或对象存储中检索数据。

  3. 简化的数据管理:Alluxio提供对多个数据源的单点访问。除了连接不同类型的数据源外,Alluxio还使用户能够同时连接到同一存储系统的不同版本,例如HDFS的多个版本,而无需进行复杂的系统配置和管理。

  4. 易于部署的应用程序:Alluxio管理应用程序与文件或对象存储之间的通信,将来自应用程序的数据访问请求转换为基础存储接口。Alluxio向下兼容多种存储系统,现有的数据分析应用程序(例如Spark和MapReduce程序)可以在Alluxio之上运行,而无需进行任何业务逻辑代码的更改。

技术创新

Alluxio将三个关键的创新领域整合在一起,以提供独特的功能集。

  1. 全局命名空间:无论物理位置如何,Alluxio都是对多个独立存储系统的单点访问。这提供了所有数据源的统一视图以及用于应用程序的标准接口。有关更多详细信息,请参见 命名空间管理
  2. 智能多层缓存:Alluxio群集充当已连接存储系统中数据的读写缓存。可配置策略自动优化数据放置,以提高内存和磁盘(SSD / HDD)的性能和可靠性。缓存对用户是透明的,并使用缓存来保持与持久性存储的一致性。有关更多详细信息,请参见 Alluxio存储管理
  3. 服务器端API转换:Alluxio支持行业通用的API,例如HDFS API,S3 API,FUSE API,REST API。它透明地从标准客户端接口转换为任何存储接口。Alluxio管理应用程序与文件或对象存储之间的通信,从而无需进行复杂的系统配置和管理。文件数据看起来像对象数据,反之亦然。

我个人对Alluxio的的整体印象,主要是有三点:

  1. 统一的存储入口。Alluxio在生态结构上处于存储和计算的中间层,功能上像是一个适配器,向下适配了社区常用的几乎全部的存储系统,比如Hadoop、Ceph、OSS等;向上,提供统一的api接口。
  2. 数据分层存储。在Alluxio中,也将数据分成了冷数据和热数据,针对冷、热数据,Alluxio采用了数据分层存储的方式。对于冷数据,Alluxio将数据存储在磁盘中(SSD/HDD),如果冷数据使用次数频繁,则自动的将数据移动到内存中。数据的分层存储,很好的平衡了性能和存储代价。
  3. 远端缓存加速。用户通过Alluxio首次请求读取数据时,会直接从Alluxio底层存储远端读取数据,之后,这部分数据会被缓存到Alluxio中,如果用户再次读取这部分数据,会直接读取Alluxio中缓存的数据,而不是从远端读取。这里的Alluxio缓存,我的理解是有两部分,即Alluxio服务器端缓存+客户端本地缓存。客户端本地缓存对要求数据本地性计算的计算引擎【比如说Spark】,性能提升非常大。

现在Alluxio刚发布了社区版2.3.0,说是性能有了很大的提升,并且加强了对k8s的支持。现在github也不是很活跃,在k8s中之前的版本支持也不是很完善。

接下来的一篇文章将介绍在k8s中,如何借助Alluxio保障Spark较好的数据本地性。

相关文章:

  • 2021-08-29
  • 2021-11-21
  • 2021-08-17
  • 2021-05-25
  • 2021-09-25
  • 2022-01-05
  • 2021-10-06
猜你喜欢
  • 2022-12-23
  • 2021-11-25
  • 2021-10-31
  • 2021-08-14
相关资源
相似解决方案