我正在尝试使用 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 ..."
最佳答案
由于没有捕获可用于调试输出的输出,因此我只能推测。
但根据我过去的经验,通过脚本生成 hadoop 作业失败的常见原因之一是执行这些命令时 HADOOP_HOME 不可用。
直接从终端工作时通常情况并非如此。尝试将以下内容添加到“.bashrc”和“.bash_profile”或“.profile”:
export HADOOP_HOME=/usr/lib/hadoop
您可能需要根据您的特定安装更改路径。
是的,正如评论所说,不仅要重定向标准输出,还要重定向文件中的错误。
关于shell - cron 无法在 shell 脚本中使用 hadoop 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11250978/