【问题标题】:Datastage: How to keep continuous mode job running after a unexpected terminationDatastage:如何在意外终止后保持连续模式作业运行
【发布时间】:2020-12-10 18:14:12
【问题描述】:

我有一个工作,它使用 Kafka 连接器阶段来读取 Kafka 队列,然后加载到数据库中。该作业以连续模式运行,它没有时间结束,因为它一直在实时监控 Kafka 队列。

由于意外原因(例如,服务器问题、作业问题等),作业可能会因失败而终止。通常,这发生在该作业运行 300 小时之后。因此,为了让作业保持活力,我必须手动查看作业状态,然后执行重置并运行,以保持作业运行。

问题在于,在作业终止和我的手动重置和运行之间可能会经过几个小时,这很关键。因此,我正在寻找一种方法来消除手动交互并通过自动化作业调用来减少这种差距。

我尝试使用 Control-M 每天运行该作业,但没有成功:Control-M 调用该作业的第一天,它运行良好。但是在第二天,当 Control-M 再次尝试实例化作业时它失败了(因为它已经在运行)。此外,Datastage 永远不会告诉 Control-M 作业已成功结束,因为作业的性质不允许这样做。

这么说,我想听听你的想法,可以照亮我。

首先想到的是创建一个中间序列,然后在 Control-M 中安排它。然后,这个新的序列将通过使用命令行阶段异步调用连续作业。

【问题讨论】:

    标签: apache-kafka etl real-time datastage control-m


    【解决方案1】:

    对于只有一个作业意外终止并且您希望它尽快重新启动的情况,您是否考虑过从序列中调用该作业?该序列可以设置为循环运行此作业。

    因此序列开始作业并等待它完成。作业完成后,序列将循环并再次开始作业。您可以在作业退出时添加条件(例如,如果作业中止,则根据该作业结束状态,您可以在重新运行之前重置作业。

    这不会处理 DataStage 引擎本身关闭的情况(例如维护或可能的错误),在这种情况下,所有作业都会结束,包括您的新序列。这同样适用于服务器重新启动或其他人可能无意中停止了您的序列的情况。对于这些情况(例如 DataStage 引擎停止),您的团队需要为需要在 DataStage 或系统中断后启动的作业/序列制定流程。

    对于中断场景,您可以创建一个监控脚本(无论是单独运行作业还是按顺序运行),该脚本以 5-10 分钟的间隔休眠/循环,然后使用 dsjob 命令检查作业的状态,如果未运行可以启动该作业/序列(也通过 dsjob 命令)。您可以决定该脚本启动是在 DataSTage 启动、机器启动时发生,还是从 Control M 或其他调度程序运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 2013-05-01
      • 1970-01-01
      相关资源
      最近更新 更多