airflow-scheduler - SparkSubmitOperator 与 SSHOperator 用于在气流中提交 pyspark 应用程序
问题描述
我有不同的火花和气流服务器。而且我在气流服务器中没有火花二进制文件。我能够很好地使用 SSHOperator 并在集群模式下运行 spark 作业。我想知道从长远来看,使用 SSHOperator 或 SparkSubmitOperator 提交 pyspark 作业有什么好处。任何帮助将不胜感激。
解决方案
以下是在气流中使用 SSHOperator 与 SparkSubmit Operator 的优缺点,并遵循我的建议。
SSHOperator :该操作员将对远程 Spark 服务器执行 SSH 操作,并在远程集群中执行 spark 提交。
优点:
- 气流工作人员无需额外配置
缺点:
- 难以维护 spark 配置参数
- 需要从气流服务器启用 SSH 端口 22 来触发服务器,这会导致安全问题(尽管您在专用网络上,但使用基于 SSH 的远程执行并不是最佳实践。)
SparkSubbmitOperator :此操作员将以干净的方式执行 spark 提交操作,但您仍需要额外的基础架构配置。
优点:
- 如上所述,它带有方便的火花配置,无需额外的努力来调用火花提交
缺点:
- 需要在所有气流服务器上安装 spark。
除了这 2 个选项之外,我还列出了另外 2 个选项。
在 Spark 集群上安装 Livy 服务器并使用 python Livy 库与 Airflow 中的 Spark 服务器进行交互。参考:https ://pylivy.readthedocs.io/en/stable/
如果您的 spark 集群在 AWS EMR 上,我会鼓励使用EmrAddStepsOperator
有关其他讨论,请参阅此处:在气流 (1**.1*.0.35) 中运行来自不同集群 (1**.1*.0.21) 的 Spark 提交程序。如何在气流中远程连接其他集群
推荐阅读
- android - 如何解决以下错误:找不到参数的方法 classpath()
- javascript - 如何使服务器信息 discord.js cmd
- c - 检查 C l 中的重复记录不起作用
- javascript - 有人知道为什么我的按钮中的图标拒绝居中吗?
- python - 用另一个字典替换字典中的键并使用循环 Python3
- python - 显示哪个小部件具有焦点
- argo-workflows - 工作流 B 在完成后如何从工作流 A 触发?
- c# - 如何使用 System.Text.Json 反序列化嵌套的时间跨度属性?
- html - 在 MERN 中发送 Post 请求失败
- node.js - 如何在docker中为kafka运行多个feedconsumers和consumers?