阿里云 OSS

本指南介绍如何将阿里云对象存储服务配置为 Alluxio 的底层存储系统。

阿里云对象存储服务(OSS)是阿里云提供的海量、安全、高可靠的云存储服务。OSS 提供多种存储类别,帮助您管理和降低存储成本。

有关阿里云对象存储服务的更多信息,请阅读其文档

先决条件

准备将阿里云OSS与Alluxio一起使用时,请遵循以下步骤。

<OSS_BUCKET>

<OSS_DIRECTORY>

要在桶中使用的目录,可以创建新目录或使用现有目录

<OSS_ACCESS_KEY_ID>

用于识别用户的 ID。请参阅 如何获取访问密钥对

<OSS_ACCESS_KEY_SECRET>

用于验证用户身份的密文。请参阅 如何获取访问密钥对

<OSS_ENDPOINT>

端点是其他服务可以用来访问 OSS 的域名。请参阅 公共云中的区域和 OSS 端点

基本设置

使用 挂载表操作 来增加一个新的挂载点, 指定Alluxio路径在其上创建挂载,指定OSS的路径作为UFS URI。 密钥和配置选项也可以通过指定 --option 标志作为挂载命令的一部分来指定,如配置挂载点所述。

一个将 oss://<OSS_BUCKET>/<OSS_DIRECTORY> 挂载到 /oss 的示例命令:

bin/alluxio mount add --path /oss/ --ufs-uri oss://<OSS_BUCKET>/<OSS_DIRECTORY> \
  --option fs.oss.accessKeyId=<OSS_ACCESS_KEY> --option fs.oss.accessKeySecret=<OSS_ACCESS_KEY_SECRET> \
  --option fs.oss.endpoint=<OSS_ENDPOINT>

请注意,如果您想挂载OSS bucket的根,请在bucket名称后面添加一个斜杠(例如oss://OSS_BUCKET/).

高级设置

请注意,配置选项可以指定为mount选项,也可以作为conf/alluxio-site.properties中的配置属性。 以下部分将介绍如何将配置设置为属性,但也可以通过 --option <key>=<value> 将它们设置为挂载选项。

[实验性] OSS 多部分上传

默认的上传方法是一次性从头到尾上传一个文件。我们使用多部分上传方法分多个部分上传一个文件,每个部分都将在一个线程中上传。上传时不会生成任何临时文件。

要启用 OSS 多部分上传,需要修改 conf/alluxio-site.properties,将以下内容包括在内:

alluxio.underfs.oss.multipart.upload.enabled=true

您还可以在 conf/alluxio-site.properties 中指定其他参数,以使程序更快更好地运行。

# 使用分片上传时,上传分片的超时时间。
alluxio.underfs.object.store.multipart.upload.timeout
# OSS 分片上传的线程池大小。
alluxio.underfs.oss.multipart.upload.threads
# OSS 分片上传的分区大小。默认分区大小为 64MB。 
alluxio.underfs.oss.multipart.upload.partition.size

设置请求重试策略

有时可能会因为服务器暂时无法响应,而在访问UFS时出现错误。您可以为UFS请求配置一个重试政策。

每一个发往UnderFS的I/O请求,例如下载对象、上传对象、多段上传, Alluxio 都会检查响应结果。 如果响应是一个错误,并且错误代码表明可以重试,则将根据配置中的重试策略重新提交请求。Alluxio 将会持续重试直到请求成功或者达到了重试的最大次数。 连续的成功重试间的等待间隔时间将会逐步从配置的基础休眠时间增长到最大休眠时间。

以下错误码被归类为可重试错误码:500 HTTP_INTERNAL_ERROR502 HTTP_BAD_GATEWAY503 HTTP_UNAVAILABLE503 Slow Down,和 504 HTTP_GATEWAY_TIMEOUT

注意:

  • 4xx 错误码 通常代表客户端错误,比如:NOT_FOUND,PERMISSION_DENIED,UNAUTHENTICATED等等。此类错误不应重试,因为问题出在客户端。

  • 5xx 错误码 通常代表服务端错误,但是不是所有的 5xx 错误都需要被重试。比如 501 HTTP_NOT_IMPLEMENTED 不应该被重试。

如果你想设置 UFS 访问请求的重试策略,您需要修改 conf/alluxio-site.properties 文件,添加以下内容:

# 一个 UnderFS 访问请求的最大重试次数。
alluxio.underfs.business.retry.max.num=10

# 第一次失败后两次尝试之间的初始睡眠时间
alluxio.underfs.business.retry.base.sleep=30ms

# 两次尝试之间的最大睡眠时间
alluxio.underfs.business.retry.max.sleep=30s

Last updated