3

我正在尝试了解为什么 hadoop 除了运行 shell 脚本之外还需要 Windows 中的 cygwin。我知道在各种 hadoop 部分中有 POSIX 特定的实现,我只是想知道 hadoop 的哪些部分是 Linux 特定的?

谢谢

4

2 回答 2

2

一些 Hadoop 内部需要 Java 未提供的有关系统的详细信息或操作。

因为 IIRC 无法在 Java 6 中更改文件的所有者。

但是,Hadoop 需要这种类型的操作。在这些情况下,Hadoop 在单独的进程中执行 Unix 命令。实用程序类Shell包含很多这样的子进程调用。

该列表包括

  • 超限
  • 修改
  • 我是谁
  • ls
  • 和别的

出于类似的原因,类ProcessTree使用setsidkill

由于 Hadoop 使用应用程序,它们必须在父系统上可用。Cygwin 提供了这个。

[编辑:] 实际上,lib/native 中的本机代码是可选的。仅在存在匹配的库版本时才使用(出于性能原因)。

于 2012-10-02T19:28:33.543 回答
0

Hadoop 使用 shell 脚本来启动和停止主从进程等。它还需要 openssh(无密码)。安装 cygwin 是解决此问题的最简单方法。

于 2012-10-02T17:49:47.837 回答