【发布时间】:2011-03-20 23:04:45
【问题描述】:
我创建了以下用于调用 hadoop 作业的 shell 脚本:
#!/bin/bash
/opt/hadoop/bin/hadoop jar /path/to/job.jar com.do.something <param-1> ... <param-n> &
wait %1
STATUS=$?
if [ $STATUS -eq 0 ]
then
echo "SUCCESS" | mailx -s "Status: "$STATUS -r "mail@mysite.com" "mail@mysite.com"
exit $STATUS
else
echo "FAILED" | mailx -s "Status: "$STATUS -r "mail@mysite.com" "mail@mysite.com"
exit $STATUS
fi
当我像这样手动运行上述脚本时:
$ ./path/to/job.sh
Hadoop 作业成功执行并返回退出状态“0”。
现在,为了每天自动执行作业,我配置了一个 cron 作业来运行上述脚本,如下所示:
0 22 * * * /path/to/job.sh
但是,现在作业没有提交到 Hadoop,我得到一个退出状态“1”。
这里有几点需要注意:
- 配置 cron 作业的用户帐户是 UserA
- UserA 也是 Hadoop 系统用户
- 集群专用于运行此作业
- 脚本可执行
我想知道为什么作业在 cron 调用时没有运行?
【问题讨论】:
-
cron日志或cron发给 Hadoop 系统用户的电子邮件是怎么说的?在其中一个或两个地方应该有错误消息。