Nutch1.7和eclipse集成

Nutch1.7eclipse集成

1、将nutch项目部署到eclipse

首先到nutch官网上找到FAQ连接http://wiki.apache.org/nutch/FAQ,进入连接html

点击第二个连接查看。java

                                              

参照文档进行配置,有卡壳不明白的地方,继续在网上针对具体问题查找资料。集成时可参照http://blog.csdn.net/witsmakemen/article/details/8866235apache

运行以前必须有一下先决条件:

A、在windows上安装配置Apache Anthttp://ant.apache.org/manual/index.htmlwindows

B、安装Eclipse,这个不用说确定是必须的。eclipse

C、在Linux安装svn。目的:迁出nutch1.7源代码。svn

D、在Linux下检出nutch1.7代码oop

[root@nutch-five branch-1.7]# svn co http://svn.apache.org/repos/asf/nutch/branches/branch-1.7/测试

E、在Linux安装ivy插件。目的,根据ivy配置文件动态下载jar包。fetch

F、编译branch1.7ui

[root@nutch-five branch-1.7]# ant

2、在Linux下执行ant命令编译源代码:ant

3、编译成功后,将trunk文件夹复制到windows中,导入eclipse

Aeclipse : File -- New -- Java Project

B、点击NEXT

  1. 找到 conf 文件夹 ,而后点击 Add Folder 'conf' to build path

defautl output 设置为 apache-nutch-1.7/conf

在这儿我由于不能建立conf,因此写为conf1

点击Finish

至此,创建成功。

 

 

 

C、此时会发现工程有错误(红色的小叉叉),这是由于缺乏引用致使的。

parse-html为例:

import org.cyberneko.html.parsers.*;

这里报错是由于缺乏 nekohtml-0.9.5.jar

如何获取nekohtml-0.9.5.jar

找到runtime/local/plugins/lib-nekohtml/nekohtml-jar,单击右键add to build path,其余bug以此类推。

在这儿一共要加runtime/local/plugins/lib-nekohtml/nekohtml-jarruntime/local/plugins/parse-html/tagsoup.jarruntime/local/plugins/feed/rome.jar(解决了com.sun.syndication.io.SyndFeedInput报错问题)、runtime/local/plugins/urlfilter-automaton/automaton.jar(解决dk.brics.automaton.RunAutomaton报错问题)

至此整个工程将应该不会有错了。

4、新建文件夹urls

在文件夹内新建文件url,存放待抓取网址

如:http://www.163.com/

5、运行程序

6、报异常:

ERROR security.UserGroupInformation (UserGroupInformation.java:doAs(1193)) - PriviledgedActionException as:hadoop cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-hadoop\mapred\staging\hadoop1071373990\.staging to 0700

解决方案:

下载hadoop的源代码,从新编译hadoophadoop-core.jar包,替换掉nutch项目中的hadoopjar包。(注意:下载时先肯定nutch引用的hadoop的哪一个版本的jar包,而后下载对应版本。在runtime/local/lib中能够找对hadoopjar包。)

下载hadoop源代码:

下载连接:http://apache.dataguru.cn/hadoop/common/hadoop-1.2.1/

 

1、注释掉build.xml中的

<target name="create-native-configure">

<exec executable="autoreconf" dir="${native.src.dir}" searchpath="yes" failonerror="yes">  <arg value="-if"/>

</exec>

  </target>

2、去掉compile-core-native中的create-native-configure依赖

  <target name="compile-core-native" depends="create-native-configurecompile-core-classes"

 if="compile.native">

3、修改hadoop-1.1.2/src/core/org/apache/hadoop/fs/FileUtil.java 691行,把throw new IOException改成LOG.warn

4、用ant编译项目,编译成功后从build文件夹中取出hadoop-core.jar文件夹,放入nutch项目中,替换项目中原有hadoop-core.jar,放入build/lib文件夹下。再经过buildpath添加jar包。

添加完毕后,运行测试

7、继续运行,继续报错

java.lang.RuntimeException: Error in configuring object

解决方案:

将nutch-default.xml中的

<property>

  <name>plugin.folders</name>

  <value>./src/plugin</value>

<description>Directories where nutch plugins are located.  Each

element may be a relative or absolute path.  If absolute, it is used

as is.  If relative, it is searched for on the classpath.</description>

</property>

红色处改一下就能够了。

参照上边的运行方法,继续运行测试,产生异常:

java.net.SocketException: Software caused connection abort: recv failed

解决方案:

连接不成功,能够忽略,对程序没有影响。

至此,nutcheclipse中集成成功。

运行过程当中相关配置参数:

爬取网页 crawl

导出网页抓取状态信息 -stats

导出crawldb文件夹信息

导出linkdb文件夹信息

导出segment文件夹信息

导出segment-content文件夹信息

导出segment-fetch文件夹信息

导出segment-parse文件夹信息

导出segment-parsedata文件夹信息

导出segment-parsetext文件夹信息

相关异常:

ERROR security.UserGroupInformation (UserGroupInformation.java:doAs(1193)) - PriviledgedActionException as:hadoop cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-hadoop\mapred\staging\hadoop1071373990\.staging to 0700

解决方案:

从新编译hadoophadoop-core.jar包,替换掉nutch项目中的hadoopjar

1、注释掉build.xml中的

<target name="create-native-configure">

<exec executable="autoreconf" dir="${native.src.dir}" searchpath="yes" failonerror="yes">  <arg value="-if"/>

</exec>

  </target>

2、去掉compile-core-native中的create-native-configure依赖

  <target name="compile-core-native" depends="create-native-configurecompile-core-classes"

 if="compile.native">

3、修改hadoop-1.1.2/src/core/org/apache/hadoop/fs/FileUtil.java 691行,把throw new IOException改成LOG.warn

4、用ant编译项目,编译成功后从build文件夹中取出hadoop-core.jar文件夹,放入nutch项目中,替换项目中原有hadoop-core.jar,放入build/lib文件夹下。再经过buildpath添加jar包。

添加完毕后,运行测试

源码环境搭建时发现sun.net.util.ipaddressutil的包没有

sun.net包里的类,在eclipse里默认是不让用的。解决办法是自定义access rules工程上右键->工程属性->java builder path->Libraries标签,点击JRE System Library里面的Access rulesadd sun/** accessible,若是该项存在,就edit

具体操做方法:

问题解决后,发现继续有错,缺乏antjar包,添加antjar包。

相关文章
相关标签/搜索