cron在shell脚本中没有使用hadoop命令

时间:2012-06-28 18:43:57

标签: shell hadoop crontab cron-task

我正在尝试使用crontab计划一个cronjob来执行一个shell脚本,该脚本按顺序执行hadoop命令列表,但是当我查看hadoop文件夹时,不会创建或删除文件夹。我们集群上的hadoop连接速度很慢。因此,由于重试次数,这些hadoop命令可能需要一段时间才能执行。

Cron表达

*/5 * * * * sh /test1/a/bin/ice.sh >> /test1/a/run.log 

shell脚本

#!/bin/sh

if [ $# == 1 ]
then
        TODAY=$1
else
        TODAY=`/bin/date +%m%d%Y%H%M%S`
fi

# define seed folder here
#filelist = "ls /test1/a/seeds/"

#for file in $filelist
for file in `/bin/ls /test1/a/seeds/`
do
        echo $file
        echo $TODAY
        INBOUND="hadoop fs -put /test1/a/seeds/$file /apps/hdmi-set/inbound/$file.$TODAY/$file"
        echo $INBOUND
        $INBOUND
        SEEDDONE="hadoop fs -put /test1/a/seedDone /apps/hdmi-set/inbound/$file.$TODAY/seedDone"
        echo $SEEDDONE
        $SEEDDONE
done

echo "hadoop Inbound folders created for job1 ..."

1 个答案:

答案 0 :(得分:0)

由于没有捕获的输出可用于调试输出,我只能推测。

但是根据我过去的经验,当通过脚本生成时,hadoop作业失败的一个常见原因是,当执行这些命令时,HADOOP_HOME不可用。

直接从终端工作通常不是这种情况。尝试将以下内容添加到“.bashrc”和“.bash_profile”或“.profile”:

export HADOOP_HOME=/usr/lib/hadoop

您可能需要根据具体安装更改路径。

是的,正如评论所说,不仅要重定向标准输出,还要在文件中出错。