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包。

相關文章
相關標籤/搜索