1

I'm trying to schedule a cronjob using crontab to execute a shell script which executes a list of hadoop commands sequentially, but when i look at the hadoop folder the folders are not created or dropped. The hadoop connectivity on our cluster is pretty slow. so these hadoop command might take sometime to execute due to number of retries.

Cron expression

*/5 * * * * sh /test1/a/bin/ice.sh >> /test1/a/run.log 

shell script

#!/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 ..."
4

1 に答える 1

0

出力のデバッグに使用できるキャプチャ済みの出力がないため、推測することしかできません。

しかし、私の過去の経験から、スクリプトによって生成された Hadoop ジョブが失敗する一般的な理由の 1 つは、これらのコマンドが実行されたときに HADOOP_HOME が使用できないことです。

通常、端末から直接作業する場合はそうではありません。「.bashrc」と「.bash_profile」または「.profile」の両方に次を追加してみてください。

export HADOOP_HOME=/usr/lib/hadoop

特定のインストールに基づいてパスを変更する必要がある場合があります。

はい、コメントが言うように、標準出力をリダイレクトするだけでなく、ファイル内のエラーもリダイレクトしないでください。

于 2012-06-28T20:09:20.813 に答える