开源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/docker
docker build -t alluxio .
docker run -d --net=host \
-e ALLUXIO_UNDERFS_ADDRESS=hdfs://HdfsMaster:9000/ \
alluxio master
docker 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 main
import (
"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开源版或社区版。
版权申明:本文由南京大学顾荣等专家翻译整理自Alluxio公司技术博客,由Alluxio公司授权及CSDN首发(联合),版权归Alluxio公司所有,未经版权所有者同意请勿转载。