在OSS上配置Alluxio

Slack Docker Pulls GitHub edit source

该指南介绍如何配置Alluxio以使用Aliyun OSS作为底层文件系统。对象存储服务(OSS)是阿里云提供的一个大容量、安全、高可靠性的云存储服务。

初始步骤

要在许多机器上运行Alluxio集群,需要在这些机器上部署二进制包。你可以自己编译Alluxio,或者下载二进制包

另外,为了在OSS上使用Alluxio,需要创建一个bucket(或者使用一个已有的bucket)。还要注意在该bucket里使用的目录,可以在该bucket中新建一个目录,或者使用一个存在的目录。在该指南中,OSS bucket的名称为OSS_BUCKET,在该bucket里的目录名称为OSS_DIRECTORY。另外,要使用OSS服务,还需提供一个oss 端点,该端点指定了你的bucket在哪个范围,本向导中的端点名为OSS_ENDPOINT。要了解更多指定范围的端点的具体内容,可以参考这里,要了解更多OSS Bucket的信息,请参考这里

安装OSS

Alluxio通过统一命名空间统一访问不同存储系统。 OSS的安装位置可以在Alluxio命名空间的根目录或嵌套目录下。

根目录安装

若要在Alluxio中使用OSS作为底层文件系统,一定要修改conf/alluxio-site.properties配置文件。首先要指定一个已有的OSS bucket和其中的目录作为底层文件系统,可以在conf/alluxio-site.properties中添加如下语句指定它:

  1. alluxio.master.mount.table.root.ufs=oss://<OSS_BUCKET>/<OSS_DIRECTORY>/

接着,需要指定Aliyun证书以便访问OSS,在conf/alluxio-site.properties中添加:

  1. fs.oss.accessKeyId=<OSS_ACCESS_KEY_ID>
  2. fs.oss.accessKeySecret=<OSS_ACCESS_KEY_SECRET>
  3. fs.oss.endpoint=<OSS_ENDPOINT>

此处, fs.oss.accessKeyIdfs.oss.accessKeySecret分别为Access Key ID字符串和Access Key Secret字符串,均受阿里云AccessKeys管理界面管理;fs.oss.endpoint是Bucket概述中所说的Bucket的endpoint,其可能的取值比如oss-us-west-1.aliyuncs.comoss-cn-shanghai.aliyuncs.com。 (OSS Internet Endpoint)。

更改完成后,Alluxio应该能够将OSS作为底层文件系统运行,你可以尝试使用OSS在本地运行Alluxio

嵌套目录安装

OSS可以安装在Alluxio命名空间中的嵌套目录中,以统一访问多个存储系统。 Mount 命令可以实现这一目的。例如,下面的命令将OSS容器内部的目录挂载到Alluxio的/oss目录

  1. $ ./bin/alluxio fs mount --option fs.oss.accessKeyId=<OSS_ACCESS_KEY_ID> \
  2. --option fs.oss.accessKeySecret=<OSS_ACCESS_KEY_SECRET> \
  3. --option fs.oss.endpoint=<OSS_ENDPOINT> \
  4. /oss oss://<OSS_BUCKET>/<OSS_DIRECTORY>/

使用OSS在本地运行Alluxio

配置完成后,你可以在本地启动Alluxio,观察一切是否正常运行:

  1. $ ./bin/alluxio format
  2. $ ./bin/alluxio-start.sh local

该命令应当会启动一个Alluxio master和一个Alluxio worker,可以在浏览器中访问http://localhost:19999查看master UI。

接着,你可以运行一个简单的示例程序:

  1. $ ./bin/alluxio runTests

运行成功后,访问你的OSS目录oss://<OSS_BUCKET>/<OSS_DIRECTORY>,确认其中包含了由Alluxio创建的文件和目录。在该测试中,创建的文件名称应像OSS_BUCKET/OSS_DIRECTORY/default_tests_files/BasicFile_CACHE_PROMOTE_MUST_CACHE这样。。

运行以下命令停止Alluxio:

  1. $ ./bin/alluxio-stop.sh local