在启动hadoop时出错

我有Hadoop 0.20,我开始运行$ HADOOP / bin / start-all.sh。 每个恶魔运行,但datanode它抛出错误

localhost:无法识别的选项:-jvm
localhost:错误:无法创buildJava虚拟机。
localhost:错误:发生致命exception。 程序将会退出。

但是我已经安装了java。

[root @ ulhshr1ld1 bin]#java -version
Java版本“1.7.0_01”Java™SE运行时环境(build 1.7.0_01-b08)
Java HotSpot(TM)服务器虚拟机(构build21.1-b02,混合模式)

我也可以访问http:// localhost:50070 / dfshealth.jsphttp:// localhost:50030 / jobtracker.jsp

任何人都可以请指导我最新的是什么问题?

以root身份运行时,这是Hadoop中的一个错误。 它已在新版本中得到修复。 这是JIRA 。 使用最新版本的Hadoop。

Root可以完全访问系统。 创建一个单独的用户并启动守护进程。 为什么以root身份启动守护进程?

另外,Apache 建议使用Oracle的Java 6。 看起来您正在运行Java 7. Java 7的Hadoop尚未经过彻底测试。

当我们启动一个安全的数据节点的时候,-jvm选项应该被传递给jsvc,但是当安全数据节点被禁用的时候,当它运行start-dfs.sh的时候它仍然会传递给java。

这是一个bin / hdfs.或bin / hadoop的错误。

应用以下补丁。

HDFS-1943补丁。

diff –git bin / hdfs bin / hdfs index 76ff689..ce9dc0a 100755 — bin / hdfs +++ bin / hdfs @@ -71,7 +71,7 @@ elif [“$ COMMAND”=“secondarynamenode” ]; 那么> HADOOP_OPTS =“$ HADOOP_OPTS $ HADOOP_SECONDARYNAMENODE_OPTS”elif [“$ COMMAND”=“datanode”]; 然后
CLASS ='org.apache.hadoop.hdfs.server.datanode.DataNode' – if [[$ EUID -eq 0]]; 那么+ if [“$ start_secure_dn”=“true”]; 那么HADOOP_OPTS =“$ HADOOP_OPTS -jvm服务器$ HADOOP_DATANODE_OPTS”否则HADOOP_OPTS =“$ HADOOP_OPTS -server $ HADOOP_DATANODE_OPTS”

将上面的文件复制到一个名为HDFS.patch的文件中

patch -p0 </ path / to / patch / file / path / to / file / to / be / patched

/ path / to / file / to / be / patched将是../bin/hadoop或… / bin / hdfs