Azkaban報錯解決

Azkaban報錯以及解決

說明:使用Azkaban調度執行腳本時遇到的錯誤以及解決辦法
問題一:
FAILED: ParseException line 16:36 cannot recognize input near 'else' 'type' 'end' in expression specification

該原因是由於執行的腳本中運行的是hive操作,在hive -e “ ”語句中使用了雙引號引起,導致hive語句解析失敗

解決辦法:將hive語句中使用到的雙引號改爲單引號

問題二:
java.lang.RuntimeException: java.io.IOException: Cannot run program "/home/apps/hdfs/azkaban/sqoop.sh" (in directory "/home/apps/usr/webserver/azkaban-exec-server/executions/110/azkaban"): error=2, 沒有那個文件或目錄
Caused by: java.io.IOException: error=2, 沒有那個文件或目錄
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	... 10 more

該原因是由於編寫的job使用的是絕對路徑執行任務腳本,目前Azkaban會在2臺機器中隨機執行,但是任務腳本只放到了一臺機器上,所以執行時找不到文件

解決辦法:將任務腳本部署到兩臺服務器上,此方法有點笨重,應該有其它方法,但是目前還沒有沒找到更合 適的

問題三:
INFO - /home/apps/scripts/data/bin/task.sh:行3: /tool/set.sh: 沒有那個文件或目錄
java.lang.RuntimeException: azkaban.jobExecutor.utils.process.ProcessFailureException: Process exited with code 1
	at azkaban.jobExecutor.ProcessJob.run(ProcessJob.java:305)
	at azkaban.execapp.JobRunner.runJob(JobRunner.java:813)
	at azkaban.execapp.JobRunner.doRun(JobRunner.java:602)
	at azkaban.execapp.JobRunner.run(JobRunner.java:563)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: azkaban.jobExecutor.utils.process.ProcessFailureException: Process exited with code 1
	at azkaban.jobExecutor.utils.process.AzkabanProcess.run(AzkabanProcess.java:125)
	at azkaban.jobExecutor.ProcessJob.run(ProcessJob.java:297)
	... 8 more

該原因是由於工程中初始化環境時會自定義環境變量,但是使用Azkaban調度執行時不會加載環境變量導致目錄失效,所以執行時找不到文件

解決辦法:加載環境變量

問題四:

當使用source ~/.bash_profile加載環境環境量時出現以下錯誤

INFO - /home/apps/data/source_bash.sh:行1: /root/.bash_profile: 權限不夠

java.lang.RuntimeException: azkaban.jobExecutor.utils.process.ProcessFailureException: Process exited with code 1
	at azkaban.jobExecutor.ProcessJob.run(ProcessJob.java:305)

該原因是由於yarn的資源隔離,設定了角色目錄,目前使用的是角色賬號執行的腳本,所以執行/root/.bash_profile時報錯

解決辦法:source /該角色對應的目錄下/.bash_profile

問題五:
INFO - /home/apps/data/source_bash.sh:行1: /tool/set.sh: 權限不夠

java.lang.RuntimeException: azkaban.jobExecutor.utils.process.ProcessFailureException: Process exited with code 1
	at azkaban.jobExecutor.ProcessJob.run(ProcessJob.java:305)

該原因是因爲腳本沒有賦予執行權限

解決辦法:到對應的腳本目錄下 chmod -R 755 *

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章