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

  1. 云栖社区>
  2. 博客>
  3. 正文

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

知与谁同 2017-09-01 10:07:43 浏览2193
展开阅读全文

开源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倍。

image


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公司所有,未经版权所有者同意请勿转载。

网友评论

登录后评论
0/500
评论
知与谁同
+ 关注