本文档介绍了 Managed Service for Apache Spark 最佳实践,可帮助您在生产环境中的 Managed Service for Apache Spark 集群上运行可靠、高效且实用的数据处理作业。
指定集群映像版本
Managed Service for Apache Spark 使用映像版本将操作系统、大数据组件和 Google Cloud 连接器捆绑到一个部署在集群上的软件包中。如果您在创建集群时未指定映像版本,Managed Service for Apache Spark 会默认使用最新的稳定映像版本。
对于生产环境,请将集群与特定的 major.minor Managed Service for Apache Spark 映像版本相关联,如以下 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。如需了解详情,请参阅版本控制机制。
Managed Service for Apache Spark 预览版映像版本
Managed Service for Apache Spark 映像的新次要版本在标准次要映像版本轨道中发布之前,会先以 preview 版本提供。在生产环境中采用标准次要映像版本之前,请使用预览版映像针对新的次要映像版本测试和验证作业。如需了解详情,请参阅 Managed Service for Apache Spark 版本控制。
必要时使用自定义映像
如果您有要添加到集群的依赖项(例如原生 Python 库或安全加固或病毒防护软件),请通过目标次要映像版本轨道中的最新映像创建自定义映像。这种实践可让您在使用自定义映像创建集群时满足依赖项要求。当您重新构建自定义映像以更新依赖项要求时,请使用次要映像轨道中可用的最新次要映像版本。
向 Managed Service for Apache Spark 提交作业
使用 gcloud CLI 或 Google Cloud 控制台,通过 jobs.submit 调用将作业提交到 Managed Service for Apache Spark。通过授予 Managed Service for Apache Spark 角色来设置作业和集群权限。使用自定义角色将集群访问权限与作业提交权限分开。
将作业提交到 Managed Service for Apache Spark 的好处:
- 无需复杂的网络设置 - 该 API 可广泛访问
- 轻松管理 IAM 权限和角色
- 轻松跟踪作业状态 - 没有 Managed Service for Apache Spark 作业元数据使结果复杂化。
在生产环境中,运行仅依赖于集群级依赖项且采用固定的次要映像版本(例如 --image-version=2.0)的作业。提交作业后,将依赖项与作业捆绑在一起。向 Spark 或 MapReduce 提交 uber JAR 是实现此目的的常用方法。
- 示例:如果作业 JAR 依赖于
args4j和spark-sql,其中args4j是作业特有的依赖项,而spark-sql是集群级依赖项,请将args4j捆绑在作业的 Uber JAR 中。
控制初始化操作位置
借助初始化操作,您可以在创建 Managed Service for Apache Spark 集群时自动运行脚本或安装组件(如需了解常见的 Managed Service for Apache Spark 初始化操作,请参阅 dataproc-initialization-actions GitHub 代码库)。在生产环境中使用集群初始化操作时,请将初始化脚本复制到 Cloud Storage,而不是从公共代码库中获取。这种实践可避免运行可被他人修改的初始化脚本。
监控 Managed Service for Apache Spark 版本说明
Managed Service for Apache Spark 会定期发布新的次次要映像版本。您可以查看或订阅 Managed Service for Apache Spark 版本说明,了解最新的 Managed Service for Apache Spark 映像版本发布以及其他公告、变更和修复。
查看暂存存储桶以调查失败情况
查看集群的暂存存储桶,以调查集群和作业错误消息。通常,暂存存储桶 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
使用 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 咨询服务可以为您的团队的生产部署提供最佳实践方面的指导。
了解详情
请参阅 Google Cloud 博文《Managed Service for Apache Spark 最佳实践指南》。
在 YouTube 上观看普及 Managed Service for Apache Spark。