【问题标题】:Executing sequence of spark jobs using nohup commands automatically使用 nohup 命令自动执行一系列 spark 作业
【发布时间】:2019-08-23 10:33:01
【问题描述】:

我需要根据各种文件分区将历史数据加载到配置单元表中。目前正在使用 nohup 命令调用 Spark 提交。我正在尝试创建一个脚本,其中将包含所有 nohup 命令,这些命令将在成功完成第一个 nohup 命令后按顺序执行。

我试过了

nohup 1
if [ ? = 0 ]; then
nohup 2

但是下一个 nohup2 命令在 nohup1 中的 spark 作业完成之前开始执行。

当前脚本:

nohup sh /home/spark_load1.sh
#After successful load1, start the next nohup
nohup sh /home/spark_load2.sh
#After successful load2, start the next nohup
nohup sh /home/spark_load3.sh

我希望仅在前一次 nohup 成功时才执行第二次 nohup。

nohup sh /home/spark_load1.sh
#After successful load1, start the next nohup
nohup sh /home/spark_load2.sh
#After successful load2, start the next nohup
nohup sh /home/spark_load3.sh

【问题讨论】:

  • 我认为这不是最好的方法,您是否考虑过为此使用诸如气流之类的编排工具
  • 不使用 nohup 怎么办?
  • @thebluephantom - 项目的设计方式是包装外壳脚本调用 spark 提交。你能告诉我如何在没有 nohup 的情况下执行吗?
  • 主 LINUX 脚本上的 Nohup 使用 nohup 调用其他脚本。我目前不在 LINUX 等领域工作,所以我无法检查,但我似乎记得。我还会使用日程安排工具、Oozie、Airflow 或其他一些社区版工具。
  • 尝试根据第一个进程 id 调用下一个 nohup 执行,例如 while(!{process_id}){"sleep 1s"}

标签: apache-spark oozie nohup


【解决方案1】:

这可以通过这种方式完成:

nohup sh /home/spark_load1.sh && sh /home/spark_load2.sh && sh /home/spark_load3.sh

并且不要忘记在末尾添加与符号&,否则如果您的连接中断将停止脚本。 使用所以命名 shebang 也是一种好习惯,以避免每次在 shell 外部运行(将其添加为 shell 脚本的第一行并使其可执行)

#!/usr/bin/sh

在这种情况下,行会更短

nohup /home/spark_load1.sh && /home/spark_load2.sh && /home/spark_load3.sh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 2011-03-28
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多