一、建立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。