【问题标题】:Hadoop job fails when invoked by cron由 cron 调用时 Hadoop 作业失败
【发布时间】: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 系统用户的电子邮件是怎么说的?在其中一个或两个地方应该有错误消息。

标签: java shell cron hadoop


【解决方案1】:
0 22 * * * /path/to/job.sh

我认为您在命令中丢失了"."。

0 22 * * * ./path/to/job.sh

有用吗?

【讨论】:

  • 您的意思是添加工作目录吗?那将是“0 .. * * * cd /somedir;./path/to/job.sh” 的原因。当您发布它时,该作业将在 cron 主目录(很可能是用户主目录)中执行
【解决方案2】:

从 cron 运行的环境可能与您的常规 shell 不同。您可能想检查一下,例如JAVA_HOME、PATH 等

【讨论】:

  • 可能是这样。但是,hadoop 配置包含 JAVA_HOME 位置。而且,我认为当我给出调用 hadoop 命令的绝对路径时,PATH 变量可能不是原因。但是,我仍然通过导出 JAVA_HOME=/path/to/java/home 和 PATH=/path/to/hadoop/bin/ 来试一试。但是,它仍然没有成功。我得到“1”作为退出状态。你知道退出状态“1”意味着什么吗?
【解决方案3】:

我也遇到过类似的问题。我已经使用 $HOME/.bashrc 来设置环境变量,例如 JAVA_HOME、HADOOP_HOME 和 PATH。我也可以手动运行我的 job.sh。但是在cron调用job.sh时,job.sh里面的hadoop相关命令不能正确调用。

我的问题的原因是 cron 不会获取 $HOME/.bashrc。所以里面的环境变量不能被cron看到。在job.sh中设置好所有这些环境变量后,cron就可以正确调用hadoop相关命令了。

【讨论】:

    【解决方案4】:

    如果您在 /etc/profile 中设置了 JAVA_HOME 和 HADOOP_HOME。添加

    。 /etc/配置文件

    在你的 job.sh 中。这会有所帮助。

    【讨论】:

      【解决方案5】:

      在job.sh中设置JAVA_HOME,HADOOP_HOME后,则:

      0 22 * * * sh -x $HOME/path/to/job.sh > $HOME/job.log 2>&1

      看看你的job.log中有什么

      【讨论】:

        猜你喜欢
        • 2015-05-23
        • 1970-01-01
        • 1970-01-01
        • 2011-04-11
        • 2019-06-04
        • 2013-06-05
        • 2021-07-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多