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

本文档介绍了 Dataproc 最佳实践,可帮助您在生产环境中的 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 是集群级依赖项,请将 args4j 捆绑在作业的 Uber JAR 中。

控制初始化操作位置

借助初始化操作,您可以在创建 Dataproc 集群时自动运行脚本或安装组件(如需了解常见的 Dataproc 初始化操作,请参阅 dataproc-initialization-actions GitHub 代码库)。在生产环境中使用集群初始化操作时,请将初始化脚本复制到 Cloud Storage,而不是从公共代码库中获取。这种实践可避免运行可被他人修改的初始化脚本。

监控 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 咨询服务可以为您的团队的生产部署提供最佳实践方面的指导。

了解详情