Hadoop:JPS找不到安装的Java

day*_*mer 2 java ubuntu hadoop mapreduce

我的配置是

hduser@worker1:/usr/local/hadoop/conf$ jps
The program 'jps' can be found in the following packages:
 * openjdk-6-jdk
 * openjdk-7-jdk
Ask your administrator to install one of them
Run Code Online (Sandbox Code Playgroud)

我虽然安装了java

hduser@worker1:/usr/local/hadoop/conf$ java -version
java version "1.6.0_23"
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre10-0ubuntu5)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)

hduser@worker1:/usr/local/hadoop/conf$ echo $JAVA_HOME 
/usr/lib/jvm/java-1.6.0-openjdk
Run Code Online (Sandbox Code Playgroud)

并且也成立了 conf/hadoop-env.sh

hduser@worker1:/usr/local/hadoop/conf$ cat hadoop-env.sh | grep JAVA_HOME
# The only required environment variable is JAVA_HOME.  All others are
# set JAVA_HOME in this file, so that it is correctly defined on
 export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
Run Code Online (Sandbox Code Playgroud)

如何让JPS工作?

Pap*_*paK 9

Saurabh Saxena的答案不再正确.要获得jps,您还需要安装开发工具java-1.6.0-openjdk-devel.在CentOS 6上,文件是:java-1.6.0-openjdk-devel.x86_64

所以:

yum install java-1.6.0-openjdk*
Run Code Online (Sandbox Code Playgroud)

将完成这个技巧(除了jdk和dev工具之外,还会选择demo和javadoc,但是你将获得完整的命令行工具).

对于Ubuntu:

apt-get install java-1.6.0-openjdk-devel 
Run Code Online (Sandbox Code Playgroud)

对于所有这些示例,您可以尝试JDK7(仅替换1.7),截至2012年12月,Hadoop在没有Oracle库的情况下非常稳定.请参阅:http://openjdk.java.net/install/

  • 这同样适用于java-1.7.0-openjdk-devel (2认同)

小智 6

这也可能是一个原因.它很简单:看看$ javac是否有效.注意:$ java可能有用,请检查javac.如果$ javac不起作用,则$ jps也不起作用.所以你可能想要做类似的事情

export PATH = $ PATH:$ JAVA_HOME/bin

然后再试一次.javac和jps.祝好运.


小智 5

我找到了缺少 JPS 命令的解决方案。我正在以伪分布式模式在 ubuntu 机器上安装 Hadoop 1.x。我使用 Java-7-openJDK 来提供 Java 命令和工具。出于某种原因 ,版本 6有一个java-1.6.0-openjdk-devel,但版本 7 没有,特别是 debian 和 ubuntu 发行版。我不确定 Fedora 和 Redhat 是否也是如此。所以当时最好的答案是使用 linux 命令

ps -aux | 爪哇

我讨厌这样做,因为 Hadoop 守护进程开始时有很多选项,以至于每个结果都填满了一个屏幕。除了看到 java 正在运行之外,不可能看到正在运行的 hadoop 守护进程。因此,我以一行 shell 脚本的形式提出了一个简短的解决方案

这是我打开 JDK 的 JPS 脚本

!#/bin/bash

ps -aux | grep java | awk '{print $12}'

结尾

我将这两行保存在一个名为 jps 的文件中,并使用执行权限将其存储在 hadoop/bin 目录中

**这里是脚本 hduser@localhsot# ./jps 的结果

-Dproc-namenode

-Dproc-datanode

-Dproc-JobTracker

-Dproc-TaskTracker**