我在OSX 10.7上启动Hadoop时遇到此错误:
无法从SCDynamicStore加载领域信息 put:org.apache.hadoop.hdfs.server.namenode.SafeModeException:无法创建目录/ user / travis / input / conf。名称节点处于安全模式。
它似乎没有引起Hadoop功能的任何问题。
答案 0 :(得分:76)
Matthew Buckett在HADOOP-7489中的建议对我有用。将以下内容添加到hadoop-env.sh文件中:
export HADOOP_OPTS="-Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk"
答案 1 :(得分:39)
作为对此的更新(以及针对Java 1.7的David Williams'点),我经历过只设置.realm
和.kdc
属性不足以阻止违规消息。
但是,通过检查忽略该消息的source file,我能够确定将.krb5.conf
属性设置为/dev/null
足以抑制该消息。显然,如果你实际上有krb5配置,最好指定它的实际路径。
总的来说,我的hadoop-env.sh
代码段如下:
HADOOP_OPTS="${HADOOP_OPTS} -Djava.security.krb5.realm= -Djava.security.krb5.kdc="
HADOOP_OPTS="${HADOOP_OPTS} -Djava.security.krb5.conf=/dev/null"
答案 2 :(得分:16)
我在OS X 10.8.2,Java版本1.7.0_21上遇到了同样的问题。不幸的是,上述解决方案无法解决此版本的问题:(
编辑:根据我看到here的提示,我找到了解决方法。在hadoop-env.sh
文件中,将JAVA_HOME
设置更改为:
export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
(请注意这里的严重引用。)
答案 3 :(得分:13)
仅供参考,您可以通过仅指定以下内容来进一步简化:
export HADOOP_OPTS="-Djava.security.krb5.realm= -Djava.security.krb5.kdc="
HADOOP-7489也提到了这一点。
答案 4 :(得分:5)
我在MacOS上遇到过类似的问题,在尝试不同的组合后,这对我来说是普遍适用的(Hadoop 1.2和2.2):
$HADOOP_HOME/conf/hadoop-env.sh
中的设置以下行:
# Set Hadoop-specific environment variables here.
export HADOOP_OPTS="-Djava.security.krb5.realm= -Djava.security.krb5.kdc="
# The java implementation to use.
export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
希望这会有所帮助
答案 5 :(得分:4)
并添加
YARN_OPTS="$YARN_OPTS -Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk"
在cdh4.1.3
上执行start-yarn.sh(或start-all.sh)之前答案 6 :(得分:2)
从Eclipse调试MapReduce时出现此错误,但它是一个红色的鲱鱼。真正的问题是我应该通过向JAVA_OPTS
添加调试参数来进行远程调试-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=1044
然后在调试配置中创建一个指向端口1044的新“远程Java应用程序”配置文件。
This article有一些关于调试方面的更深入的信息。它在谈论Solr,但与Hadoop的工作原理大致相同。如果您遇到问题,请在下方留言,我会尽力帮助您。