我在centOS系统上安装了hadoop。我有一个shell脚本,它将在某个特定小时文件夹位置生成的HDFS的所有小文件合并到hdfs的另一个位置的一个文件中。 调用时,shell工作正常。
然后我把shell放在每天凌晨01:30作为cron作业运行。
我输入了crontab -e
并粘贴了这个:
30 1 * * * /home/hadoop/tmp/cron-merge-files.sh > /home/hadoop/tmp/cron-merge-files.txt
但合并操作不会发生。我在/var/log/cron
文件中看到上午01:30这个条目来了,但我看不到这些文件在hdfs合并。当我简单地执行
shell脚本,然后它完全正常工作,并在脚本内写入所述操作。
Jul 8 01:30:01 ip-10-1-3-111 CROND[2265463]: (hadoopuser) CMD (/home/hadoop/tmp/cron-merge-files.sh > /home/hadoop/tmp/cron-merge-files.txt)
/home/hadoop/tmp/cron-merge-files.txt的内容是一个写在循环中的echo语句。循环应该运行24次,并打印出来 24次。
我不确定发生了什么。
答案 0 :(得分:0)
我从另一个论坛得到了这个问题的解决方案。当通过crontab运行相同的脚本时,环境变量出现了一些问题。刚刚将.bash_profile导出到我的脚本中并且工作正常。