Google Cloud GCS
本指南介绍了如何将 Alluxio 配置为使用 Google Cloud Storage (GCS) 作为底层存储系统。
Google Cloud Storage (GCS) 是 Google Cloud Platform (GCP) 提供的可扩展且持久的对象存储服务。它允许用户存储和检索各种类型的数据,包括非结构化和结构化数据。
有关 GCS 的更多信息,请阅读其文档。
先决条件
在开始之前,请确保您已具备下列所需信息:
<GCS_BUCKET>
在您的 Google Cloud 帐户中创建一个新存储桶 或使用现有存储桶
<GCS_DIRECTORY>
您希望在存储桶中使用的目录,可以通过创建新目录或使用现有目录来实现
默认的 GCS UFS 模块(GCS 版本 2)是基于 Google Cloud API 实现的,该 API 接受 Google 应用程序凭据。在创建应用程序凭据时可以定义细粒度的权限,以限制对特定存储桶的访问。
基本设置
使用挂载表示例添加新的挂载点,指定创建挂载的 Alluxio 路径和作为 UFS URI 的 GCS 路径。凭据和配置选项也可以作为挂载操作的一部分指定,如配置挂载点中所述。
使用 operator 创建挂载点的 ufs.yaml
示例:
apiVersion: k8s-operator.alluxio.com/v1
kind: UnderFileSystem
metadata:
name: alluxio-gs
namespace: alx-ns
spec:
alluxioCluster: alluxio-cluster
path: gs://<GS_BUCKET>/<PATH>
mountPath: /gs
mountOptions:
fs.gcs.credential.path: /path/to/<google_application_credentials>.json
如果不使用 operator,使用 GCS v2 将 gs://<GCS_BUCKET>/<GCS_DIRECTORY>
挂载到 /gs
的示例命令:
bin/alluxio mount add --path /gs/ --ufs-uri gs://<GCS_BUCKET>/<GCS_DIRECTORY> \
--option fs.gcs.credential.path=/path/to/<google_application_credentials>.json
此属性键 fs.gcs.credential.path
提供 Google 应用程序凭据 json 文件的路径。请注意,Google 应用程序凭据 json 文件应放置在所有 Alluxio 节点中的相同路径下。如果运行 Alluxio 进程的节点已包含 GCS 凭据,则可能不需要此属性,但始终建议显式设置此属性。
在 Kubernetes 环境中,凭据文件应作为秘密提供。请参阅如何将秘密添加为文件。
高级设置
自定义目录后缀
目录在 GCS 中表示为以指定后缀命名的零字节对象。可以使用配置参数 alluxio.underfs.gcs.directory.suffix
更新目录后缀。
GCS 访问控制
如果启用了 Alluxio 安全性,Alluxio 将强制执行从底层对象存储继承的访问控制。
Alluxio 配置中指定的 GCS 凭据表示一个 GCS 用户。GCS 服务后端检查用户对存储桶和对象的权限以进行访问控制。如果给定的 GCS 用户没有对指定存储桶的访问权限,将引发权限被拒绝错误。启用 Alluxio 安全性后,当元数据首次加载到 Alluxio 命名空间时,Alluxio 会将存储桶 ACL 加载到 Alluxio。
从 GCS ACL 到 Alluxio 权限的映射
Alluxio 检查 GCS 存储桶的读/写 ACL 以确定所有者对 Alluxio 文件的权限模式。例如,如果 GCS 用户对底层存储桶具有只读访问权限,则挂载的目录和文件将具有 0500
模式。如果 GCS 用户对底层存储桶具有完全访问权限,则挂载的目录和文件将具有 0700
模式。
通过代理访问 GCS
如果 Alluxio 集群位于公司代理或防火墙之后,Alluxio GCS 集成可能无法使用默认设置访问互联网。
在启动 Alluxio 协调器和 worker 之前,将以下 java 选项添加到 conf/alluxio-env.sh
。
ALLUXIO_COORDINATOR_JAVA_OPTS+=" -Dhttps.proxyHost=<proxy_host> -Dhttps.proxyPort=<proxy_port> -Dhttp.proxyHost=<proxy_host> -Dhttp.proxyPort=<proxy_port> -Dhttp.nonProxyHosts=<non_proxy_host>"
ALLUXIO_WORKER_JAVA_OPTS+=" -Dhttps.proxyHost=<proxy_host> -Dhttps.proxyPort=<proxy_port> -Dhttp.proxyHost=<proxy_host> -Dhttp.proxyPort=<proxy_port> -Dhttp.nonProxyHosts=<non_proxy_host>"
http.nonProxyHosts
的一个示例值为 localhost|127.*|[::1]|192.168.0.0/16
。
如果代理需要用户名和密码,请添加 http.proxyUser
、https.proxyUser
、http.proxyPassword
和 https.proxyPassword
java 选项。
Last updated