shell - cron 无法在 shell 脚本中使用 hadoop 命令

标签 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 ..."

最佳答案

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

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

直接从终端工作时通常情况并非如此。尝试将以下内容添加到“.bashrc”和“.bash_profile”或“.profile”:

export HADOOP_HOME=/usr/lib/hadoop

您可能需要根据您的特定安装更改路径。

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

关于shell - cron 无法在 shell 脚本中使用 hadoop 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11250978/

相关文章:

linux - 即使报告捕获了数百万个数据包,Tcpdump 保存的文件也是空的

shell - 一行中的多个字符串的 grep

Python --command 命令行选项

java - 为在 yarn 模式下运行的每个 spark 作业配置 log4j

python - cron 作业执行的脚本中的相对路径

linux - crontab 执行 shell 脚本 : Mount error(13): Permission denied

linux - Nginx init.d 脚本

arrays - 从HIVE中的给定开始日期和结束日期创建序列数组

scala - 使用 Scala 将 base64 解码为 ASCII

linux - 仅从早上到晚上设置 cron