SparkSubmitOperator 与 SSHOperator 用于在气流中提交 pyspark 应用程序

Posted

技术标签:

【中文标题】SparkSubmitOperator 与 SSHOperator 用于在气流中提交 pyspark 应用程序【英文标题】:SparkSubmitOperator vs SSHOperator for submitting pyspark applications in airflow 【发布时间】:2020-06-25 06:57:41 【问题描述】:

我有不同的火花和气流服务器。而且我在气流服务器中没有火花二进制文件。我能够很好地使用 SSHOperator 并在集群模式下运行 spark 作业。我想知道从长远来看,使用 SSHOperator 或 SparkSubmitOperator 提交 pyspark 作业有什么好处。如有任何帮助,我们将不胜感激。

【问题讨论】:

【参考方案1】:

以下是在气流中使用 SSHOperator 与 SparkSubmit Operator 的优缺点以及我的建议。

SSHOperator : 该算子将对远程 Spark 服务器执行 SSH 操作,并在远程集群中执行 spark 提交。

优点:

    气流工作器无需额外配置

缺点:

    很难维护 spark 配置参数 需要启用从气流服务器到 Spark 服务器的 SSH 端口 22,这会导致安全问题(尽管您在专用网络上,但使用基于 SSH 的远程执行不是最佳做法。)

SparkSubbmitOperator :该算子将以干净的方式执行 spark 提交操作,但您仍需要额外的基础架构配置。

优点:

    如上所述,它带有方便的 spark 配置,无需额外的努力来调用 spark 提交

缺点:

    需要在所有气流服务器上安装 spark。

除了这 2 个选项之外,我还列出了另外 2 个选项。

    在 Spark 集群上安装 Livy 服务器并使用 python Livy 库与 Airflow 中的 Spark 服务器进行交互。参考:https://pylivy.readthedocs.io/en/stable/

    如果您的 spark 集群在 AWS EMR 上,我建议您使用 EmrAddStepsOperator

更多讨论请参阅此处:To run Spark Submit programs from a different cluster (1**.1*.0.21) in airflow (1**.1*.0.35). How to connect remotely other cluster in airflow

【讨论】:

【参考方案2】:

SparkSubmitOperator 是一个专门的运算符。也就是说,它应该使提交 Spark 作业的编写任务更容易,并且代码本身更具可读性和可维护性。因此,如果可能的话,我会使用它。

在您的情况下,您应该考虑修改基础架构以使用 SparkSubmitOperator 的努力是否值得我在上面提到的好处。

【讨论】:

以上是关于SparkSubmitOperator 与 SSHOperator 用于在气流中提交 pyspark 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

SSH原理与运用:远程操作与端口转发

[转帖]SSH原理与运用:远程操作与端口转发

Linux——超超讲解SSH的原理与SSH的实现!建议收藏❤

SSH的原理与应用

ssl与ssh

SSH简介与用途