我正在尝试了解为什么 hadoop 除了运行 shell 脚本之外还需要 Windows 中的 cygwin。我知道在各种 hadoop 部分中有 POSIX 特定的实现,我只是想知道 hadoop 的哪些部分是 Linux 特定的?
谢谢
一些 Hadoop 内部需要 Java 未提供的有关系统的详细信息或操作。
因为 IIRC 无法在 Java 6 中更改文件的所有者。
但是,Hadoop 需要这种类型的操作。在这些情况下,Hadoop 在单独的进程中执行 Unix 命令。实用程序类Shell包含很多这样的子进程调用。
该列表包括
出于类似的原因,类ProcessTree使用setsid和kill。
由于 Hadoop 使用应用程序,它们必须在父系统上可用。Cygwin 提供了这个。
[编辑:] 实际上,lib/native 中的本机代码是可选的。仅在存在匹配的库版本时才使用(出于性能原因)。
Hadoop 使用 shell 脚本来启动和停止主从进程等。它还需要 openssh(无密码)。安装 cygwin 是解决此问题的最简单方法。