hadoop安装程序-java试图访问windowserver

7bsow1i6  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(265)

当我发射时 start-dfs.sh 在mac os x上的hadoop 2.2.0中,隐藏在错误消息中的是:

2014-02-24 14:48:23,448 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain
java.lang.InternalError: Can't connect to window server - not enough permissions.
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1833)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1730)
    ...

我以前处理过这个错误——它发生在java试图访问窗口服务器时(即使它是命令行程序)。出于安全原因,没有图形化登录是不允许的。当然,这意味着如果您运行的是无头服务器,则必须在守护进程运行之前进行物理登录。
现在,不必大声疾呼java和/或开发人员这么做有多么愚蠢(这似乎是一种趋势;我使用的另一个java服务器组件也做同样的事情),我找到了以下选项:

-Djava.awt.headless=true

这看起来是一个可行的解决方案。但我不仅不知道在哪里把这个选项传递给hadoop,而且我在其他软件上试过,结果还是出现了错误。
我很感激任何帮助。

31moq8wy

31moq8wy1#

我用以下方法修复了它:
export hadoop\u opts=“-djava.security.krb5.realm=ox.ac.uk-djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk-djava.awt.headless=true”
在我的bashrc里

ix0qys7i

ix0qys7i2#

所以我试了一下,结果发现有两件事。这个选项确实有效。。。对于hadoop。但这里有点奇怪:
hadoop不会附加到日志文件。。。如果一个存在,它就会离开它,并且默默地写不出任何日志。所以我在看旧的日志文件。
另一个软件仍然不工作,但他们说他们知道这个错误,他们正在修复它。

相关问题