【问题标题】:Is there a way to submit spark job on different server running master有没有办法在运行 master 的不同服务器上提交 spark 作业
【发布时间】:2019-04-20 00:31:01
【问题描述】:

我们需要安排 spark 作业,因为我们熟悉 apache-airflow,我们希望继续使用它来创建不同的工作流程。我搜索了网页,但没有找到在气流上安排 spark 作业的分步指南,以及在不同的服务器上运行它们的选项。

我们将不胜感激。 提前致谢。

【问题讨论】:

    标签: apache-spark pyspark airflow


    【解决方案1】:

    您可以通过 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.xmlhive-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 :)

    【讨论】:

    • 但是在 SSHOperator 的情况下,我们需要在 spark 主节点的同一台服务器上运行气流。不是吗?
    • 不,那是BashOperator。使用SSHOperator,您可以在远程服务器上运行 bash 命令。我已更新我的答案以包含此信息。
    • SSHOperator 在我的情况下不起作用。 Spark-submit 作业永远运行,当我从 shell 运行相同的作业时,它会在 5 分钟内执行。请建议。链接:stackoverflow.com/questions/56988228/…
    • @kaxil 使用方法#2 SSHOperator,即使任务运行成功,Airflow 也会将其标记为失败。我运行了测试代码:command='bash tmp.sh',,即使这会在气流中返回失败。有什么想法吗?
    猜你喜欢
    • 2021-04-21
    • 2017-05-17
    • 1970-01-01
    • 2012-02-26
    • 2022-01-25
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    相关资源
    最近更新 更多