Alluxio - 为机器学习和统计分析而生的数据编排工具

今天给大家分享一款数据编排工具,名字叫做Alluxio,不知道大家有没有听过?

说句实话,我还是第一次听说有这款软件存在,虽然这款软件,早在2014年,就有人在开源中国中提交了。

Alluxio基于Apache License 2.0开源,当前代码放在Github上。从Github上的star和fork数量来看,也算是一款比较热门的软件了。不知道大家的公司有没有尝试过这款产品?(欢迎用过的小伙伴在评论区留言讨论

最初的Alluxio项目,起源于UC Berkeley AMPLab,他被作为Berkeley Data Analytics Stack (BDAS)的数据访问层。当前参与贡献的开发者有1000多名,他们分别来自于Alibaba, Alluxio, Baidu, CMU, Google, IBM, Intel, NJU, Red Hat, Tencent, UC Berkeley 和Yahoo等300多家组织机构。可以说,在行业内已经是很火了,据说很多互联网大厂都在玩这个!!!

一张图看清Alluxio

上面提到了,Alluxio是一个数据编排工具。这里插一句题外话,提到编排工具大家肯定首先想到的是K8S,它是一个容器编排工具,所谓的编排工具,就是安排各个容器怎么工作的。那么我们联想一下,这个Alluxio是不是就是一个安排数据应用怎么协调工作的工具呢? 带着这个问题,我们来看下面这张图:

从上图可以看到Alluxio是一个 介于AWS S3、HDFS、Ceph、MinIO与Presto、Spark、Hive等组件之间的软件 我们展开分析一下:

  • Spark、Hive、Presto是什么?是计算引擎
  • 以上软件的数据存在哪?通常存在HDFS里,当然也支持别的分布式文件系统
  • Alluxio介于他们之间,他能做什么?要么实现功能的扩展,要么实现性能的加速
  • Alluxio介于他们之间,他必须做什么?必须做好南北向的接口,因为他要兼容数据栈里的各种软件

带着这些问题,我们进入第二部分,看一看Alluxio的功能特点及优势👇👇👇👇

Alluxio的优秀特性

Alluxio通过简化应用程序访问数据的方式(无论数据的格式或位置),帮助使用者克服从数据中提取有用信息的障碍。Alluxio的优秀特性包括:

  • 内存级别的IO访问速度:Alluxio可以作为分布式共享缓存服务,因此与Alluxio通信的计算引擎可以透明并快速的访问热数据,特别是来自远程位置的数据,以提供内存I/O吞吐量。此外,Alluxio的分层存储结构可以同时利用内存和磁盘(SSD/HDD),使数据驱动应用的弹性扩展具有更高的成本效益。

  • 简化云和对象存储的使用:与传统文件系统相比,云和对象存储系统使用不同的语义,这对性能有影响。常见的文件系统操作(如目录罗列和重命名操作)通常会产生巨大的性能开销。在访问云存储中的数据时,数据计算应用没有节点级存储或跨应用缓存。使用云或对象存储部署Alluxio可以通过从Alluxio而不是底层云或对象存储提取数据来缓解这些问题的影响。

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

  • 使应用部署更容易:Alluxio管理计算引擎与文件或对象存储之间的通信,将应用程序的数据访问请求转换为底层存储接口。Alluxio与Hadoop兼容。现有的数据分析应用,如Spark和MapReduce等,可以在Alluxio上运行,而无需任何代码更改。

以上四个特性,是不是正好跟我们前面的假设呼应上,Alluxio在计算引擎和分布式存储中间,既能提升计算引擎的访问速度,又能使复杂的数据栈部署更加容易。下面贴一张Alluxio的架构图,这里不展开讲,大家感兴趣的看一下,后面会单独写文章展开介绍。

Alluxio能给大家打来什么革命性能力?

通过在中间提供一层缓存、统一的南北接口层,Alluxio相比于传统的计算存储结构,可能为大型企业/复杂数据栈的公司带来三个方面的革新:

  • 全局命名空间:Alluxio可以作为多个独立存储系统的单点访问层。这对下可以为所有数据源提供统一的视图,对上可以为应用提供标准接口。

  • 智能多层缓存:Alluxio集群充当连接存储系统中数据的读写缓存。可以通过配置策略自动优化数据放置位置,以提高内存和磁盘(SSD/HDD)的性能和可靠性。缓存对用户是透明的,并使用缓冲层来保持与持久存储的一致性。

  • 服务端API转换:Alluxio支持行业通用API,如HDFS API、S3 API、FUSE API、REST API。它可以透明地从标准客户端接口转换为任何存储接口。Alluxio管理计算引擎与文件或对象存储之间的通信,无需复杂的系统配置和管理。

最后,虽然Alluxio是开源软件,但是也有对应的商业化公司。他的开源版本和企业版功能基本一致,缺少的主要功能有复制支持和Kerberos身份验证,另外还有商业支持也不随开源版本提供。

如果大家仍然意犹未尽,可以点赞关注并转发哦,我会继续给大家带来进一步的分析;另外也可以通过访问官方网站:https://www.alluxio.io/ 获取更多的信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章