【问题标题】:Getting error while starting hadoop启动hadoop时出错
【发布时间】:2011-12-07 07:42:55
【问题描述】:
我有 Hadoop 0.20,我通过运行 $HADOOP/bin/start-all.sh 来启动它。
每个恶魔都在运行,但是在 datanode 时它会抛出错误
localhost:无法识别的选项:-jvm
localhost:错误:无法创建 Java 虚拟机。
localhost:错误:发生了致命异常。程序将退出。
但是我已经安装了java。
[root@ulhshr1ld1 bin]# java -version
java版本“1.7.0_01”
Java(TM) SE 运行时环境(内部版本 1.7.0_01-b08)
Java HotSpot(TM) 服务器虚拟机(build 21.1-b02,混合模式)
我还可以访问 http://localhost:50070/dfshealth.jsp 和 http://localhost:50030/jobtracker.jsp
谁能指导我这是什么问题?
【问题讨论】:
标签:
apache
networking
hadoop
client-server
【解决方案1】:
以 root 身份运行时,这是 Hadoop 中的一个错误。它已在较新的版本中得到修复。这是JIRA。使用最新版本的 Hadoop。
Root 提供对系统的完全访问权限。创建一个单独的用户并启动守护程序。为什么要以 root 身份启动守护进程?
另外,Apache recommends 使用 Oracle 的 Java 6。看起来您正在运行 Java 7。使用 Java 7 的 Hadoop 尚未经过彻底测试。
【解决方案2】:
当我们启动安全的时候,-jvm 选项应该被传递给 jsvc
datanode,但是当 start-dfs.sh 由 root 运行时,它仍然传递给 java
而安全数据节点被禁用。
这是 bin/hdfs.or bin/hadoop 的 bug。
应用以下补丁。
HDFS-1943 补丁。
diff --git bin/hdfs bin/hdfs 索引 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'
- 如果 [[ $EUID -eq 0 ]];然后
+ 如果 [ "$starting_secure_dn" = "true" ];然后
HADOOP_OPTS="$HADOOP_OPTS -jvm 服务器 $HADOOP_DATANODE_OPTS" 否则
HADOOP_OPTS="$HADOOP_OPTS -服务器 $HADOOP_DATANODE_OPTS"
将以上内容复制到名为 HDFS.patch 的文件中。在终端中应用补丁运行
patch -p0
/path/to/file/to/be/patched 将是 ../bin/hadoop 或 .../bin/hdfs