Сценарий оболочки не работает на crontab, но работает иначе

У меня есть скрипт, который объединяет все мелкие файлы, присутствующие в часовых каталогах в hdfs, в один большой файл. Скрипт работает нормально, когда выполняется через CLI. Затем я устанавливал сценарий для запуска в 01:30 ежедневно, чтобы объединить файлы предыдущего дня. Но это не работает. Я экспортировал PATH, HADOOP_HOME, HADOOP_CONF_DIR в верхней части моего скрипта. Изменено разрешение пользователя на root. Но никакой помощи. Вот мой сценарий:

#!/bin/bash export PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/java/jdk1.8.0/bin:/home/hadoopuser/hadoop/bin:/home/hadoopuser/zookeeper/bin:/home/hadoopuser/hive/bin:/home/hadoopuser/derby/bin:/home/hadoopuser/maven/bin:/home/hadoopuser/pig/bin:/home/hadoopuser/spark/bin:/home/hadoopuser/flume/bin:/home/hadoopuser/.local/bin:/home/hadoopuser/bin:/home/hadoopuser/user1/tmp export HADOOP_HOME=/home/hadoopuser/hadoop export HADOOP_CONF_DIR=/home/hadoopuser/hadoop/etc/hadoop export HADOOP_COMMON_LIB_NATIVE_DIR=/home/hadoopuser/hadoop/lib/native export HADOOP_OPTS="-Djava.library.path=/home/hadoopuser/hadoop/lib/native" echo $HADOOP_HOME echo $HADOOP_CONF_DIR echo $PATH mnth=$(date +%m) day=$(date -d "1 day ago" +"%d") echo "Running for $day-$mnth-2017" for k in $mnth do for j in $day do for i in 17 18 19 20 21 22 23 do hadoop fs -cat /topics/topic1/year=2017/month=$k/day=$j/hour=$i/* | hadoop fs -put - /merged/topic1/2017"_"$k"_"$j"_"$i hadoop fs -du -s /merged/topic1/2017"_"$k"_"$j"_"$i > /home/hadoopuser/user1/merge_test/size.txt x=`awk '{ print $1 }' /home/hadoopuser/user1/merge_test/size.txt` if [ $x -eq 0 ] then hadoop fs -rm /merged/topic1/2017"_"$k"_"$j"_"$i else echo "MERGE DONE!!! All files generated at hour $i of $j-$k-2017 merged into one" fi done done done rm -f /home/hadoopuser/user1/merge_test/size.txt

Вот что я упоминаю в crontab -e

30 1 * * * /home/hadoopuser/user1/tmp/cron-merge-generalevents.sh > /home/hadoopuser/user1/tmp/cron-merge-generalevents.txt

Все, что я вижу в /home/hadoopuser/user1/tmp/cron-merge-generalevents.txt, относится ко всем часам дня [ ! d2] /home/hadoopuser/hadoop /home/hadoopuser/hadoop/etc/hadoop /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/java/jdk1.8.0/bin:/home/hadoopuser/hadoop/bin:/home/hadoopuser/zookeeper/bin:/home/hadoopuser/hive/bin:/home/hadoopuser/derby/bin:/home/hadoopuser/maven/bin:/home/hadoopuser/pig/bin:/home/hadoopuser/spark/bin:/home/hadoopuser/flume/bin:/home/hadoopuser/.local/bin:/home/hadoopuser/bin:/home/hadoopuser/user1/tmp Running for 19-07-2017 MERGE DONE!!! All files generated at hour 17 of 19-07-2017 merged into one MERGE DONE!!! All files generated at hour 18 of 19-07-2017 merged into one MERGE DONE!!! All files generated at hour 19 of 19-07-2017 merged into one MERGE DONE!!! All files generated at hour 20 of 19-07-2017 merged into one MERGE DONE!!! All files generated at hour 21 of 19-07-2017 merged into one MERGE DONE!!! All files generated at hour 22 of 19-07-2017 merged into one MERGE DONE!!! All files generated at hour 23 of 19-07-2017 merged into one

0
задан 16 November 2017 в 15:24

3 ответа

В таком случае хороший совет - экспортировать также JAVA_HOME, поскольку вы используете hadoop, который зависит от java. Но лучше всего импортировать / исправить все переменные из bash_profile

(в начале скрипта)

. /path/to/.bash_profile

или

source /path/to/.bash_profile
0
ответ дан 22 May 2018 в 20:22

В таком случае хороший совет - экспортировать также JAVA_HOME, поскольку вы используете hadoop, который зависит от java. Но лучше всего импортировать / исправить все переменные из bash_profile

(в начале скрипта)

. /path/to/.bash_profile

или

source /path/to/.bash_profile
0
ответ дан 18 July 2018 в 09:59

В таком случае хороший совет - экспортировать также JAVA_HOME, поскольку вы используете hadoop, который зависит от java. Но лучше всего импортировать / исправить все переменные из bash_profile

(в начале скрипта)

. /path/to/.bash_profile

или

source /path/to/.bash_profile
0
ответ дан 24 July 2018 в 19:29

Другие вопросы по тегам:

Похожие вопросы: