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

Posted

技术标签:

【中文标题】OSX 上的 Hadoop“无法从 SCDynamicStore 加载领域信息”【英文标题】:Hadoop on OSX "Unable to load realm info from SCDynamicStore" 【发布时间】:2011-08-20 21:13:04 【问题描述】:

我在 OSX 10.7 上启动 Hadoop 时收到此错误:

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

它似乎不会导致 Hadoop 的功能出现任何问题。

【问题讨论】:

看起来这是一个未解决的问题:issues.apache.org/jira/browse/HADOOP-7489 【参考方案1】:

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"

【讨论】:

我没有 hadoop-env.sh,因为我只是针对 hadoop 进行编译,但我遇到了这个问题。我可以在我的 gradle 脚本上设置这个标志吗?【参考方案2】:

作为对此的更新(以及解决 David Williams' 关于 Java 1.7 的观点),我发现仅设置 .realm.kdc 属性不足以阻止违规消息。

但是,通过检查忽略消息的source file,我能够确定将.krb5.conf 属性设置为/dev/null 足以抑制消息。显然,如果您确实有 krb5 配置,最好指定它的实际路径。

总的来说,我的hadoop-env.shsn-p如下:

HADOOP_OPTS="$HADOOP_OPTS -Djava.security.krb5.realm= -Djava.security.krb5.kdc="
HADOOP_OPTS="$HADOOP_OPTS -Djava.security.krb5.conf=/dev/null"

【讨论】:

谢谢!这是唯一适用于 OS X 上的 Java 1.7 的答案! 非常适合我 它在 OS X 10.10.1 和 Java 1.7 上也适用于我(但仅在第二次重新启动时,这很令人费解)。谢谢。 此问题可能出现在 hbase (OS X Yosemite) 中。如下扩展 hbase-env.sh 中的 HBAE_OPTS 即可解决。 export HBASE_OPTS="$HBASE_OPTS -Djava.security.krb5.realm= -Djava.security.krb5.kdc=" export HBASE_OPTS="$HBASE_OPTS -Djava.security.krb5.conf=/dev/null"【参考方案3】:

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

(请注意此处的严重引号。)

【讨论】:

我遇到了同样的问题,这就是我的解决方法。 我遇到了 HBase 的这个问题,将此行添加到 conf/hbase-env.sh 为我解决了这个问题。 同样问题的一个更简单的例子也可以在这个问题中找到:***.com/questions/14716910/…【参考方案4】:

仅供参考,您可以通过仅指定以下内容来进一步简化:

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

HADOOP-7489 中也提到了这一点。

【讨论】:

答案曾经对我有用,但不再适用于 java 1.7 和 hadoop 1.2.1。有更新的解决方案吗?【参考方案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`

希望这会有所帮助

【讨论】:

这对我有用;可能值得一提的是,我正在使用 Hbase,因此必须始终将 HADOOP_OPTS 更改为 HBASE_OPTS。【参考方案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)之前

【讨论】:

【参考方案7】:

我在从 Eclipse 调试 MapReduce 时遇到了这个错误,但这是一个红鲱鱼。真正的问题是我应该通过在 JAVA_OPTS 中添加调试参数来进行远程调试

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

然后在指向端口 1044 的调试配置中创建一个新的“远程 Java 应用程序”配置文件。

This article 有一些关于调试方面的更深入的信息。它在谈论 Solr,但与 Hadoop 的工作方式大致相同。如果您遇到问题,请在下方留言,我会尽力提供帮助。

【讨论】:

以上是关于OSX 上的 Hadoop“无法从 SCDynamicStore 加载领域信息”的主要内容,如果未能解决你的问题,请参考以下文章

HBase Mac OSX 安装笔记

OSX 上的 32 位 DTrace

OSX 上的稀疏 BLAS

为啥 OSX 上的 std::mutex 这么慢?

OSX 上的 Libsndfile 损坏数据

OSX 上的 Swift 与 iOS 版本不同吗?