복붙노트

[HADOOP] Hadoop MapReduce 오류 - / bin / bash : / bin / java :는 디렉토리입니다.

HADOOP

Hadoop MapReduce 오류 - / bin / bash : / bin / java :는 디렉토리입니다.

날씨 데이터의 로그 파일에서 최대 온도를 검색하는 MacOS 10.12에서 기본 MapReduce 프로그램을 실행하려고합니다. 작업을 실행할 때 다음 스택 추적을받습니다.

Stack trace: ExitCodeException exitCode=126:
    at org.apache.hadoop.util.Shell.runCommand(Shell.java:582)
    at org.apache.hadoop.util.Shell.run(Shell.java:479)
    at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:773)
    at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:212)
    at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302)
    at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

자원 관리자의 작업에 대한 stderr 로그 파일에는 "/ bin / bash : / bin / java : is an directory"메시지가 있습니다.

나는 원래 "/ bin / bash : / bin / java : No such file or directory"라는 오류 메시지를 받았지만, hadoop-config.sh 스크립트를이 게시물의 대답으로 제안 된대로 수정했습니다. 다음과 같이 수정했습니다.

if [[ -z $JAVA_HOME ]]; then
# On OSX use java_home (or /Library for older versions)
 if [ "Darwin" == "$(uname -s)" ]; then
  if [ -x /usr/libexec/java_home ]; then
   export JAVA_HOME=${JAVA_HOME}
  else
   export JAVA_HOME=${JAVA_HOME}
  fi
 fi

My $ JAVA_HOME 변수는 다음과 같이 설정됩니다. /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home

이 문제는 JAVA_HOME 변수의 구성 문제로 인한 것입니까?

해결법

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

    1.이것은 hadoop-env.sh에서 JAVA_HOME 변수를 하드 코딩하여 해결되었습니다 (이 질문에 대한 가장 높은 투표 응답에 지정된대로)

    이것은 hadoop-env.sh에서 JAVA_HOME 변수를 하드 코딩하여 해결되었습니다 (이 질문에 대한 가장 높은 투표 응답에 지정된대로)

    변경된 항목 :

    export JAVA_HOME=${JAVA_HOME}
    

    이에:

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home
    
  2. ==============================

    2.나는이 문제로 내 자신의 경기장을 가지고 있었고, 내 자신의 경험을 던지고 싶었다. 내 경우에는 / bin / bash : / bin / java : Apache 웹 사이트에서 자세한 예제를 실행하려고 할 때 해당 파일이나 디렉토리를 가져 오지 않았습니다.

    나는이 문제로 내 자신의 경기장을 가지고 있었고, 내 자신의 경험을 던지고 싶었다. 내 경우에는 / bin / bash : / bin / java : Apache 웹 사이트에서 자세한 예제를 실행하려고 할 때 해당 파일이나 디렉토리를 가져 오지 않았습니다.

    이 문제를 해결하는 방법을 찾기 시작하기에 좋은 곳은 모든 파일을 조사하여 문제가 어디에서 발생했는지 확인하는 것입니다. grep -r '/ bin / java'./*

    JAVA = $ JAVA_HOME / bin / java의 다양한 선언 외에도 $ HADOOP_CONF_DIR / share / hadoop / httpfs / tomcat / bin / setclasspath.sh에서 _RUNJAVA = $ JRE_ENV / bin / java를 보았습니다. 이 환경 변수를 설정하지 않았으므로 원사를 멈추고 $ JAVA_HOME과 같게 설정 한 다음 다시 시작했습니다.

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

    3.또는이 주석에 제시된 명령 순서를 시도 할 수 있습니다.

    또는이 주석에 제시된 명령 순서를 시도 할 수 있습니다.

    hdfs namenode -format;
    start-dfs.sh;
    yarn-daemon.sh start resourcemanager;
    yarn-daemon.sh start nodemanager;
    

    pseudo-distributed 모드에서 "start-yarn.sh"를 통해 YARN을 시작하면 안됩니다. 이 문제는 "start-yarn.sh"가 작동하는 방식과 관련이 있습니다 (향후 릴리스에서 수정 될 예정 임).

  4. from https://stackoverflow.com/questions/39628501/hadoop-mapreduce-error-bin-bash-bin-java-is-a-directory by cc-by-sa and MIT license