多数资料介绍的Nutch在Windows下的安装和使用都是使用cygwin,如搜索排名很靠前的这篇Nutch在Windows中安装之细解,实际上有些文不对题,主要讲了cygwin的安装。这篇Nutch
0.8笔记--Google式的搜索引擎实也是,我想nutch是基于纯java的,应该和操作系统平台无关,windows下安装cygwin实际上是构建了一个linux运行环境层,不是一个好的解决办法。后来又搜索到了下面的方法--免cygwin运行nutch。
下载了Nutch 1.0 在windows 2003下安装测试,出现java异常,仔细分析,都是些IO异常,主要是调用Unix命令错误,如“bash”、“chmod”错误,判断这些错误原因是没有安装cygwin。
经过查找资料,原来Nutch使用了Apache的另外一个开源项目Hadoop做底层分布式计算处理,而Hadoop主要是在linux上研制和部署的,没有考虑在windows上部署的问题,而且Hadoop和操作系统及文件系统关系密切,java源码里有很多调用linux的shell命令的地方,经过查看源码,其中就包括“bash”、“chmod”、“df”等shell命令。
下面的链接是高手解决Hadoop调用DF命令的问题,使Hadoop可以在Windows上部署的方法:
但看来应该只适用于低版本的Hadoop,高版本的Hadoop涉及到的shell命令更多,要想在windows部署,需要修改的源码太多,而且要想修改Hadoop的源码,开发环境也需要安装cygwin,据说是ANT要用到sed命令,否则无法完成构建。就源码看,Nutch本身并不涉及linux环境问题。但好像还没有Nutch脱离Hadoop运行的办法,而且Hadoop是Nutch的核心模块,如果脱离了Hadoop,Nutch可能也不称其为Nutch了。
我试着修改了一下源码,主要涉及的代码在JobClient.java、UnixUserGroupInformation.java、Shell.java中,最终还是放弃了。
这个问题看来目前是无解了。