集成教程,參考 https://github.com/leoChaoGlut/ambari-azkaban-service
集成之後啓動
一、沒有問題,但是stop出現錯誤:錯誤沒有截圖
1、查看AzkabanExecutorServer啓動腳本 azkaban-executor-start.sh
在啓動AzkabanExecutorServer的時候,會吧PID寫入文件currentpid 中
2、查看AzkabanWebServer啓動腳本,azkaban-web-start.sh
在啓動AzkabanWebServer的時候,也會吧PID覆蓋寫入文件currentpid 中
3、錯誤描述
當順序殺掉進程的時候,
先執行azkaban-executor-shutdown.sh
中kill_process_with_retry "${pid}" "${pname}" "${maxattempt}" 【具體代碼在util.sh】
Kill 時殺死的PID是webserver,所以再執行檢查是否還含有AzkabanExecutorServer進程的時候一直先顯示1
檢查腳本
azkaban_executor.py
執行的命令:export AZ_CNT=`ps -ef |grep -v grep |grep azkaban-exec-server | wc -l` && `if [ $AZ_CNT -ne 0 ];then exit 0;else exit 3;fi `
命令ps -ef |grep -v grep |grep azkaban-exec-server | wc –l常返回1,不退出
4、修復步驟:
vim azkaban-web-start.sh 修改pid文件
點擊啓動【事先手動殺死azkaban兩個進程】
ll /usr/hdp/current/azkaban
此時有兩個文件保存pid不混合
當然在kill進程的腳本中也要修改
vim bin/azkaban-web-shutdown.sh 改爲對應文件
二、這時在ambari點擊stop
發現還是有錯誤,一直檢查不退出
1、還原stop時狀態,手動殺死進程,然後start
2、執行ps aux|grep azkaban-exec-server
兩個進程中加載了
azkaban-exec-server-0.1.0-SNAPSHOT.jar
azkaban-web-server-0.1.0-SNAPSHOT.jar
導致殺死一個後檢查狀態時還有一個包含azkaban-exec-server的進程,導致不退出
3、解決方法:
在啓動腳本
azkaban-executor-start.sh
azkaban-web-start.sh
執行的時候互加載lib下面所有jar包
for file in $azkaban_dir/lib/*.jar;
do
CLASSPATH=$CLASSPATH:$file
Done
1)修改azkaban-executor-start.sh
conf=$azkaban_dir/conf
filtr="web"
if [[ -z "$tmpdir" ]]; then
tmpdir=/tmp
fi
for file in $azkaban_dir/lib/*.jar;
do
if [[ $file =~ $filtr ]];
then
echo ""
else
CLASSPATH=$CLASSPATH:$file
fi
done
2)修改azkaban-web-start.sh
conf=$azkaban_dir/conf
filtr="exec"
if [[ -z "$tmpdir" ]]; then
tmpdir=/tmp
fi
for file in $azkaban_dir/lib/*.jar;
do
if [[ $file =~ $filtr ]];
then
echo ""
else
CLASSPATH=$CLASSPATH:$file
fi
done
在啓動是不加載另一個包就行了,在azkaban啓動後,點擊stop
問題解決