一、建立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)都会被执行工具
一、从数据库表中获取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。