Nutch中MapReduce的分析[zz]
生活随笔
收集整理的這篇文章主要介紹了
Nutch中MapReduce的分析[zz]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
Nutch是最早用MapReduce的項目 (Hadoop其實原來是Nutch的一部分),Nutch的plugin機制吸取了eclipse的plugin設計思路。在Nutch中 MapReduce編程方式占據了其核心的結構大部分。從插入url列表(Inject),生成抓取列表(Generate),抓取內容(Fetch), 分析處理內容(Parse),更新Crawl DB庫(Update ),轉化鏈接(Invert Links)一直到建立索引(Index)都是采用MapReduce來完成的。查看Nutch的源代碼我們能夠學到更多的 如何用MapReduce來處理我們編程中所遇到的問題。
Nutch從獲取下載列表到建立索引的過程:
插入url列表到Crawl DB,引導下面的抓取程序 循環: – 從Crawl DB生成一些url列表; – 抓取內容; – 分析處理抓取的內容; – 更新Crawl DB庫. 轉化每個頁面中外部對它的鏈接 建立索引具體技術實現細節:
1。插入url列表(Inject)
MapReduce程序1: 目標:轉換input輸入為CrawlDatum格式. 輸入: url文件 Map(line) → <url, CrawlDatum> Reduce()合并多重的Url. 輸出:臨時的CrawlDatum文件. MapReduce2: 目標:合并上一步產生的臨時文件到新的DB 輸入: 上次MapReduce輸出的CrawlDatum Map()過濾重復的url. Reduce: 合并兩個CrawlDatum到一個新的DB 輸出:CrawlDatum2。生成抓取列表(Generate)
MapReduce程序1: 目標:選擇抓取列表 輸入: Crawl DB 文件 Map() → 如果抓取當前時間大于現在時間 ,抓換成 <CrawlDatum, url>格式. 分發器(Partition) :用url的host保證同一個站點分發到同一個Reduce程序上. Reduce:取最頂部的N個鏈接. MapReduce程序2: 目標:準備抓取 Map() 抓換成 <url,CrawlDatum,>格式 分發器(Partition) :用url的host 輸出:<url,CrawlDatum>文件3。抓取內容(Fetch)
MapReduce: 目標:抓取內容 輸入: <url,CrawlDatum>, 按host劃分, 按hash排序 Map(url,CrawlDatum) → 輸出<url, FetcherOutput> 多線程, 調用Nutch的抓取協議插件,抓取輸出<CrawlDatum, Content> 輸出: <url,CrawlDatum>, <url,Content>兩個文件4。分析處理內容(Parse)
MapReduce: 目標:處理抓取的能容 輸入: 抓取的<url, Content> Map(url, Content) → <url, Parse> 調用Nutch的解析插件,輸出處理完的格式是<ParseText, ParseData> 輸出: <url,ParseText>, <url,ParseData><url,CrawlDatum>.5。更新Crawl DB庫(Update )
MapReduce: 目標: 整合 fetch和parse到DB中 輸入:<url,CrawlDatum> 現有的db加上fetch和parse的輸出,合并上面3個DB為一個新的DB 輸出: 新的抓取DB6。轉化鏈接(Invert Links)
MapReduce: 目標:統計外部頁面對本頁面鏈接 輸入: <url,ParseData>, 包含頁面往外的鏈接 Map(srcUrl, ParseData> → <destUrl, Inlinks> 搜集外部對本頁面的鏈接Inlinks格式:<srcUrl, anchorText> Reduce() 添加inlinks 輸出: <url, Inlinks>7。建立索引(Index)
MapReduce: 目標:生成Lucene索引 輸入: 多種文件格式 parse處理完的<url, ParseData> 提取title, metadata信息等 parse處理完的<url, ParseText> 提取text內容 轉換鏈接處理完的<url, Inlinks> 提取anchors 抓取內容處理完的<url, CrawlDatum> 提取抓取時間. Map() 用ObjectWritable包裹上面的內容 Reduce() 調用Nutch的索引插件,生成Lucene Document文檔 輸出: 輸出Lucene索引轉載于:https://www.cnblogs.com/shawnliu/archive/2008/06/16/1223377.html
總結
以上是生活随笔為你收集整理的Nutch中MapReduce的分析[zz]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中美俄洲际弹道导弹大PK
- 下一篇: C#拾遗系列(8):异常