【发布时间】:2019-04-20 00:31:01
【问题描述】:
我们需要安排 spark 作业,因为我们熟悉 apache-airflow,我们希望继续使用它来创建不同的工作流程。我搜索了网页,但没有找到在气流上安排 spark 作业的分步指南,以及在不同的服务器上运行它们的选项。
我们将不胜感激。 提前致谢。
【问题讨论】:
标签: apache-spark pyspark airflow
我们需要安排 spark 作业,因为我们熟悉 apache-airflow,我们希望继续使用它来创建不同的工作流程。我搜索了网页,但没有找到在气流上安排 spark 作业的分步指南,以及在不同的服务器上运行它们的选项。
我们将不胜感激。 提前致谢。
【问题讨论】:
标签: apache-spark pyspark airflow
您可以通过 3 种方式使用 Apache Airflow 远程提交 Spark 作业:
(1) 使用SparkSubmitOperator:该操作员希望您在我们的 Airflow 服务器上设置 spark-submit 二进制文件和 YARN 客户端配置。它使用给定的选项调用 spark-submit 命令,阻塞直到作业完成并返回最终状态。好消息是,它还流式传输来自 spark-submit 命令 stdout 和 stderr 的日志。
你真的只需要配置一个 yarn-site.xml 文件,我相信,为了spark-submit --master yarn --deploy-mode 客户端工作。
在 YARN 中部署 Application Master 后,Spark 就会在本地运行到 Hadoop 集群。
如果你真的想要,你可以添加 hdfs-site.xml 和 hive-site.xml 以从 Airflow 提交(如果可能的话),但至少应该从 YARN 容器类路径中获取 hdfs-site.xml 文件
(2) 使用SSHOperator:使用此运算符在远程服务器上运行 bash 命令(通过 paramiko 库使用 SSH 协议),例如 spark-submit。这种方法的好处是您不需要复制hdfs-site.xml 或维护任何文件。
(3) 将SimpleHTTPOperator 与 Livy 一起使用:Livy 是一个开源 REST 接口,用于从任何地方与 Apache Spark 进行交互。您只需要进行 REST 调用。
我个人更喜欢 SSHOperator :)
【讨论】:
BashOperator。使用SSHOperator,您可以在远程服务器上运行 bash 命令。我已更新我的答案以包含此信息。
command='bash tmp.sh',,即使这会在气流中返回失败。有什么想法吗?