복붙노트

[HADOOP] Hadoop에 JAVA_Home이 설정되지 않았습니다.

HADOOP

Hadoop에 JAVA_Home이 설정되지 않았습니다.

나는 초보자이고 hadoop을 설치하고 우분투에서 단일 노드 클러스터로 hadoop을 설치하려고한다. 내 hadoop_env.sh에서 JAVA_HOME입니다.

# The java implementation to use.
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386/
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}

그러나 내가 그것을 실행하면 다음과 같은 오류가 발생합니다.

Starting namenodes on [localhost]
localhost: Error: JAVA_HOME is not set and could not be found.
localhost: Error: JAVA_HOME is not set and could not be found.
Starting secondary namenodes [0.0.0.0]
0.0.0.0: Error: JAVA_HOME is not set and could not be found.

이 오류를 제거하려면 어떻게합니까?

해결법

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

    1.코드를 디버깅하고 JAVA_HOME이 환경에 설정되어 있어도 다른 호스트에 대한 ssh 연결이 코드 내부에서 이루어지고 start-dfs.sh에 잘 설정된 JAVA_HOME 변수가 설정되지 않았기 때문에 값이 손실된다는 것을 알았습니다 hadoop-env.sh에서.

    코드를 디버깅하고 JAVA_HOME이 환경에 설정되어 있어도 다른 호스트에 대한 ssh 연결이 코드 내부에서 이루어지고 start-dfs.sh에 잘 설정된 JAVA_HOME 변수가 설정되지 않았기 때문에 값이 손실된다는 것을 알았습니다 hadoop-env.sh에서.

    이 문제에 대한 해결책은 hadoop-env.sh에서 JAVA_HOME 변수를 설정하는 것이므로 제대로 작동해야합니다.

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

    2.나는 같은 오류가 있었고 Soil Jain의 발언으로 해결했지만 조금 더 명확하게하기 위해 hadoop-env.sh는 다음과 같은 표현식을 사용한다.

    나는 같은 오류가 있었고 Soil Jain의 발언으로 해결했지만 조금 더 명확하게하기 위해 hadoop-env.sh는 다음과 같은 표현식을 사용한다.

    export JAVA_HOME=${JAVA_HOME}
    

    JVM 설치 경로를 하드 코딩하면 작동합니다.

    export JAVA_HOME=/usr/lib/jvm/java...
    

    환경 변수에 의한이 해결책은 실패로 보인다. 하드 코딩으로 인해 문제가 해결되었습니다.

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

    3.HADOOP_HOME / conf 디렉토리 아래 hadoop-env.sh 파일을 업데이트하십시오. JAVA_HOME을 내보낼 항목이 있습니다.

    HADOOP_HOME / conf 디렉토리 아래 hadoop-env.sh 파일을 업데이트하십시오. JAVA_HOME을 내보낼 항목이 있습니다.

    이 파일에서 적절한 JAVA_HOME으로 설정하면 문제가 해결됩니다.

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

    4.hadoop_env.sh를로드하고 있습니까? hadoop-env.sh (밑줄 대신 대시 - conf 디렉토리 아래 있음)를 참조 할 수 있습니다.

    hadoop_env.sh를로드하고 있습니까? hadoop-env.sh (밑줄 대신 대시 - conf 디렉토리 아래 있음)를 참조 할 수 있습니다.

    BTW, 빠른 설치를위한 매우 유용한 안내서입니다.

    http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/

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

    5.나는 hadoop 2.8.0을 사용하고있다. JAVA_HOME (.bashrc에 넣었습니다.)을 export 했는데도 start-dfs.sh를 실행하는 동안이 오류를 잡았습니다.

    나는 hadoop 2.8.0을 사용하고있다. JAVA_HOME (.bashrc에 넣었습니다.)을 export 했는데도 start-dfs.sh를 실행하는 동안이 오류를 잡았습니다.

    user@host:/opt/hadoop-2.8.0 $ echo $JAVA_HOME
    <path_to_java>
    user@host:/opt/hadoop-2.8.0 $ $JAVA_HOME/bin/java -version
    java version "1.8.0_65"
    ...
    user@host:/opt/hadoop-2.8.0 $ sbin/start-dfs.sh
    ...
    Starting namenodes on []
    localhost: Error: JAVA_HOME is not set and could not be found.
    localhost: Error: JAVA_HOME is not set and could not be found.
    

    내가 실행할 수있는 유일한 방법은 etc / hadoop / hadoop-env.sh에 JAVA_HOME = path_to_java를 추가 한 다음 소스를 제공하는 것입니다.

    :/opt/hadoop-2.8.0 $ grep JAVA_HOME etc/hadoop/hadoop-env.sh
    #export JAVA_HOME=${JAVA_HOME}
    export JAVA_HOME=path_to_java
    user@host:/opt/hadoop-2.8.0 $ source etc/hadoop/hadoop-env.sh
    

    어쩌면 (소싱 hadoop-env.sh) 위의 게시물에 암시되었을 수 있습니다. 누군가가 큰 소리로 말해야한다고 생각했습니다. 이제 실행됩니다. 나는 (내가 사용하고있는 서버의 제한된 리소스로 인해) 다른 문제를 겪었지만 적어도이 문제를 극복했다.

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

    6.먼저 hadoop_env.sh에서 JAVA_HOME을 설정해야합니다. (.bashrc의 로컬 JAVA_HOME은 어떻게 든 무시 될 것입니다)

    먼저 hadoop_env.sh에서 JAVA_HOME을 설정해야합니다. (.bashrc의 로컬 JAVA_HOME은 어떻게 든 무시 될 것입니다)

    # The java implementation to use.
    export JAVA_HOME=/usr/lib/jvm/default-java
    

    그런 다음 HADOOP_CONF_DIR 지점을 hadoop_env.sh의 디렉토리로 설정하십시오. ~ / .bashrc에 다음 행을 추가하십시오.

    HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"
    export HADOOP_CONF_DIR
    

    여기서 / usr / local / hadoop / etc / hadoop은 hadoop_env.sh가 들어있는 디렉토리입니다.

  7. ==============================

    7.위의 대답은 기본 conf 디렉토리 $ HADOOP_HOME / conf 또는 $ HADOOP_HOME / etc / hadoop을 사용하는 한 작동해야합니다. 다음은 다른 conf 폴더를 사용하는 경우 수행해야 할 몇 가지 작업입니다.

    위의 대답은 기본 conf 디렉토리 $ HADOOP_HOME / conf 또는 $ HADOOP_HOME / etc / hadoop을 사용하는 한 작동해야합니다. 다음은 다른 conf 폴더를 사용하는 경우 수행해야 할 몇 가지 작업입니다.

    값을 적절하게 변경하십시오. .bashrc 또는 .profile 또는 .bash_profile에 hadoop과 관련된 다른 환경 변수가 있으면 위의 행 옆에 추가하십시오.

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

    8.프로그램과 파일 사이의 공간을 알지 못합니다 : "프로그램 파일". 그래서 jdk의 폴더를 C :로 복사하거나 폴더 이름에 공백이없는 폴더를 다음과 같이 지정합니다 : export JAVA_HOME = Name_Path_Copied. 나는 그것이 달리는 것을 본다.

    프로그램과 파일 사이의 공간을 알지 못합니다 : "프로그램 파일". 그래서 jdk의 폴더를 C :로 복사하거나 폴더 이름에 공백이없는 폴더를 다음과 같이 지정합니다 : export JAVA_HOME = Name_Path_Copied. 나는 그것이 달리는 것을 본다.

  9. from https://stackoverflow.com/questions/20628093/java-home-is-not-set-in-hadoop by cc-by-sa and MIT license