# 腾讯 COS

本指南介绍如何将[腾讯云对象存储](https://cloud.tencent.com/product/cos)配置为Alluxio的底层存储系统。 腾讯云对象存储（COS）是腾讯云为海量数据提供的分布式存储服务，可通过 HTTP/HTTPS 协议访问。 它可以存储海量数据，并具有无感带宽和容量扩展特性，是大数据计算和分析的理想数据池。

## 先决条件

Alluxio 以集群模式在多台计算机上运行，因此需要在这些计算机上部署其二进制软件包。

在将 COS 与 Alluxio 结合使用之前，要么创建一个新的存储桶，要么使用现有的存储桶。 此外，无论是创建新目录还是选择现有目录，都要确定要在该数据桶中使用的目录。 在本指南中，COS 存储桶的名称是 `COS_BUCKET`，存储桶内的目录是 `COS_DATA`，存储桶区域是 `COS_REGION`。

## 基本设置

使用 [挂载表操作](https://documentation.alluxio.io/ee-ai-cn/ai-3.2/feature/alluxio-namespace-and-under-file-system-namespaces#挂载表操作) 来增加一个新的挂载点, 指定Alluxio路径在其上创建挂载，指定COS的路径作为UFS URI。 密钥和配置选项也可以通过指定 `--option` 标志作为挂载命令的一部分来指定，如[配置挂载点](https://documentation.alluxio.io/ee-ai-cn/ai-3.2/feature/alluxio-namespace-and-under-file-system-namespaces#对不同挂载点使用不同的配置)所述。

一个将`cos://<COS_BUCKET>/<COS_DIRECTORY>`挂载到`/cos`的示例命令：

```shell
bin/alluxio mount add --path /cos/ --ufs-uri cos://<COS_BUCKET>/<COS_DIRECTORY> \
  --option fs.cos.access.key=<COS_SECRET_ID> --option fs.cos.secret.key=<COS_SECRET_KEY> \
  --option fs.cos.region=<COS_REGION> --option fs.cos.app.id=<COS_APP_ID>
```

请注意，如果您想挂载COS bucket的根，请在bucket名称后面添加一个斜杠（例如`cos://COS_BUCKET/`).

## 高级设置

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

### COS 多段上传

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

要启用 COS 多段上传，需要修改 `conf/alluxio-site.properties`，加入以下内容：

```properties
alluxio.underfs.cos.multipart.upload.enabled=true
```

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

```properties
# 使用分片上传时，上传分片的超时时间。
alluxio.underfs.object.store.multipart.upload.timeout
```

```properties
# COS 分片上传的线程池大小。
alluxio.underfs.cos.multipart.upload.threads
```

```properties
# COS 分片上传的分区大小。默认分区大小为 64MB。
alluxio.underfs.cos.multipart.upload.partition.size
```
