google-cloud-platform - 在 Google Cloud DataProc 上安排 cron 作业
问题描述
我目前有一个部署在 DataProc 集群上的 PySpark 作业(1 个主节点和 4 个具有足够核心和内存的工作节点)。该作业在数百万条记录上运行并执行昂贵的计算(多边形中的点)。我能够自己成功地运行这项工作。但是,我想安排在每月 7 日运行该作业。
我正在寻找的是在 DataProc 集群上设置 cron 作业的最有效方法。我试图阅读 Cloud Scheduler,但它并没有准确解释它如何与 DataProc 集群结合使用。在 DataProc 上查看 cron 作业的示例或在 DataProc 上专门与 Scheduler 一起工作的一些文档将非常有帮助。
提前致谢!
解决方案
对于计划的 Dataproc 交互(创建集群、提交作业、等待作业、删除集群同时处理错误),Dataproc 的 Workflow Templates API 是比尝试自己编排这些交互更好的选择。一个关键优势是工作流是即发即弃的,创建的任何集群也将在完成时被删除。
如果您的工作流模板相对简单,以至于它的参数在调用之间不会改变,那么更简单的调度方法是使用Cloud Scheduler
. Cloud Functions
如果您需要运行工作流来响应 GCS 中的文件或 PubSub 中的事件,这是一个不错的选择。最后,Cloud Composer
如果您的工作流程参数是动态的或混合使用其他 GCP 产品,那就太好了。
假设您的用例是使用相同参数的简单运行工作流程,我将演示使用Cloud Scheduler
:
我在我的项目中创建了一个名为terasort-example
.
然后我在我的项目中创建了一个新的服务帐户,调用workflow-starter@example.iam.gserviceaccount.com
并赋予它Dataproc Editor
角色;然而,更受限制的东西dataproc.workflows.instantiate
也足够了。
启用Cloud Scheduler
API 后,我前往 Developers Console 中的 Cloud Scheduler。我创建了一个工作如下:
目标:HTTP
HTTP 方法:POST
身体: {}
身份验证标头:OAuth 令牌
服务帐号:workflow-starter@example.iam.gserviceaccount.com
范围:(留空)
您可以通过单击来测试它Run Now
。
请注意,您还可以将正文中的整个工作流内容复制为 JSON 有效负载。URL 的最后一部分将变为workflowTemplates:instantiateInline?alt=json
查看这个讨论其他调度选项的官方文档。
推荐阅读
- python - Google 地球引擎中不同 ROI 的索引越界异常
- ios - 如何将消费信息发送到App Store成功退款
- kotlin - kotlin中密封类与密封接口有什么区别
- javascript - d3 鼠标光标/指针变回绘图光标
- laravel - 在 react native 和 laravel 中使用 facebook 登录
- javascript - Material-UI 导入顺序更改样式
- angular - 在另一个对象中显示一个对象的数组的数据
- javascript - 我可以在 XSLT 中创建依赖下拉菜单而不一次加载所有内容吗?
- python - 将数据从 Access 数据库导出到 Python 代码
- jmeter - 如何在jmeter中分配不同时间的负载