/bin/java: No such file or directory

1973 ワード

This answer is applicable for Hadoop version 2.6.0 and earlier. Disabling SIP and creating a symbolic link does provide a workaround. A better solution is to fix the hadoop-config.sh so it picks up your JAVA_HOME correctly
In  HADOOP_HOME/libexec/hadoop-config.sh  look for the if condition below  # Attempt to set JAVA_HOME if it is not set
Remove extra parentheses in the export JAVA_HOME lines as below. Change this
if [ -x /usr/libexec/java_home ]; then
    export JAVA_HOME=($(/usr/libexec/java_home))
else
    export JAVA_HOME=(/Library/Java/Home)
fi

to
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

Restart yarn after you have made this change.
More detailed info can be found here https://issues.apache.org/jira/browse/HADOOP-8717 and seems that Hadoop 3.0.0-alpha1 is the first release with the fix.
 
方法2
以上の方法を試しても問題は解決できませんでしたが、リンク4のコメントの下でもう一つの文章を見て、本当にこの問題を解決できると言いました.以前この問題に遭遇したことがあるので、パソコンを再起動して何か命令を入力した後に解決したことをぼんやり覚えています.それからリンクをクリックして文章の中にやはり私のコメントがあるのを見て、ここでこの文だけでこの穴を記録しました.後で解決策を講じる
以下は解決策です.ここを参照してください.  1、パソコンを再起動し、回復モードに入り、端末を開く  2,次のコマンドを入力してSIPプロパティを無効にします.SIPプロパティとは、sudo権限を持っていてもシステムレベルのディレクトリを変更できない権限のことで、デフォルトでは有効になっています
csrutil disable 1 3、コンピュータを再起動して、正常なモードに入って、端末を開きます  Javaソフト接続を確立するコマンドを入力します
sudo ln-s/usr/bin/java/bin/java 1システムパスワードを入力すればOKです.これで、このエラーは正常に解決されました.
後続:disableがcsrutilによってシステム自体にどのような影響を及ぼすか心配したため、再度開くつもりで、テストの流れは以下の通りです.  まずコンピュータを再起動して、jobを実行して、第1回は失敗して、どんなsafe modeをヒントにして、第2回は成功します  コンピュータを再起動し、リカバリモードに入り、csrutilを有効にします.
csrutil enable 1 successfully enabled system integrity protection,please restart the machine for the change to take effect  1再びコンピュータを再起動して、再びjobを実行して、第1回は失敗して、どんなsafe modeをヒントにして、第2回は成功します  これでhadoop環境は正常になった.