适用于生产环境的 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 服务

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

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

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

在生产环境中,运行仅依赖于集群级别的作业 依赖项(例如 --image-version=2.0)。套装 依赖项。正在提交 Uber jar Spark 或 MapReduce 是实现此目的的常用方法。

  • 示例:如果作业 jar 依赖于 args4jspark-sql,其中 args4j 特定于该作业 以及 spark-sql 集群级依赖项,将 args4j 打包到作业的超级 jar 中。

控制初始化操作位置

初始化操作 可让你自动运行脚本或安装 组件(请参阅 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 咨询服务可提供最佳实践方面的指导 供团队生产部署使用

了解详情