OSX上的Hadoop“无法从SCDynamicStore加载领域信息”

我在OSX 10.7上启动Hadoop时出现这个错误:

无法从SCDynamicStore中加载领域信息:org.apache.hadoop.hdfs.server.namenode.SafeModeException:无法创build目录/ user / travis / input / conf。 名称节点处于安全模式。

它似乎没有造成Hadoopfunction的任何问题。

马修Buckett在HADOOP-7489的build议为我工作。 将以下内容添加到您的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" 

作为更新(以及解决David Williams关于Java 1.7的观点),我体验到只有设置.realm.kdc属性才能阻止违规消息。

但是,通过检查忽略该消息的源文件 ,我可以确定将.krb5.conf属性设置为/dev/null足以抑制消息。 显然,如果你真的有一个krb5configuration,最好指定它的实际path。

总的来说,我的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" 

我在OS X 10.8.2,Java版本1.7.0_21上遇到同样的问题。 不幸的是,上面的解决scheme没有解决这个版本的问题:(

编辑:我find了这个解决scheme,根据我在这里看到的提示。 在hadoop-env.sh文件中,将JAVA_HOME设置更改为:

 export JAVA_HOME=`/usr/libexec/java_home -v 1.6` 

(请注意这里的严重报价。)

仅供参考,您只需指定以下内容即可进一步简化此操作:

 export HADOOP_OPTS="-Djava.security.krb5.realm= -Djava.security.krb5.kdc=" 

这在HADOOP-7489中也有提到。

我在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` 

希望这会有所帮助

并添加

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)

从EclipsedebuggingMapReduce时出现这个错误,但是它是一个红色的鲱鱼。 真正的问题是我应该通过向JAVA_OPTS添加debugging参数进行远程debugging

 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=1044 

然后在指向端口1044的debuggingconfiguration中创build一个新的“远程Java应用程序”configuration文件。

这篇文章有更深入的东西的debugging方面的信息。 这是在谈论Solr,但与Hadoop的工作方式大致相同。 如果遇到问题,请在下面留言,我会尽力帮忙。