有两年没整过nutch了,赶上公司需要,又重新理了下思路。我以前写过一篇关于“myeclipse导入nutch1.2源码”的博文,网址 为http://hi.baidu.com/erliang20088/item/a1099948c0d92f146dc2f00b,再将“cygwin安装后的bin目录放到window系统的PATH变量中。 导入的过程那篇合适,这次导入nutch1.6也是参考这篇博文。
一、配置文件修改:
(1)nutch-site.xml修改: //只添加下边一个就可以了,算是nutch的规定
<property>
<name>http.agent.name</name>
<value>zel</value>
<description></description>
</property>
(2)nutch-default.xml修改: //只需要修改plugin.folders,在这个文件中search一下就可以找到了。
<property>
<name>plugin.folders</name>
<!-- <value>plugins</value> --> //这个是原始配置,是用在发布包时的,源码中运行和二次开发,首先要改成./src/plugin,当发布时则要再改成plugins就可以了。
<value>./src/plugin</value>
</property>
二、正常情况下,配置完成后就可以完成单机情况下的nutch的单机运行了,但是nutch1.2之后的版本在cygwin上运行时,总会报个错误
java.io.IOException: Failed to set permissions of path: \tmp\hadoop-zel\mapred\staging\zel1558626937\.staging to 0700
细看debug message的话,就会找到相关的那个类,
at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689)
这个没有官方的解释,我暂时认为算是bug吧,或是跟cgywin结合的bug,
解决方法很变态:
加载一下hadoop的源码,找到源码包hadoop-core-1.0.3.jar所在的包处,这是nutch1.6对应的hadoop-core的jar包,将这个方法的所有代码行全部注释,重新对hadoop-core-1.0.3.jar打包,然后替换掉nutch1.6原始的包就可以了。
希望对后来人有帮助。