我尝试在群集独立模式下运行spark应用程序,当我访问某些远程计算机并使用“java -version”命令时我获取信息(java版本..),但在其他人上我收到错误
-bash:找不到命令
所以我想也许java没有安装在那些节点上所以我尝试了:
sudo apt -get install openjdk-8-jdk
但我得到同样的错误,所以想知道我该如何解决这个问题,我有一些问题:
- 我是否有必要在所有远程机器上安装java?或者如果我只在主节点上安装它就足够了?
- 如果我必须在每个节点上安装它,我该如何解决之前解释过的问题? (不能使用安装命令...)
- 在我的代码中,我使用的表达式只支持jdk 8,但有些节点(我可以获得“java版本”)它安装了jdk7,所以我必须重新安装jdk8吗?
答案 0 :(得分:3)
“command not found”错误表示在$ PATH系统变量中列出的目录中都找不到您尝试调用的特定命令。
有两种解决方法:
1)运行可执行文件时指定完整路径:
/opt/jdk-12345/bin/java -version
2)将相同的路径添加到PATH的开头(更改将仅应用于当前会话):
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等......