Automation 使用分支逻辑在本地自动化工作流

Automation 使用分支逻辑在本地自动化工作流,automation,workflow,scheduler,airflow,oozie,Automation,Workflow,Scheduler,Airflow,Oozie,我已经使用ApacheOozie和Airflow来自动化Hadoop集群中的工作流,这很容易用于指定分支逻辑 我现在发现自己需要同样的框架来在Linux机器上本地自动化一个简单的管道。这个管道由Bash脚本、Python脚本和分支与并行化逻辑(根据上一个脚本的输出决定下一个执行哪些作业以及执行多少个作业)组成;输出应写入本地文件系统 我试图通过Oozie在本地运行来实现自动化。但我觉得这可能有点过分了,是吗?人们真的使用Oozie来完成简单的自动化任务吗?还是有更好的工具/框架来完成我的工作 气

我已经使用ApacheOozie和Airflow来自动化Hadoop集群中的工作流,这很容易用于指定分支逻辑

我现在发现自己需要同样的框架来在Linux机器上本地自动化一个简单的管道。这个管道由Bash脚本、Python脚本和分支与并行化逻辑(根据上一个脚本的输出决定下一个执行哪些作业以及执行多少个作业)组成;输出应写入本地文件系统


我试图通过Oozie在本地运行来实现自动化。但我觉得这可能有点过分了,是吗?人们真的使用Oozie来完成简单的自动化任务吗?还是有更好的工具/框架来完成我的工作

气流被认为是更好的选择。Airflow对用户更加友好,拥有更大的用户群体。气流有一个更直观的网络用户界面,更通用

气流也被认为具有更有效的分支

如果你仍然不相信,你可以继续阅读。这里也有一些。

试用-运行任务的语言无关自动化框架-使用多种语言(Perl、Python、Bash、Ruby、Powershell)编写的插件。高级DSL是Perl6,例如:

#!perl6

directory "foo/bar"; # create directory, this is a core plugin

bash "uptime"; # execute Bash scripts, this is a core plugin

task-run "custom task", "cool-task" # execute custom plugin, created by user
现在,当您可以从中返回并在DSL代码中处理此状态时:

my %state = task-run "get balance", "ATM", %( action => "get_balance" );

if %state<balance> > 0 {

  task-run "withdraw cash", "ATM", %(
    amount => %state<balance>
  )
}

my%state=任务运行“获取余额”、“ATM”、“百分比”(操作=>“获取余额”);
如果%state>0{
任务运行“提取现金”、“自动取款机”,百分比(
金额=>%状态
)
}
下面介绍如何通过插件和状态实现管道/分支