java - Hadoop 设置 - Java 尝试访问窗口服务器

标签 java macos hadoop

当我在 Mac OS X 上的 Hadoop 2.2.0 中启动 start-dfs.sh 时,隐藏在错误消息中的是:

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 试图访问窗口服务器时(即使它是一个命令行程序)。出于安全原因,如果没有图形登录,这是不允许的。这当然意味着如果您运行的是 headless 服务器,则必须在守护进程运行之前进行物理登录。

现在,不用大声疾呼 Java 和/或开发人员是如何这样做的(这似乎是一种趋势;我使用的唯一其他 Java 服务器组件做同样的事情),我找到了这个选项:

-Djava.awt.headless=true

这看起来像是一个可能的解决方案。但是我不仅不知道在哪里将选项传递给Hadoop,而且我在其他软件上试过了,它仍然报错。

如果有任何帮助,我将不胜感激。

最佳答案

所以我尝试了一下,结果发现有两件事正在发生。该选项实际上对 Hadoop 有效……。但这就是它变得奇怪的地方:

  1. Hadoop 不会附加到日志文件...如果存在,它会离开它并静默地不写入任何日志。所以我在查看旧的日志文件。
  2. 其他软件仍然无法运行,但他们表示他们已发现该错误并正在修复它。

关于java - Hadoop 设置 - Java 尝试访问窗口服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21997831/

相关文章:

hadoop - 统计 GROUP BY 中 PIG 查询和 MySql 查询结果的差异

java - 图像像素操作 : Use native APIs or 3rd party libraries?

java - 如何外部化 Maven 构建文件片段?

java - 数据包被 netty 损坏

macos - 在 Mac 上以伪分布式模式设置 Hadoop

python - 在 Mac OS X 上安装 MySQL Python

java - 是否需要为所有 native 方法提供实现?

swift - 即使在删除后,核心数据命令也会使 ViewController 崩溃

hadoop - 使用 HQL 在前面追加零

hadoop - hadoop如何读取所有数据然后拆分成 block ?