Ubuntu 14上的Hadoop安装2.6.0 - Java错误

时间:2015-06-15 20:08:41

标签: java ubuntu hadoop hadoop2

修改

我正在尝试在我的Ubuntu 14机器上安装Hadoop 2.6.0。我虽然遇到了错误。

当我尝试为Java设置HOME变量时,它似乎没有按预期执行。

我在我的机器上以hduser设置专门用于运行和使用Hadoop。这个用户是一个sudoer。

一些信息:

java -version' gives the following

java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu0.14.04.2)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)

这是我的机器上安装的唯一版本,可以通过运行以下命令来查看:

update-alternatives --display java

其中给出了以下信息:

java - auto mode
link currently points to /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java - priority 1071
slave java.1.gz: /usr/lib/jvm/java-7-openjdk-amd64/jre/man/man1/java.1.gz
Current 'best' version is '/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java'.

然后我转到以下路径:

cd /usr/lib/jvm

我列出了内容ls

default-java  java-1.7.0-openjdk-amd64  java-7-openjdk-amd64

然后我输入cd java*pwd,这会显示以下路径:

/usr/lib/jvm/java-1.7.0-openjdk-amd64

好的,所以有了这些信息,然后我将该目录复制到.bashrc文件中,如下所示:

# The java implementation to use.
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64

我填写的hadoop-env.sh文件如下:

#Hadoop variables
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64

然后我在终端类型source ~/.bashrc然后重新启动终端,以便将其设置为新的Java路径。键入Hadoop -version时,我得到以下输出:

/usr/bin/hadoop: line 350: /usr/lib/jvm/java-6-sun/bin/java: No such file or directory
/usr/bin/hadoop: line 434: /usr/lib/jvm/java-6-sun/bin/java: No such file or directory

我不知道从哪里开始。

谢谢,

2 个答案:

答案 0 :(得分:2)

添加JAVA_HOME以指向openjdk中的hadoop-env.sh。在hadoop-env.sh

中添加此行
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
  

注意:更改 .bashrc 中的 JAVA_HOME 路径

更新I:

在终端中运行这些命令。 (这将在/ bin中设置java& javac以使用你的jdk)

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java 1

sudo update-alternatives --config java

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/javac" 1

sudo update-alternatives --config javac
  

注意:如果您在指定路径中没有 java javac ,则它将位于 / jre 文件夹。分别改变它。

答案 1 :(得分:0)

似乎你已经同时安装了java(我的意思是JRE / JDK)1.6,1.7和1.8。由于Java安装通常通过替代子系统进行管理,因此可以说是好的。

问题是(与您的期望相反)设置JAVA_HOME并未选择使用哪个java。这是通过提到的替代子系统来完成的。 JAVA_HOME变量本身只是一个附加配置,当有人要求启动java进程时,它无权覆盖正在执行的内容。

此外,运行cd java*并不是一个好主意,除非你想进入以给定字符串开头的第一个目录。尝试运行ls java*以了解我的观点。再次,由于替代子系统,可以在这里拥有多个不同版本的Java。

另一个问题是你混合了你可能没有安装过的不同版本的java(java-8-oracle vs java-6-sun vs java-1.6.0-openjdk

要检查安装了哪个java,请运行:

alternatives --display java

然后根据结果,swich到一个版本的java并相应地设置JAVA_HOME