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 *

你可能感兴趣的:(大数据,Azkaban,任务调度,大数据,hadoop)