복붙노트

[HADOOP] Hadoop 사용 : localhost : 오류 : JAVA_HOME이 설정되지 않았습니다.

HADOOP

Hadoop 사용 : localhost : 오류 : JAVA_HOME이 설정되지 않았습니다.

나는 우분투 12.04 LTS와 함께 일하고있다.

가상 배포 작업을 수행하기 위해 hadoop 빠른 시작 설명서를 살펴 보겠습니다. 간단하고 간단합니다 (쉽게!).

그러나 start-all.sh를 실행하려고하면 다음을 얻습니다.

localhost: Error: JAVA_HOME is not set.

이 문제에 대한 stackoverflow에 대한 다른 모든 조언을 읽었으며 JAVA_HOME이 설정되도록 다음을 수행했습니다.

/etc/hadoop/conf/hadoop-env.sh에 내가 설정했습니다.

JAVA_HOME=/usr/lib/jvm/java-6-oracle
export JAVA_HOME

/etc/bash.bashrc에서 나는 설정했다.

JAVA_HOME=/usr/lib/jvm/java-6-oracle
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH

which java returns :

/usr/bin/java

자바 - 버전 작품

echo $ JAVA_HOME은 다음을 반환합니다 :

/usr/lib/jvm/java-6-oracle

나는 루트가되어 터미널에 명시 적으로 쓰려고 노력했다.

$ JAVA_HOME=/usr/lib/jvm/java-6-oracle
$ export JAVA_HOME
$ start-all.sh

이 오류를 해결하는 방법을 보여 주시면 크게 감사하겠습니다. 내 JAVA_HOME이 어떻게 든 재정의되고 있다고 생각합니다. 그렇다면 내 수출품을 글로벌하게 만드는 방법을 설명해 주시겠습니까?

