Dataproc 暂存存储分区和临时存储分区

当您创建集群时,HDFS 会被用作默认文件系统。您可以通过将 defaultFS 设置为 Cloud Storage 存储桶来替换此行为。默认情况下,Dataproc 还会在项目中创建 Cloud Storage 暂存存储桶和 Cloud Storage 临时存储桶,或者重复使用 Dataproc 基于之前的集群创建请求创建的现有暂存存储桶和临时存储桶。

  • 暂存存储桶:用于暂存集群作业依赖项、作业驱动程序输出和集群配置文件。还会接收 gcloud CLI gcloud dataproc clusters diagnose 命令的输出。

  • 临时存储桶:用于存储临时集群和作业数据,例如 Spark 和 MapReduce 历史记录文件。

如果您在创建集群时未指定暂存存储桶或临时存储桶,Dataproc 会根据部署集群的 Compute Engine 可用区,为集群的暂存存储桶和临时存储桶设置位于美国、ASIA 或欧盟的 Cloud Storage 位置,然后按位置创建和管理这些项目级的存储桶。Dataproc 创建的暂存存储分区和临时存储分区在同一区域中的集群之间共享。

临时存储桶包含临时数据,其 TTL 为 90 天。暂存存储桶可以包含多个集群所需的配置数据和依赖项文件,但没有 TTL。但是,您可以对依赖项文件应用生命周期规则(位于暂存存储桶文件夹中带有“.jar”文件扩展名的文件),以安排移除集群不再需要的依赖项文件。

创建您自己的暂存存储分区和临时存储分区

您也可以指定现有 Cloud Storage 存储桶供 Dataproc 用作集群暂存存储桶和临时存储桶,而非依靠创建默认的暂存存储桶和临时存储桶。

gcloud 命令

使用 --bucket 和/或 --temp-bucket 在终端窗口或 Cloud Shell 中在本地运行 gcloud dataproc clusters create 命令,以指定集群的暂存存储桶和/或临时存储桶。

gcloud dataproc clusters create cluster-name \
    --region=region \
    --bucket=bucket-name \
    --temp-bucket=bucket-name \
    other args ...

REST API

clusters.create 请求中使用 ClusterConfig.configBucketClusterConfig.tempBucket 字段指定集群的暂存存储分区和临时存储分区。

控制台

在 Google Cloud 控制台中,打开 Dataproc 创建集群页面。选择“自定义集群”面板,然后使用“文件存储”字段指定或选择集群的暂存存储桶。

注意:目前不支持使用 Google Cloud 控制台指定临时存储桶。

Dataproc 会将已定义的文件夹结构用于附加到集群的 Cloud Storage 存储分区。Dataproc 还支持将多个集群连接到 Cloud Storage 存储桶。用于在 Cloud Storage 中保存作业驱动程序输出的文件夹结构如下:

cloud-storage-bucket-name
  - google-cloud-dataproc-metainfo
    - list of cluster IDs
        - list of job IDs
          - list of output logs for a job

您可以使用 gcloud 命令行工具、Dataproc API 或 Google Cloud 控制台列出集群的暂存存储分区和临时存储分区的名称。

控制台

  • 在 Google Cloud 控制台的 Dataproc 集群页面上\查看集群详细信息,包括集群暂存存储桶的名称。
  • 在 Google Cloud 控制台的 Cloud Storage 浏览器页面上,过滤包含“dataproc-temp-”的结果。

gcloud 命令

在终端窗口或 Cloud Shell 中本地运行 gcloud dataproc clusters describe 命令。输出中会列出与集群关联的暂存存储分区和临时存储分区。

gcloud dataproc clusters describe cluster-name \
    --region=region \
...
clusterName: cluster-name
clusterUuid: daa40b3f-5ff5-4e89-9bf1-bcbfec ...
config:
    configBucket: dataproc-...
    ...
    tempBucket: dataproc-temp...

REST API

调用 clusters.get 可列出集群详细信息,包括集群暂存存储分区和临时存储分区的名称。

{
 "projectId": "vigilant-sunup-163401",
 "clusterName": "cluster-name",
 "config": {
  "configBucket": "dataproc-...",
...
  "tempBucket": "dataproc-temp-...",
}

defaultFS

您可以将 core:fs.defaultFS 设置为 Cloud Storage 中的存储桶位置 (gs://defaultFS-bucket-name),以将 Cloud Storage 设为默认文件系统。此操作还会将 Cloud Storage 连接器报告的所有文件权限 core:fs.gs.reported.permissions 设置为 777

如果 Cloud Storage 未设为默认文件系统,系统将使用 HDFS,并且 core:fs.gs.reported.permissions 属性将返回默认值 700

gcloud dataproc clusters create cluster-name \
    --properties=core:fs.defaultFS=gs://defaultFS-bucket-name \
    --region=region \
    --bucket=staging-bucket-name \
    --temp-bucket=temp-bucket-name \
    other args ...