适用于生产环境的 Dataproc 最佳实践

本文档讨论了 Dataproc 最佳实践, 在 Google Cloud 控制台 生产环境中的 Dataproc 集群。

指定集群映像版本

Dataproc 使用映像版本将操作系统、大数据组件和 Google Cloud 连接器捆绑到一个部署在集群上的软件包中。如果您在创建集群时未指定映像版本,Dataproc 默认为最新的稳定版映像。

对于生产环境,请将您的集群与特定的 major.minor Dataproc 映像版本,例如 如以下 gcloud CLI 命令所示。

gcloud dataproc clusters create CLUSTER_NAME \
    --region=region \
    --image-version=2.0

Dataproc 将 major.minor 版本解析为最新的次要版本 (2.0 已解析为 2.0.x)。注意:如果您的集群需要依赖于特定的次要版本, 则可以指定:例如 --image-version=2.0.x。请参阅 版本控制的工作原理

Dataproc 预览版映像版本

在标准次要映像版本轨道中发布之前,Dataproc 映像的新次要版本会以 preview 版本提供。使用预览图片 针对新的次要映像版本测试和验证您的作业 然后再在生产环境中采用标准次要映像版本。 如需了解详情,请参阅 Dataproc 版本控制

必要时使用自定义映像

如果您有要添加到集群的依赖项,例如原生 Python 库或安全加固或病毒防护软件 使用最新映像创建自定义映像 。通过这种做法,您可以在使用自定义映像创建集群时满足依赖项要求。重新构建自定义映像以更新依赖项要求时,请使用次要映像轨道中最新的可用次要映像版本。

将作业提交到 Dataproc 服务

使用 gcloud CLI 或 Google Cloud 控制台通过 jobs.submit 调用将作业提交到 Dataproc 服务。通过授予 Dataproc 角色来设置作业和集群权限。使用 自定义角色,以将集群访问权限与作业提交权限分开。

将作业提交到 Dataproc 服务的好处:

  • 无需复杂的网络设置 - 该 API 的可访问性极广
  • 轻松管理 IAM 权限和角色
  • 轻松跟踪作业状态 - 没有 Dataproc 作业元数据来复杂化结果。

在生产环境中,运行仅依赖于集群级别的作业 依赖项(例如 --image-version=2.0)。套装 依赖项。将 uber jar 提交到 Spark 或 MapReduce 是一种常见的方法。

  • 示例:如果作业 jar 依赖于 args4jspark-sql,其中 args4j 特定于作业,而 spark-sql 是集群级依赖项,请在作业的 Uber jar 中捆绑 args4j

控制初始化操作位置

初始化操作 可让你自动运行脚本或安装 组件(请参阅 dataproc-initialization-actions 用于常见 Dataproc 初始化操作的 GitHub 代码库)。 在生产环境中使用集群初始化操作时 将初始化脚本复制到 Cloud Storage 而无需从公共代码库获取源代码这种做法可以避免运行可被其他人修改的初始化脚本。

Monitor Dataproc 版本说明

Dataproc 会定期发布新的次要映像版本。 查看或订阅 Dataproc 版本说明 了解最新的 Dataproc 映像版本和其他 公告、变更和修复。

查看预演桶以调查失败问题

  1. 查看集群的 暂存存储桶 来调查集群和作业错误消息。 通常,暂存存储桶的 Cloud Storage 位置显示在 如以下错误示例中的粗体所示 消息:

    ERROR:
    (gcloud.dataproc.clusters.create) Operation ... failed:
    ...
    - Initialization action failed. Failed action ... see output in: 
    gs://dataproc-<BUCKETID>-us-central1/google-cloud-dataproc-metainfo/CLUSTERID/<CLUSTER_ID>\dataproc-initialization-script-0_output
     

  2. 使用 gcloud CLI 查看暂存存储桶内容:

    gcloud storage cat gs://STAGING_BUCKET
    
    输出示例:
    + readonly RANGER_VERSION=1.2.0
    ... Ranger admin password not set. Please use metadata flag - default-password
    

获取支持

Google Cloud 支持生产 OSS 工作负载,并帮助您满足 通过层级提供业务服务等级协议 (SLA)。另外,Google Cloud 咨询服务可提供最佳实践方面的指导 供团队生产部署使用

了解详情