Alluxio 命名空间和底层文件系统命名空间
简介
Alluxio 可跨不同存储系统实现有效的数据管理。 Alluxio 通过使用挂载表将 Alluxio 中的路径映射到这些存储系统,从而提供所有数据源的统一视图。
我们使用 "Under File System(UFS,底层文件系统)"一词来表示由 Alluxio 管理和缓存的存储系统。 Alluxio 构建在存储层之上,提供缓存加速和其他各类数据管理功能。因此,这些存储系统位于 Alluxio 层 "之下"。
用户将 UFS "挂载"到 Alluxio 路径上。以下示例说明用户如何将 S3 存储桶和 GCS 存储桶挂载到 Alluxio。
上述示例的挂载表如下所示:
配置挂载表
Alluxio 支持使用 ETCD 来存储挂载表信息。 将挂载表存储在 ETCD 中后,所有 Alluxio 进程(client, worker, FUSE 等)都将从 ETCD 中读取挂载表信息。
要使用 ETCD 作为挂载表的后端,请在 alluxio-site.properties
中添加以下配置:
将 alluxio.etcd.endpoints
设置为 ETCD 集群中的实例列表,例如:
Alluxio 进程启动时会连接到 ETCD,并要求 ETCD 处于运行状态。 然后,Alluxio 会定期读取 ETCD 来获取挂载表的更新。 读取间隔在下面的 alluxio-site.properties
中进行配置。
在拥有数千个 Alluxio client 和数百个 Alluxio Worker 的大型集群中,最好设置稍大的时间间隔来减轻 ETCD 的压力。 如果挂载表的更新很少,则可使用更大的时间间隔,如 30 秒或以上。
挂载表操作
您可以使用 Alluxio 命令行轻松添加或删除挂载点:
您可以使用 bin/alluxio mount list
命令列出当前的挂载表:
注意:所有 Alluxio 组件从 ETCD 重新加载更新后的挂载表需要一点时间。 所需时间取决于
alluxio.mount.table.etcd.polling.interval.ms
。
配置 UFS
指定挂载点后,当 Alluxio 进程与相应的 UFS 交互时,还需要有专门针对 UFS 的配置,如安全凭证。
对所有挂载点使用相同的配置
您可以将所有 UFS 配置留在 alluxio-site.properties
文件中,Alluxio 会把这些配置用于所有挂载点。例如:
这样的话,您的所有挂载点都将使用相同的 S3 凭证和 HDFS 配置。在所有挂载点都可以使用相同配置的情况下,这是配置 Alluxio 挂载点最简单的方法。 这也是在 alluxio-site.properties
文件中管理所有配置属性最简单的方法。
对不同挂载点使用不同的配置
一般来说,用户可能希望对不同的挂载点使用不同的配置。 例如,如果用户有两个 S3-flavor 路径的挂载点,一个使用 AWS S3 作为存储后端,另一个使用 MinIO 作为存储后端,用户可能希望对每个挂载点使用不同的凭证和不同的端点。
您可以在添加新的挂载点时指定挂载选项。
通过这种方式,您可以为该挂载点指定配置属性。
注意:如果您在命令行中指定了挂载选项,请从
alluxio-site.properties
文件中删除这些配置选项,避免冲突或混淆。
您还可以更新现有挂载点的挂载选项。但是,您需要先卸载该挂载点,然后使用更新后的选项重新挂载该挂载点。
高级
一个更复杂的挂载表
下面我们来看一个更复杂的挂载表示例。
以上示例中的挂载表包括5个挂载点。 第一列是 Alluxio 命名空间中挂载点的路径。 第二列列出了挂载在 Alluxio 上的对应 UFS 路径。
第一个挂载点定义了从 S3 路径 s3://my-bucket/data/images
到 Alluxio 路径 /s3-images
的映射关系。 因此,所有带有 S3 前缀 s3://my-bucket/data/images
的对象将在 Alluxio 目录 /s3-images
下。 例如,s3://my-bucket/data/images/collections/20240101/sample.png
可在 Alluxio 路径 /s3-images/collections/20240101/sample.png
下找到。
第二个挂载点定义了从 S3 路径 s3://my-bucket/data/tables
到 Alluxio 路径/s3-tables
的映射关系。UFS 路径实际上与第一个挂载条目来自同一个存储桶。 如本示例所示,用户可以自由选择 UFS 命名空间中的部分内容挂载到 Alluxio。
第三个和第四个条目定义了 Alluxio 路径 /hive
和 /presto
与同一 HDFS 中两个目录 (分别为 hdfs://hdfs-cluster.company.com/user/hive
和 hdfs://hdfs-cluster.company.com/user/presto
)之间的映射关系。 同样,这两个 HDFS 目录树下的文件和目录也可在相应的 Alluxio 路径下找到。 例如,在 Alluxio 命名空间中,hdfs://hdfs cluster.company.com/user/hive/schema/table/part1.parquet
变为/hive/schema/table/part1.parquet
。
挂载表规则
在 Alluxio 中定义挂载点时必须遵循几条规则。
规则 1. 必须直接挂载到根路径 /
下
Alluxio 中的挂载点必须是根路径 /
的直接子路径。例如 s3-images
、/hive
和 /presto
都是有效的挂载点。 根路径 /
只是 Alluxio 命名空间中的一个虚拟节点。它不会映射到任何 UFS 路径上。
规则 2. 不得嵌套挂载点
挂载点不能嵌套。 一个挂载点的 Alluxio 路径不能位于另一个挂载点的 Alluxio 路径下。 同样,一个挂载点的 UFS 路径也不能位于另一个挂载点的 UFS 路径之下。
Last updated