[Alluxio基础]-- 初识 Alluxio(原名 Tachyon )

版权声明:尊重原创,转载请标明,本文转自 https://blog.csdn.net/high2011/article/details/84312450

1、前言

我们有了解分布式文件系统(HDFS)、分布式计算(如Spark),但是肯定有许多小伙伴未曾了解过 Alluxio,当然我也未曾深入了解,那么,今天,我们就一起初步了解下 Alluxio。

它是什么?它能用在哪里?它的特性是什么?以及它是怎样工作的?

2、Alluxio是什么?

 Alluxio项目起源于加州大学伯克利分校AMPLab的一项名为Tachyon的研究项目,该项目是伯克利数据分析堆栈(BDAS)的数据层。有关详细信息,请参阅 李浩源 的博士论文Alluxio:虚拟分布式文件系统

2.1 以内存为中心的虚拟分布式存储系统

2.2 处于存储和计算之间的系统

  • 以内存为中心 - 在处理远程存储系统时,读/写吞吐量通常受网络和磁盘速度限制在100 Mbps到10 Gbps。但是,对于RAM,吞吐量可以达到10到100 Gbps。理想情况下,Alluxio与应用程序位于同一位置,在许多情况下,这些应用程序允许直接在本地内存上执行读取和写入操作。我们说 'centric' 是因为您还可以在Alluxio层使用SSD和HDD以及分层存储功能。

  • Virtual - Alluxio提供单个文件系统命名空间(alluxio://),你可以通过该命名空间访问各种底层存储系统。应用程序只需要与Alluxio通信,然后Alluxio与已安装到其上的其他文件系统进行通信。它还可以根据用户配置透明地将数据保存到存储下。

  • 分布式 - Alluxio设计用于商用硬件,易于扩展。对于独立部署或多节点群集,数据分布在已分配给它的所有本地存储中。Alluxio为节点提供了执行 read/writes 的框架,而计算框架确保了良好的数据 locality

3、Alluxio能在哪里用?

Alluxio在大数据生态系统中占有独特的地位,存在于Amazon S3,Google云存储,EMC ECS,Apache HDFS或OpenStack Swift等存储系统以及Apache Spark或Hadoop MapReduce等计算框架和应用程序之间。

它管理数据访问和快速存储,促进作业之间的数据共享和位置,无论它们是否使用相同的计算引擎运行。结果是大数据应用程序的性能显着提高,同时为数据访问提供了通用接口。

Alluxio还弥补了大数据应用程序与各种存储系统之间的差距。由于Alluxio从应用程序中抽象出存储系统的集成,因此任何底层存储都可以支持在Alluxio上运行的所有应用程序和框架。再加上安装多个存储系统的能力,Alluxio可以作为任意数量的各种数据源的统一层。

å 

4、Alluxio是如何工作的?

Alluxio可以部署在单个主机或多节点群集上。

Alluxio的理想部署是将工人(我们将进一步覆盖的概念)与应用程序放在一起。这使应用程序可以直接访问内存中的数据。

为了解释Alluxio如何工作,让我们来看一下读取文件操作。有了Alluxio,所有应用程序需要做的就是调用 read方法:

read(alluxio://<path>)

应用程序只需要获得数据的内容,而不是它的来源。但在引擎中会发生更多的事情。

   (1)如果文件在Alluxio中并且在本地可用,则可以以内存速度读取。

   (2)如果它在Alluxio中,但在不同的节点上,客户端会对该节点上的Alluxio工作者进行远程调用,并且必须以本地网络的速度读取数据。

   (3)如果文件根本不在Alluxio中,Alluxio会透明地确定存储位置并取出它; 一旦加载,它将保持可重用。

注意:应用程序的任何输出都可以同步写入Alluxio,存储之下或两者,具体是取决于用户的配置。

为了实现上述功能,涉及几个组件,即主服务器,工作服务器和客户机。

  • Master - Alluxio master是负责管理系统全局元数据的过程,例如文件系统树。客户端与主服务器交互以读取或修改此元数据。此外,所有工作人员定期向主人发出心跳,以维持他们对集群的参与。主设备不会启动与其他组件的通信; 它只通过响应请求与其他组件交互。

    Alluxio可以部署在两种主模式之一,单主模式或容错模式。

  • Workers - Alluxio工作人员负责管理分配给Alluxio的本地资源。这些资源可以是本地内存,SSD和/或硬盘。Alluxio工作人员将数据存储为块并提供来自客户端的读/写请求。但是,工作人员只负责这些块中的数据; 从文件到块的实际映射存储在主服务器中。

    Alluxio的理想部署是将工作人员与应用程序放在一起的部署。这使应用程序可以直接访问内存中的数据。

  • Clients - Alluxio客户端为用户提供了一个通过文件系统API与Alluxio服务器交互的网关。它启动与主设备的通信以执行元数据操作,并与工作人员在Alluxio中读取和写入数据。存储在底层存储中但在Alluxio中不可用的数据可通过底层存储客户端直接访问。

5、Alluxio有哪些特点?

由于Alluxio位于现有存储解决方案之上,因此无需数据迁移和最少的代码更改,因此可轻松插入。功能文档跳转链接如下

  • Alluxio存储 - Alluxio 可以管理内存和本地存储,如SSDHDD,以加速数据访问。如果需要更细粒度的控制,分层存储功能可用于自动管理不同层之间的数据,从而将热数据保持在更快的层中。自定义策略易于插拔,引脚概念允许直接用户控制。

  • 可插拔存储 - Alluxio将内存数据保存到底层存储系统。当使用多个存储系统时,这可以实现容错和有效的数据管理。支持流行的存储后端,包括Amazon S3Google云端存储,OpenStack SwiftApache HDFSGlusterFS阿里巴巴OSS

  • 灵活的文件API - 我们的Alluxio Filesystem API类似于java.io.File类,提供InputStreamOutputStream接口以及对内存映射I / O的有效支持。我们建议使用此API以获得最佳性能。或者,我们提供Hadoop兼容接口,允许现有的Hadoop MapReduce和Spark程序使用Alluxio代替HDFS而无需更改任何代码。

  • Web UICLI - 用户可以通过Web UI轻松浏览文件系统。在调试模式下,管理员可以查看每个文件的详细信息,例如块位置和存储路径。用户还可以使用./bin/alluxio fs 命令行客户端与Alluxio进行交互; 例如,从Alluxio复制数据。

6、入门

对于不熟悉Alluxio的小伙伴,可以在本地 安装 Alluxio

有关其他安装方法,请访问我们的文档,了解如何使用Alluxio Manager安装Alluxio或安装不带Alluxio Manager的Alluxio

 

7、参考

https://github.com/Alluxio/alluxio

http://www.alluxio.com/

http://www.alluxio.com/docs/community/1.8/en/

猜你喜欢

转载自blog.csdn.net/high2011/article/details/84312450