我在Ubuntu 12.04上安装了CDH in Pseudo distributed mode。
在此之前,我安装了Java并将JAVA_HOME
变量导出到/usr/lib/jvm/java-6-oracle
,并将JAVA_HOME
导出到path
,对于root用户和其他用户都是如此(自我,hdfs)。并且echo
正确显示,并显示在env
结果中。
我的CDH安装仍然抱怨JAVA_HOME
未找到/已设置,因此我根据this向JAVA_HOME
添加了/etc/environment
,并在{{Defaults env_keep+=JAVA_HOME
中添加了/etc/sudoers
1}}
一切正常,我可以检查服务是通过Jps
运行,但当我试图阻止它们时,它会说,
service hadoop-hdfs-datanode stop
* Stopping Hadoop datanode:
Error: JAVA_HOME is not set and could not be found.
同样适用于所有其他服务。
我的安装中没有hadoop-env.sh
,唯一存在的是/usr/lib/hadoop-0.20-mapreduce/example-confs/conf.secure/hadoop-env.sh
这是我相信的一个例子
答案 0 :(得分:3)
Cloudera使用BIGTOP为您尝试检测JAVA_HOME。如果你问我,这种做法充其量是值得怀疑的。
您可以通过编辑bigtop配置文件使其正常运行。在Debian / Ubuntu上,将其添加到/etc/default/bigtop-utils
:
export JAVA_HOME=/correct/path/to/java-home
答案 1 :(得分:0)
您是否尝试在/ etc / profile中设置JAVA_HOME?您也可以查看此链接Hadoop: «ERROR : JAVA_HOME is not set»
答案 2 :(得分:0)
您应修改 etc/hadoop/hadoop-env.sh
并添加export JAVA_HOME=/usr/java/latest
这样您的JAVA_HOME
将永久设置
解压缩下载的Hadoop发行版。在分发中,编辑文件etc/hadoop/hadoop-env.sh
以定义一些参数,如下所示:
set to the root of your Java installation export JAVA_HOME=/usr/java/latest