標籤:des blog http java os io 檔案 for
一、環境準備
首先肯定是配置開發環境,這裡暫時不作詳細描述。
需要的環境有jdk1.7,MyEclipse,SVN,ant,以及MyEclipse下的兩個外掛程式subclipse 和IvyDe,http://subclipse.tigris.org/update_1.8.x和http://www.apache.org/dist/ant/ivyde/updatesite。
二、從svn檢出項目
接著再Next到下一步
Finish完成匯入。
三、 修改ivy目錄下的ivysetting.xml地址http://mirrors.ibiblio.org/maven2/(這個地址訪問是正常的,其餘的地址我嘗試訪問不了)
四、 修改ivy目錄下的ivy.xml(增加mysql訪問依賴java包)
修改gora-core版本為0.2.1,並解除注釋gora-sql和mysql-connector-java
五、 Cd 到目錄執行Ant eclipse(直接在Eclipse下ant build貌似有問題)
六、 回到Eclipse工程,重新整理項目,會發現目錄結構已經發生變化
七、 看到還有一個錯誤,是編碼的問題,工程右鍵Properties -> Resource ->utf-8
八、 工程右鍵Build Path->Config Build Path->Order and Export下選中Conf 檔案夾置頂
九、 修改Conf檔案夾下gora.properties配置mysql
#Default MySQL properties ################################gora.datastore.default=org.apache.gora.sql.store.SqlStoregora.datastore.autocreateschema=truegora.sqlstore.jdbc.driver=com.mysql.jdbc.Drivergora.sqlstore.jdbc.url=jdbc:mysql://localhost:3306/nutch?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNullgora.sqlstore.jdbc.user=rootgora.sqlstore.jdbc.password=123456
十、工程目錄下建立檔案夾urls,urls目錄下建立一個檔案url,裡面輸入要爬取的root_url,比如http://www.qq.com
十一、配置conf目錄下nutch-site.xml
<property> <name>http.agent.name</name> <value>YourNutchSpider</value> </property> <property> <name>http.accept.language</name> <value>ja-jp, en-us,en-gb,en,zh-cn,zh-tw;q=0.7,*;q=0.3</value> <description>Value of the “Accept-Language” request header field. This allows selecting non-English language as default one to retrieve. It is a useful setting for search engines build for certain national group.</description> </property> <property> <name>parser.character.encoding.default</name> <value>utf-8</value> <description>The character encoding to fall back to when no other information is available</description> </property> <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>
</pre><pre name="code" class="html"><!-- 為解決utf-8類中的null 指標問題 --><property><span></span><name>generate.batch.id</name><span></span><value>*</value></property> <property> <name>storage.data.store.class</name> <value>org.apache.gora.sql.store.SqlStore</value> <description>The Gora DataStore class for storing and retrieving data. Currently the following stores are available: ….</description> </property>
十二、 配置完上述步驟後配置命令運行Run Configuration選擇org.apache.nutch.crawl.Crawler,參數設定urls -depth 3 -topN 5和-Dhadoop.log.dir=logs -Dhadoop.log.file=hadoop.log
這時運行會遇到錯誤Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator606301699\.staging to 0700
十三、上述錯誤一般只是windows下才會遇到的,所以我們一般的做法是找到Hadoop-core-1.2.0源碼中的org.apache.hadoop.fs下的FileUtil.java修改其中的CheckReturnValue方法,注釋掉其中的內容
private static void checkReturnValue(boolean rv, File p, FsPermission permission ) throws IOException {// if (!rv) {// throw new IOException("Failed to set permissions of path: " + p + // " to " + // String.format("%04o", permission.toShort()));// } }
然後編譯成java包替換我們工程build/lib下的hadoop-core-1.2.0.jar。
另外一種方法是找到FileUtil.java編譯過後的class檔案,替換掉jar包中相應的class檔案FileUtil.clas和FileUtil$CygPathCommand.clas(用壓縮軟體開啟就行)
附上已修改編譯後的檔案http://files.cnblogs.com/e-life/hadoop-core-1.2.0.rar
十四、接下來再運行就沒有問題