看nutch學習hadoop的程式設計

2021-06-07 12:24:00 字數 1772 閱讀 3243

剛下了最新版本的nutch1.0.*,發現nutch的搜尋已經轉由solr來實現了。nutch上有很多hadoop的應用,可以作為案例學習,看人家如何使用hadoop來實現,這對於剛接觸hadoop程式設計的人來說,這是乙個比較好的選擇,怎麼說nutch也算是hadoop的起源地。。。新版本的nutch使用的hadoop也是比較新的版本。。

看一下nutch的index模組,使用的hadoop的mapreduce方式來實現建索引:

map: 從序列化的檔案解析出key與value值。

public

void map(text

key,writable

value,

outputcollector

output, reporter

reporter) throws ioexception

reduce:key為文件主鍵,value為文件+對應操作

public

void reduce(text

key,iterator

values,

outputcollector

output, reporter

reporter)

throws ioexception

map只是簡單的將輸入檔案簡單的收集起來,而reduce也只是封裝了文件資料,這樣大量的輸入源可以併發處理封裝資料源。真正提交索引的是在fileoutputformat上操作,reduce中的key值是文件主鍵,value封裝了是文件與之對應的操作

public

class

indexeroutputformat

extends

fileoutputformat<

text

,nutchindexaction

>

return

new recordwriter()

}//處理每個記錄

public

void write(text

key,nutchindexaction

indexaction) throws ioexception

if (indexaction.action ==nutchindexaction.delete) }}

};}}處理每乙個reduce後的記錄:recordwriter,呼叫  public

void write(text

key, nutchindexaction

indexaction) 。nutch只是簡單地使用solr的提交索引方式 ,實現的solrwriter

首先初始化:

public

void open(jobconf

job,string

name)throws ioexception

處理每條記錄,首先是刪除操作:

public

void delete(string

key)throws ioexception

catch

(final

solrserverexceptione)

}}增加操作:將增加的文件放到緩衝區上,達到一定數量時才進行提交 或者結束前呼叫

inputdocs.add(

inputdoc);

if(inputdocs.size() +numdeletes>=commitsize)

catch

(final

solrserverexceptione)

inputdocs.clear(); }

基於Nutch和Hadoop的簡易搜尋引擎

最近和寢室的同學一起搭建了hadoop的集群,實現了乙個簡易的本地搜尋引擎,並且將其開源到了github上 接下來的幾篇博文將對這個專案及其 作一些詳細的描述。搜尋 簡而言之就是要分析使用者輸入然後輸出給使用者已經排好序的url集合。乙個簡單的實現所需要的排序依據主要就是文字檢索以及url的page...

Nutch學習心得

用nutch成功搭建了站內搜尋的環境。遇到很多問題是很多很多的,但是辦法總比困難多 這裡雜亂的說說。比如nutch給出的demo中,很多配置檔案都是直接寫在conf,也就是編譯的根目錄底下。當我用svn提交自己專案以後,別人check out下來,根本就用不了。還有自己看了看nutch0.9高亮處理...

學習Nutch不錯的系列文章

這個部落格裡有很多不錯的系列文章 1 nutch1.2二次開發詳細攻略 1 windows平台下cygwin環境的搭建 2 windows平台下nutch1.2的搭建 3 nutch1.2二次開發 關於介面修改 4 nutch1.2二次開發 關於中文分詞 2 nutch 1.3 學習筆記 1 nut...