Alluxio 1.5.0开源发布版的技术亮点

来源:互联网 发布:盐城大数据产业园官网 编辑:程序博客网 时间:2024/06/01 22:57

本文由南京大学顾荣、尹良良翻译整理自Alluxio公司技术博客,由Alluxio公司授权CSDN首发(联合),版权归Alluxio公司所有,未经版权所有者同意请勿转载。

开源Alluxio 1.5.0已经发布了大量的新功能和改进。Alluxio允许任何应用程序以内存级速度且透明地从任何存储系统访问数据。与生态系统中的其他技术的互操作性是实现这一目标的重要一步,在1.5.0版本中,我们从以下几个关键方面改进了Alluxio的可访问性。

  • Alluxio Docker集成
  • Alluxio Golang Client
  • 使用S3A在Ceph上部署Allluxio
  • 挂载特定配置属性

1.Alluxio Docker集成

Alluxio 1.5.0添加了文档和脚本,以便在Docker容器中运行Alluxio。可以使用-e参数传递Alluxio配置参数,并将日志写入stdout,以便它们显示在docker日志的输出中。下面的例子演示了如何在HDFS上通过Docker容器运行Alluxio。

cd alluxio-1.5.0/integration/dockerdocker build -t alluxio .docker run -d --net=host \           -e ALLUXIO_UNDERFS_ADDRESS=hdfs://HdfsMaster:9000/ \           alluxio masterdocker run -d --net=host --shm-size=10GB \           -e ALLUXIO_MASTER_HOSTNAME=AlluxioMaster \           -e ALLUXIO_WORKER_MEMORY_SIZE=10GB \           -e ALLUXIO_UNDERFS_ADDRESS=hdfs://HdfsMaster:9000/ \           alluxio worker

在EC2实例上通过Docker容器运行Alluxio的相关教程, 请参阅文档。

2.Alluxio Golang Client

此前,Alluxio推出了一个代理进程,默认情况下与每一个Alluxio Master和Worker一起运行,并且提供了REST API,相当于Alluxio本地文件系统API。为了能基于REST API与Alluxio进行交互,在1.5.0版本中,Alluxio推出了GO Client。该客户端可从其自身的Repository中获取,通过“go get”机制导入用户程序中。

除了提供在GO环境下与Allluxio通信外,该客户端的实现也体现了基于REST API实现一种语言绑定Alluxio是十分容易的。

注意通过REST API与Alluxio通信需要额外的网路跳数和(或)内存副本,因此预期其性能不如原生Java客户端。另一方面,基于REST API的客户端都将从任何本地java客户端的改进中受益,意味着GO Client 与其他针对REST API开发的客户端将始终具有最新特性。

下面的例子演示了使用GO程序与Alluxio交互:

package mainimport ("fmt"    "log"    alluxio "github.com/Alluxio/alluxio-go"    "github.com/Alluxio/alluxio-go/option")func main() {    fs := alluxio.NewClient(<proxy-host>, <proxy-port>, <timeout>)    ok, err := fs.Exists(<path>, &option.Exists{})    if err != nil {        log.Fatal(err)    }    fmt.Println(“path %v exists: %v”, <path>, ok)}

3.使用S3A在Ceph上部署Allluxio

在1.5.0版本中,Alluxio可以使用S3A连接器连接到Ceph。相较于Swift连接器,S3A连接器提供了显着的功能和性能改进。

如下图所示,当读取1 GB大小的文件时,S3A连接器的读取性能可提高3倍。

这里写图片描述

4.挂载特定配置属性

使用Alluxio的一个重要优势是将不同的底层文件系统(如S3,HDFS,GCS等)映射到一个统一的Alluxio命名空间,与在本地文件系统上设备类似,每个文件系统都位于隔离的挂载点下。从1.5.0版本开始,除了遵守特定类型的存储系统的全局配置设置外,Alluxio还支持为每一个挂载点设置(各自的)配置属性。配置且挂载不同底层文件系统后,访问这些系统对于Alluxio文件系统应用来说是完全透明的。因此,Alluxio可以帮助系统管理员隐藏复杂性并且降低管理难度。

举例说明,用户Alice在AWS上有多个S3 bucket,她需要从不同的bucket中访问数据。原来Alice只能将共享同一系统认证密钥的S3 bucket挂载到Alluxio中,而现在Alice可以使用单独的认证密钥挂载每个bucket,如下所示:

$ bin/alluxio fs mount /mnt1 s3a://alice-bucket1/ --option aws.accessKeyId=<accessKey1> --option aws.secretKey=<secretKey1>$ bin/alluxio fs mount /mnt2 s3a://alice-bucket2/ --option aws.accessKeyId=<accessKey2> --option aws.secretKey=<secretKey2>

此后,所有认证的Alluxio用户可以自由访问 /mnt1 和 /mnt2,甚至没有注意到它们来自两个不同的桶,并使用不同的认证密钥进行访问。

5.更多

本博客仅强调了Alluxio 1.5.0中的一些新功能和改进。 更详细的内容,请查看发行说明。

您可以按照快速入门指南,轻松开始使用Alluxio开源版或社区版。