복붙노트

[HADOOP] cron에 의해 호출 될 때 하둡 작업이 실패 함

HADOOP

cron에 의해 호출 될 때 하둡 작업이 실패 함

hadoop 작업을 호출하기 위해 다음 쉘 스크립트를 작성했습니다.

#!/bin/bash
/opt/hadoop/bin/hadoop jar /path/to/job.jar com.do.something <param-1> ... <param-n> &
wait %1
STATUS=$?
if [ $STATUS -eq 0 ]
then    
    echo "SUCCESS" | mailx -s "Status: "$STATUS -r "mail@mysite.com" "mail@mysite.com"
    exit $STATUS
else
    echo "FAILED" | mailx -s "Status: "$STATUS -r "mail@mysite.com" "mail@mysite.com"
    exit $STATUS
fi

위의 스크립트를 다음과 같이 수동으로 실행할 때 :

$ ./path/to/job.sh

하둡 작업이 성공적으로 실행되어 종료 상태 "0"을 반환합니다.

이제 매일 작업 실행을 자동화하기 위해 위의 스크립트를 다음과 같이 실행하도록 cron 작업을 구성했습니다.

0 22 * * * /path/to/job.sh

그러나 이제 작업이 Hadoop에 제출되지 않고 종료 상태 "1"이 표시됩니다.

몇 가지주의 할 사항 :

cron이 호출 할 때 왜 작업이 실행되지 않는지 알고 싶습니다.

해결법

  1. ==============================

    1.

    0 22 * * * /path/to/job.sh
    

    당신이 "."을 잃어버린 것 같아요 당신의 명령에.

    0 22 * * * ./path/to/job.sh
    

    작동합니까?

  2. ==============================

    2.cron에서 실행하는 환경은 일반 쉘과 다를 수 있습니다. 예를 들어 확인하십시오. JAVA_HOME, PATH 등

    cron에서 실행하는 환경은 일반 쉘과 다를 수 있습니다. 예를 들어 확인하십시오. JAVA_HOME, PATH 등

  3. ==============================

    3.비슷한 문제가 발생했습니다. JAVA_HOME, HADOOP_HOME 및 PATH와 같은 환경 변수를 설정하기 위해 $ HOME / .bashrc를 사용했습니다. 또한 job.sh를 수동으로 실행할 수도 있습니다. 그러나 job.sh가 cron에 의해 호출되면 job.sh 내의 hadoop 관련 명령을 올바르게 호출 할 수 없습니다.

    비슷한 문제가 발생했습니다. JAVA_HOME, HADOOP_HOME 및 PATH와 같은 환경 변수를 설정하기 위해 $ HOME / .bashrc를 사용했습니다. 또한 job.sh를 수동으로 실행할 수도 있습니다. 그러나 job.sh가 cron에 의해 호출되면 job.sh 내의 hadoop 관련 명령을 올바르게 호출 할 수 없습니다.

    내 문제의 원인은 cron이 $ HOME / .bashrc를 소스하지 않기 때문입니다. 따라서 내부 환경 변수는 cron에서 볼 수 없습니다. job.sh에서 이러한 모든 환경 변수를 설정 한 후 hadoop 관련 명령이 cron에 의해 올바르게 호출됩니다.

  4. ==============================

    4./ etc / profile에서 JAVA_HOME 및 HADOOP_HOME을 설정 한 경우 더하다

    / etc / profile에서 JAVA_HOME 및 HADOOP_HOME을 설정 한 경우 더하다

    당신의 직업에서 .sh. 도움이 될 것입니다.

  5. ==============================

    5.job.sh에서 JAVA_HOME, HADOOP_HOME을 설정 한 후 :

    job.sh에서 JAVA_HOME, HADOOP_HOME을 설정 한 후 :

    당신의 직업에서 무엇을 참조하십시오

  6. from https://stackoverflow.com/questions/3332917/hadoop-job-fails-when-invoked-by-cron by cc-by-sa and MIT license