Alluxio
ProductsLanguageHome
AI-3.5 (stable)
AI-3.5 (stable)
  • 概览
  • 部署Alluxio
    • 资源需求和兼容性
    • 在Kubernetes上安装Alluxio
    • 监控和指标
    • Alluxio 集群操作
    • 系统健康检查和快速恢复
    • 采集集群信息
  • 架构
    • Alluxio 命名空间和底层文件系统命名空间
    • I/O弹性
    • worker管理与一致性哈希
  • 底层存储系统
    • Amazon AWS S3
    • HDFS
    • 阿里云 OSS
    • 腾讯 COS
    • 火山引擎 TOS
    • 谷歌云 GCS
  • Client APIs
    • 基于 FSSpec 的Alluxio Python Filesystem API
    • 基于 FUSE 的 POSIX API
      • Client 写回
    • S3 API
  • 缓存操作
    • 缓存预加载
    • 缓存过滤
    • 缓存驱逐
      • TTL (有效时间)规则
      • 优先级规则
      • 通过命令行释放缓存空间
  • 资源管理
    • 基于目录的集群配额
    • UFS 带宽限制
  • 性能优化
    • 通过副本提高读取吞吐量
    • 读取大文件
    • 元数据列表
    • 数据预拉取
    • 写入临时文件
  • 安全
    • TLS 支持
  • 性能基准测试
    • Fio 测试概览
    • MLPerf Storage 基准测试
    • COSBench 性能基准测试
  • 参考
    • 用户命令行接口
    • 指标
    • S3 API 的使用
    • 第三方授权
  • 版本发布说明
Powered by GitBook
On this page
  • 先决条件
  • 基本设置
  • 进阶设置
  • TOS 分片上传
  • 设置请求重试策略
  • 高并发调优
  1. 底层存储系统

火山引擎 TOS

Last updated 3 months ago

本指南介绍如何将 配置为 Alluxio 的底层存储系统。 火山引擎对象存储服务 (TOS) 是火山引擎提供的海量、安全、低成本、易用、高可靠、高可用的分布式云存储服务。

先决条件

在将 TOS 用于 Alluxio 之前,请按照 注册 TOS 并创建一个 TOS 存储桶。

将 TOS 用于 Alluxio 前的准备:

<TOS_BUCKET>

创建一个新的 TOS 存储桶或使用一个现有的存储桶

<OS_DIRECTORY>

要在存储桶中使用的目录,可以是新创建的一个目录或者一个现有目录

<TOS_ACCESS_KEY_ID>

<TOS_ACCESS_KEY_SECRET>

<TOS_ENDPOINT>

<TOS_REGION>

基本设置

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

将tos://<TOS_BUCKET>/<TOS_DIRECTORY> 挂载到 /tos的命令示例如下:

bin/alluxio mount add --path /tos/ --ufs-uri tos://<TOS_BUCKET>/<TOS_DIRECTORY> \
  --option fs.tos.accessKeyId=<TOS_ACCESS_KEY> --option fs.tos.accessKeySecret=<TOS_ACCESS_KEY_SECRET> \
  --option fs.tos.endpoint=<TOS_ENDPOINT> --option fs.tos.region=<TOS_REGION>

请注意,如果要挂载 TOS 存储桶的根目录,请在存储桶名称后添加斜线(如 tos://TOS_BUCKET/)。

进阶设置

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

TOS 分片上传

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

要启用 TOS 分片上传,需要修改 conf/alluxio-site.properties 以包含:

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

您可以在 conf/alluxio-site.properties 中指定其他参数,以加速上传。

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

设置请求重试策略

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

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

以下错误码被归类为可重试错误码:500 HTTP_INTERNAL_ERROR,502 HTTP_BAD_GATEWAY,503 HTTP_UNAVAILABLE,503 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

高并发调优

将 Alluxio 与 TOS 集成时,可以通过调整以下配置来优化性能:

  • alluxio.underfs.tos.retry.max: 控制 TOS 的重试次数。默认值为 3。

  • alluxio.underfs.tos.read.timeout: 控制 TOS 的读取超时时间。默认值为 30000 毫秒。

  • alluxio.underfs.tos.write.timeout: 控制 TOS 写超时时间。默认值为 30000 毫秒。

  • alluxio.underfs.tos.streaming.upload.partition.size: 控制 TOS 流式上传的分区大小。默认值为 64MB。

  • alluxio.underfs.tos.connect.timeout: 控制 TOS 的连接超时时间。默认值为 30000 毫秒

TOS 的 , 在 中创建和管理

TOS 的 , 在 中创建和管理

存储桶的网络接口,可在存储桶概览页面找到,其值类似 tos-cn-beijing.volces.com 和 tos-cn-guangzhou.volces.com。 可用的接口列在 中。

存储桶所在的区域,例如 cn-beijing 或 cn-guangzhou。 可用的区域列在 中。

Access Key ID
TOS AccessKey 管理控制台
Secret Access Key
TOS AccessKey 管理控制台
TOS 网络接口文档
TOS 区域文档
火山引擎对象存储服务(TOS)
TOS 快速入门指南
挂载表操作
配置挂载点