Azkaban生产实践

创建Flow

创建Job

command Job

# foo.job
type=command
command=echo "Hello World"

创建Flows

  • Foo Job

# foo.job
type=command
command=echo foo
  • Bar Job依赖Foo Job

# bar.job
type=command
dependencies=foo
command=echo bar

嵌入式Flows

  • flow还可以作为节点包含在其他flow中作为嵌入式flow。要创建嵌入式flow,只需创建一个.job文件,将type=flow和flow.name设置为流的名称。

# baz.job
type=flow
flow.name=bar

Job配置

公共配置

运行时参数

可传递参数

  • 任何包含的.properties文件都将被视为在流的各个作业之间共享的属性。属性按目录以分层方式解析。

partitionNum=3
masterServers=xxx
type=command
retries=3
retry.backoff=30000
notify.emails=xxx@xxxxx
command=sh spark-logic-deleted-run.sh ${partitionNum} ${masterServers}
#!/usr/bin/env bash

rm -rf  cdp-spark-etl-1.0.0-SNAPSHOT.jar
hdfs dfs -get xxx
partitionNum=$1
masterServer=$2
if(($#<2))
then
       echo "请输入partitionNum masterServer"
    exit;
fi

runParams="$partitionNum $masterServer"
if (($3)); then
    runParams=$runParams" "$3
fi
if (($4)); then
    runParams=$runParams" "$4
fi
echo "runParams:$runParams"

spark-submit \
--master yarn \
--deploy-mode cluster \
--driver-memory 1g \
--executor-memory 2g \
--executor-cores 3 \
--num-executors 3 \
--queue default \
--class xxx \
xxx.jar $runParams

Job类型

Command

  • Command类型的job通过type=command设置,它是一个基本的命令行执行器。许多其他作业类型封装了命令作业类型,但构造了它们自己的命令行。

Java进程

  • Java Process Jobs是一个方便的包装器,用于挖掘基于Java的程序。 它等同于使用来自命令行的主要方法运行类。 JavaProcess作业中有以下属性:

最后更新于