해결법

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

    1.나는 hadoop 1.1을 사용하고 있으며 같은 문제에 직면 해있다.

    나는 hadoop 1.1을 사용하고 있으며 같은 문제에 직면 해있다.

    /etc/hadoop/hadoop-env.sh에서 JAVA_HOME 변수를 변경하면 해결됩니다.

    export JAVA_HOME=/usr/lib/jvm/<jdk folder>
    
  2. ==============================

    2.이 문제를 해결하는 방법은 conf / hadoop-env.sh 파일에서 JAVA_HOME 변수를 내보내는 것입니다.

    이 문제를 해결하는 방법은 conf / hadoop-env.sh 파일에서 JAVA_HOME 변수를 내보내는 것입니다.

    ~ / .bashrc에 해당 변수를 이미 내 보낸 경우에는 오류가 표시됩니다.

    따라서 conf / hadoop-env.sh를 편집하고 "JAVA_HOME 내보내기"행의 주석 처리를 제거하고 적절한 파일 시스템 경로, 즉 Java JDK에 대한 경로를 추가하십시오.

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

    3.이것을 디버그하는 방법은 "echo $ JAVA_HOME"을 start-all.sh에 넣는 것입니다. 다른 사용자 이름이나 자신처럼 hadoop 환경을 실행하고 있습니까? 전자의 경우 JAVA_HOME 환경 변수가 해당 사용자에 대해 설정되지 않았을 가능성이 큽니다.

    이것을 디버그하는 방법은 "echo $ JAVA_HOME"을 start-all.sh에 넣는 것입니다. 다른 사용자 이름이나 자신처럼 hadoop 환경을 실행하고 있습니까? 전자의 경우 JAVA_HOME 환경 변수가 해당 사용자에 대해 설정되지 않았을 가능성이 큽니다.

    다른 잠재적 인 문제점은 JAVA_HOME을 잘못 지정 했으므로 제공 한 값이 JDK / JRE를 가리 키지 않습니다. JAVA_HOME이 잘못 설정된 경우에도 "which java"및 "java -version"이 모두 작동합니다.

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

    4.etc / hadoop / hadoop-env.sh에서 추출한다.

    etc / hadoop / hadoop-env.sh에서 추출한다.

    유일한 필수 환경 변수는 JAVA_HOME입니다. 다른 모든 것들은  선택 과목. 분산 구성을 실행할 때  이 파일에 JAVA_HOME을 설정하여에 정의되어 있어야합니다. 원격 노드.

    이것은 기존 정의가 JAVA_HOME 변수를 읽더라도 JAVA_HOME을 여기에 설정하는 것이 좋습니다. 아마도 이전에 설정된 값에서 JAVA_HOME의 값을 얻지 못하는 것입니다 ... 표준 아파치 설명서는 이것을 말하지 않습니다 :( :(

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

    5.이 오류는 180 행에서 발생합니다.

    이 오류는 180 행에서 발생합니다.

    if [[ -z $JAVA_HOME ]]; then
       echo "Error: JAVA_HOME is not set and could not be found." 1>&2
       exit 1
    fi
    

    libexec / hadoop-config.sh에 있습니다.

    해당 스크립트에서 echo $ JAVA_HOME을 시도하십시오. 그것이 인식하지 못하면,

    다음을 사용하여 JAVA_HOME을 찾으십시오.

    $ (readlink -f / usr / bin / javac | sed "s : / bin / javac ::")

    라인 교체

    export JAVA_HOME = $ {JAVA_HOME} /etc/hadoop/hadoop-env.sh에서 JAVA_HOME 명령을 사용하십시오.

  6. ==============================

    6.나는 또한 hadoop 1.1에서 비슷한 문제에 직면했다. 나는 JAVA_HOME이 주석 처리되었다는 것을 알아 채지 못했다 : hadoop / conf / hadoop-env.sh

    나는 또한 hadoop 1.1에서 비슷한 문제에 직면했다. 나는 JAVA_HOME이 주석 처리되었다는 것을 알아 채지 못했다 : hadoop / conf / hadoop-env.sh

    그것은

    /#JAVA_HOME=/usr/lib/jvm/java-6-oracle
    

    그것을 바꿔야 만했다.

    JAVA_HOME=/usr/lib/jvm/java-6-oracle
    
  7. ==============================

    7.데비안이나 리눅스의 맛에 관계없이 ~ / .bash_profile은 특정 사용자에게 속하고 시스템 전체가 아니라는 것을 알아야합니다. pseudo-distributed 환경에서 hadoop은 localhost에서 작동하므로 .bash_profile의 $ JAVA_HOME이 더 이상 사용되지 않습니다.

    데비안이나 리눅스의 맛에 관계없이 ~ / .bash_profile은 특정 사용자에게 속하고 시스템 전체가 아니라는 것을 알아야합니다. pseudo-distributed 환경에서 hadoop은 localhost에서 작동하므로 .bash_profile의 $ JAVA_HOME이 더 이상 사용되지 않습니다.

    ~ / .bashrc에 JAVA_HOME을 내보내고 시스템 전체를 사용하십시오.

  8. ==============================

    8.Ubuntu LTS 16.04에서 같은 문제가 발생했습니다. bash -vx ./bin/hadoop을 실행하면 java가 디렉토리인지 여부가 테스트되었습니다. 그래서 JAVA_HOME을 폴더로 바꿨다.

    Ubuntu LTS 16.04에서 같은 문제가 발생했습니다. bash -vx ./bin/hadoop을 실행하면 java가 디렉토리인지 여부가 테스트되었습니다. 그래서 JAVA_HOME을 폴더로 바꿨다.

    ++ [[ ! -d /usr/bin/java ]]
    ++ hadoop_error 'ERROR: JAVA_HOME /usr/bin/java does not exist.'
    ++ echo 'ERROR: JAVA_HOME /usr/bin/java does not exist.'
    ERROR: JAVA_HOME /usr/bin/java does not exist.
    

    그래서 JAVA_HOME을 ./etc/hadoop/hadoop-env.sh로 변경했습니다.

    export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre/
    

    hadoop이 잘 시작됩니다. 이것은 또한이 기사에서 언급되었습니다.

  9. ==============================

    9.대안이 올바른 것인지 확인하십시오. 실제로 다른 버전을 가리키고 다른 설치된 버전에서 hadoop-env.sh를 변경하려고 할 수 있습니다.

    대안이 올바른 것인지 확인하십시오. 실제로 다른 버전을 가리키고 다른 설치된 버전에서 hadoop-env.sh를 변경하려고 할 수 있습니다.

    -alternatives --install / etc / hadoop / conf [generic_name] [올바른 경로] priority {대체 경로 맨 페이지 확인}

    수동으로 대안을 설정하려면,

    대안 - [일반 이름] [현재 경로]를 설정하십시오.

  10. ==============================

    10.conf / hadoop-env.sh에서 JAVA_HOME 변수를 변경하십시오.

    conf / hadoop-env.sh에서 JAVA_HOME 변수를 변경하십시오.

    export JAVA_HOME=/etc/local/java/<jdk folder>
    
  11. ==============================

    11.

    echo "export JAVA_HOME=/usr/lib/java" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh
    

    주의 사항 : export JAVA_HOME = $ {JAVA_HOME}을 사용하지 마십시오!

  12. from https://stackoverflow.com/questions/14325594/working-with-hadoop-localhost-error-java-home-is-not-set by cc-by-sa and MIT license