Azkaban使用

project文件制做(举例说明)

一、建立project根目录mysql

#you_project_name做为project的根目录
mkdir you_project_name

 

二、建立一个能够被依赖的flowsql

#you_project_name下建立文件夹test_flow_base
mkdir test_flow_base

#进入文件夹并建立job文件和脚本文件
touch exec_flow_base.job hello.sh

#exec_flow_base.job脚本内容
cat exec_flow_base.job
#-----------------------------------start-----------------------------------
type=command
notify.emails=zj_400@163.com
command=sh ./hello.sh
#------------------------------------end------------------------------------

#hello.sh脚本内容
cat hello.sh
#-----------------------------------start-----------------------------------
#!/bin/sh

echo "----------------------hello 1 flow pwd:"$(cd `dirname $0`; pwd)

exit 0
#------------------------------------end------------------------------------


#退出文件夹test_flow_base
#建立test_flow_base.job(指定以前建立的job(exec_flow_base.job)为一个flow,为以后的依赖作准备)
cat test_flow_base.job
#-----------------------------------start-----------------------------------
type=flow
flow.name=exec_flow_base
#------------------------------------end------------------------------------

 

三、建立一个job数据库

#you_project_name下建立文件夹test_job_base
mkdir test_job_base

#进入test_job_base建立job文件和脚本文件
touch exec_job_base.job hello.sh

#exec_job_base.job脚本内容
cat exec_job_base.job
#-----------------------------------start-----------------------------------
type=command
command=sh ./hello.sh
#------------------------------------end------------------------------------

#hello.sh脚本内容
cat hello.sh
#-----------------------------------start-----------------------------------
#!/bin/sh

echo "----------------------hello 2 flow pwd:"$(cd `dirname $0`; pwd)

exit 0
#------------------------------------end------------------------------------

 

四、建立一个依赖2和3的jobvim

#you_project_name下建立文件夹test_flow_seq
mkdir test_flow_seq

#进入test_flow_seq并建立job文件和脚本文件
touch exec_hello.job hello.sh

#exec_hello.job脚本内容
cat exec_job_base.job
#-----------------------------------start-----------------------------------
type=command
dependencies=test_flow_base,exec_job_base
notify.emails=zj_400@163.com
command=sh ./hello.sh
#------------------------------------end------------------------------------

#hello.sh脚本内容
cat hello.sh
#-----------------------------------start-----------------------------------
#!/bin/sh

echo "----------------------hello 3 flow pwd:"$(cd `dirname $0`; pwd)

exit 0
#------------------------------------end------------------------------------

注:dependencies=test_flow_base,exec_job_base:指定依赖步骤2建立的flow (test_flow_base.job),及步骤3中建立的job (exec_job_base.job)安全

 

五、执行projectbash

文件打包服务器

#压缩你的project
zip -r you_project_name.zip you_project_name/

 

在Azkaban服务上建立project,并上传压缩包。app

执行时指定执行步骤4建立的job对应的flow(exec_hello)便可,其依赖的flow(test_flow_base)和job(exec_job_base)都会被执行工具

 

获取上传project文件(zip文件)的方式有两种:

一、从数据库表中获取spa

上传zip存于表project_files。

#查询project_id

select * from projects where name ='you_project_name';

#查询project_id对应的flow

#select * from project_flows where project_id=245;

#查询project_id对应的文件(files字段,多条取version较大的)

select * from project_files where project_id=245;

 

#navicat for mysql工具

查询到文件以后,对对应的值右键->保存数据为->保存为zip格式

 

注:这种方式不太安全,若是用户在安装服务器上修改脚本文件,但不从新上传project,这种方式获取的不是最新的脚本内容。换句话说,也就是用户在安装服务器上直接vim修改上传以后的脚本是不会触发数据库更新的,可是schedule的时候时以安装服务器上的脚本为准。

 

二、从安装服务器上获取

随便从project中找一个文件,好比you_flow_script.sh

在安装服务器上执行 find / -name you_flow_script.sh

结果以下:

/opt/app/azkaban-executor-2.5.0/executions/20887/you_project_name/you_flow_script.sh

/opt/app/azkaban-executor-2.5.0/executions/20929/you_project_name/you_flow_script.sh

/opt/app/azkaban-executor-2.5.0/projects/245.1/you_project_name/you_flow_script.sh

/opt/app/azkaban-executor-2.5.0/projects/245.2/you_project_name/you_flow_script.sh

 

进入/opt/app/azkaban-executor-2.5.0/projects/245.2/

目录下文件夹内就是project内容。

 

注:245是这个project对应的ID,“.”以后的数字为version。

相关文章
相关标签/搜索