我正在尝试使用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 ..."
答案 0 :(得分:0)
由于没有捕获的输出可用于调试输出,我只能推测。
但是根据我过去的经验,当通过脚本生成时,hadoop作业失败的一个常见原因是,当执行这些命令时,HADOOP_HOME不可用。
直接从终端工作通常不是这种情况。尝试将以下内容添加到“.bashrc”和“.bash_profile”或“.profile”:
export HADOOP_HOME=/usr/lib/hadoop
您可能需要根据具体安装更改路径。
是的,正如评论所说,不仅要重定向标准输出,还要在文件中出错。