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。

相關文章
相關標籤/搜索