it-swarm.com.ru

/ bin/bash:/bin/Java: нет такого файла или каталога

Я пытался запустить простую программу WordRount MapReduce с использованием Java 1.7 SDK и Hadoop2.7.1 в Mac OS X EL Captain 10.11, и я получаю следующее сообщение об ошибке в моем журнале контейнеров "stderr" /Bin/bash:/bin/Java: нет такого файла или каталога

Журнал приложения

5/11/27 02:52:33 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-Java classes where applicable
15/11/27 02:52:33 INFO client.RMProxy: Connecting to ResourceManager at /192.168.200.96:8032
15/11/27 02:52:34 INFO input.FileInputFormat: Total input paths to process : 0
15/11/27 02:52:34 INFO mapreduce.JobSubmitter: number of splits:0
15/11/27 02:52:34 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1448608832342_0003
15/11/27 02:52:34 INFO impl.YarnClientImpl: Submitted application application_1448608832342_0003
15/11/27 02:52:34 INFO mapreduce.Job: The url to track the job: http://mymac.local:8088/proxy/application_1448608832342_0003/
15/11/27 02:52:34 INFO mapreduce.Job: Running job: job_1448608832342_0003
15/11/27 02:52:38 INFO mapreduce.Job: Job job_1448608832342_0003 running in uber mode : false
15/11/27 02:52:38 INFO mapreduce.Job:  map 0% reduce 0%
15/11/27 02:52:38 INFO mapreduce.Job: Job job_1448608832342_0003 failed with state FAILED due to: Application application_1448608832342_0003 failed 2 times due to AM Container for appattempt_1448608832342_0003_000002 exited with  exitCode: 127
For more detailed output, check application tracking page:http://mymac.local:8088/cluster/app/application_1448608832342_0003Then, click on links to logs of each attempt.
Diagnostics: Exception from container-launch.
Container id: container_1448608832342_0003_02_000001
Exit code: 127
Stack trace: ExitCodeException exitCode=127:
    at org.Apache.hadoop.util.Shell.runCommand(Shell.Java:545)
    at org.Apache.hadoop.util.Shell.run(Shell.Java:456)
    at org.Apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.Java:722)
    at org.Apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.Java:211)
    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:262)
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1145)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:615)
    at Java.lang.Thread.run(Thread.Java:745)


Container exited with a non-zero exit code 127
Failing this attempt. Failing the application.
15/11/27 02:52:38 INFO mapreduce.Job: Counters: 0

Команда Я бегу

hadoop jar wordcount.jar org.myorg.WordCount /user/gangadharkadam/input/ /user/gangadharkadam/output/

Моя переменная ENV

export   Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.1
export HADOOP_MAPRED_HOME=/usr/local/hadoop/hadoop-2.7.1
export HADOOP_COMMON_HOME=/usr/local/hadoop/hadoop-2.7.1
export HADOOP_HDFS_HOME=/usr/local/hadoop/hadoop-2.7.1
export YARN_HOME=/usr/local/hadoop/hadoop-2.7.1
export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-2.7.1/etc/hadoop
export HADOOP_CLASSPATH=$Java_HOME/lib/tools.jar

export PATH=$PATH:$Java_HOME/bin:$HADOOP_HOME/bin:HADOOP_HOME/sbin:$M2_HOME/bin:$ANT_HOME/bin:$IVY_HOME/bin:$FB_HOME/bin:$MYSQL_HOME/bin:$MYSQL_HOME/lib:$SQOOP_HOME/bin

Кажется, проблема в том, что YARN использует другой путь для исполняемого файла Java, отличный от того, который вы используете в своей ОС. локальные журналы для невыполненной задачи в «stderr» показывают-/bin/bash:/bin/Java: нет такого файла или каталога

Я пытался создать мягкую ссылку из $ Java_HOM/bin/Java на/bin/Java, но в El Captian OS X, но не позволяет создать мягкую ссылку. Новый OS X EL Captian имеет учетную запись без прав root, и пользователь не может создавать что-либо в определенных ограниченных папках, таких как/bin /. Любая работа по этому вопросу высоко ценится. Спасибо заранее.

14
geekay2015

Этот ответ применим для Hadoop версии 2.6.0 и более ранних. Отключение SIP и создание символической ссылки обеспечивает обходной путь. Лучшее решение состоит в том, чтобы исправить hadoop-config.sh, чтобы он правильно воспринимал ваш Java_HOME 

В HADOOP_HOME/libexec/hadoop-config.sh ищите условие if ниже # Attempt to set Java_HOME if it is not set

Удалите лишние скобки в строках экспорта Java_HOME, как показано ниже. Изменить это 

if [ -x /usr/libexec/Java_home ]; then
    export Java_HOME=($(/usr/libexec/Java_home))
else
    export Java_HOME=(/Library/Java/Home)
fi

в 

if [ -x /usr/libexec/Java_home ]; then
    // note that the extra parentheses are removed
    export Java_HOME=$(/usr/libexec/Java_home)
else
    export Java_HOME=/Library/Java/Home
fi

Перезапустите пряжу после внесения этого изменения.

Более подробную информацию можно найти здесь https://issues.Apache.org/jira/browse/HADOOP-8717 и, похоже, Hadoop 3.0.0-alpha1 является первым выпуском исправления.

29
sparker

Запуск YARN с использованием следующих команд вместо $HADOOP_PREFIX/sbin/start-yarn.sh устранил эту проблему для меня.

$HADOOP_PREFIX/sbin/yarn-daemon.sh start resourcemanager;

$HADOOP_PREFIX/sbin/yarn-daemon.sh start nodemanager;

как упомянуто по следующей ссылке 

https://issues.Apache.org/jira/browse/HADOOP-8717

4
Damodar Hegde

Я получил ту же ошибку, когда я установил hadoop 2.7.1 с конфигурациями, которые вы упомянули. Я перешел по этой ссылке, чтобы понять, почему я получаю эту ошибку.

https://cloudcelebrity.wordpress.com/2014/01/31/yarn-job-problem-application-application_-failed-1-times-due-to-am-container-for-xx-exited-with- код выхода-127/

Тем не менее, поскольку я работаю на OS X El Capitan .. Мне нужно выйти без прав root (отключить защиту целостности системы), а затем продолжить с 

Sudo ln -s /usr/bin/Java /bin/Java

Не забудьте включить SIP после того, как вы закончите с вышеуказанным изменением, для вашей безопасности MAC . После этого изменения программа уменьшения карты будет работать, как вы ожидаете

2
mmsr

Ничто из вышеперечисленного не помогло мне. То, что я исправил для меня, было:

Установка hadoop-env.sh в /usr/local/Cellar/hadoop/etc/hadoop/hadoop-env.sh

Изменено это:

export Java_HOME=${Java_HOME}

К этому:

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

Вся благодарность этому пользователю: https://stackoverflow.com/a/39676720/992347

Ура

1
Gabriel Muñumel

Перейти к файлу ./libexec/hadoop-config.sh

и добавьте Java=$Java_HOME

"before # Попытка установить Java_HOME, если она не установлена ​​if [[ -z $Java_HOME ]]; then"

Это должно решить вашу проблему

1
Nikhil Chauhan

Эта строка неверна.

export    $Java_HOME=

должен начать

export Java_HOME=

Вы используете $ только при поиске переменной.

0
Peter Lawrey