我尝试在集群独立模式下运行spark应用程序,当我访问一些远程计算机并使用“java -version”命令时,我得到信息(java版本..),但在其他计算机上我收到错误
-bash: command not found
所以我认为这些节点上可能没有安装java,所以我尝试了:
sudo apt -get install openjdk-8-jdk
但是我遇到了同样的错误,所以想知道如何解决这个问题,并且我有一些问题:
-我是否有必要在所有远程计算机上安装 java?或者如果我只将其安装在主节点上就足够了?
-如果我必须在每个节点上安装它,我该如何解决我之前解释过的问题? (无法使用安装命令...)
-在我的代码中,我使用了仅受jdk 8支持的表达式,但某些节点(其中我可以获得“java版本”)安装了jdk7,所以我必须重新安装jdk8吗?
最佳答案
“找不到命令”错误意味着您尝试调用的特定命令在 $PATH 系统变量中列出的两个目录中都找不到。
有两种方法可以解决此问题:
1) 运行可执行文件时指定完整路径:
/opt/jdk-12345/bin/java -version
2) 将完全相同的路径添加到 PATH 的开头(更改将仅应用于当前 session ):
export PATH=/opt/jdk-12345/bin:$PATH
java -version
要永久修复此问题,请将该行 (export PATH=/opt/jdk-12345/bin:$PATH
) 添加到 ~/.bashrc(如果 BASH 是该用户的默认 shell)或 ~/.profile
此外,由于这是 Unix Java,因此如果您正在运行某些服务器应用程序,请确保设置 LD_LIBRARY_PATH 和 CLASSPATH 变量。通常这是在应用程序启动脚本中完成的,不需要全局。
请验证您正在运行的服务器操作系统( uname -a
或 /bin/uname -a
),因为不同的 Unix 系统有不同的包管理器:apt-get 适用于 Ubuntu/Debian、rpm 适用于 RedHat、Entropy 适用于 Sabayon/Gentoo 等...
关于在远程机器linux上找不到java命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39167499/