nutch的inject 有二個job
第乙個job 如下圖
1 url是否有tab分割的k-v 對如果有記錄下來,
2 如果配置了過濾使用 urlnormalizers和 urlfilters 對url 進行格式化和過濾,
3 如果過濾的url 不為空則建立crawldatum物件,狀態 status_injected,設定fetcher 間隔時間從fetchdb.fetch.interval.default 配置中取,如果沒有預設2592000s 為30 天
4 設定fectchtime 為當前時間 datum.setfetchtime(curtime);
5 設定 score 根據db.score.injected 配置分數,預設為1
這個job 只有map 沒有reduce,所以使用預設的reduce
map 輸入 : 存放url的目錄 如果 bin/nutch crawl urls -dir crawl -topn 1 -depth 1 這個命令 輸入是urls,預設的使用textinputformat輸入的 key:偏移量 value:一行的文字 ,map的輸出為 key :text 為url, value:crawldatum
沒有設定reduce 使用預設的reducer
reduce輸出 :mapred.temp.dir 配置的屬性值目錄下面的(inject-temp-當前時間)下面 輸出為 key :text 為url, value:list
第二個job如下圖
map :crawldbfilter 功能如下
輸入目錄為引數crawldb/current 和上次job的輸出目錄
key:text value:crawldatum
如果設定了urlnormalizers=true 對url進行normalize
如果設定了urlfiltering=true 對url進行過濾
如果url不為空 寫入
key : text 為url value: crawldatum
reduce :injectreducer
對乙個key 的value,設定狀態,如果value中的crawldatum 如果狀態是crawldatum.status_injected 則設定狀態為crawldatum.status_db_unfetched
裡面的多值去重複,否則不設定狀態,使用當前的狀態,如果存在多值,如果有狀態不是crawldatum.status_injected,使用這個狀態,否則使用 crawldatum.status_db_unfetched,寫入
輸出目錄為 crawldb 下面的先建乙個隨機數命名的目錄
path newcrawldb =
new path(crawldb,
integer.tostring(new random().nextint(integer.max_value)));
crawldb.install 替換 current目錄
邏輯如下
1 如果crawldb 下面有old目錄刪除old目錄
2 把crawldb 下面的current目錄變成old目錄
3 把job是輸出目錄變成current目錄刪除old目錄
nutch原始碼閱讀 1 Crawl
org.apache.nutch.crawl.crawl實現的是乙個完成的抓取過程,所以由它開始。perform complete crawling and indexing to solr given a set of root urls and the solr parameter respec...
nutch原始碼閱讀 7 Generator
繼續向下看,第二個job read the subdirectories generated in the temp output and turn them into segments listgeneratedsegments new arraylist 讀取上個job生成的多個fetchlis...
tomcat原始碼閱讀5
org.apache.catalina.cluster.authenticator包 clustersinglesignon 每個valve支援使用者單點登入在集群節點上,使用者在web應用程式上經過驗證的安全標誌可以在同乙個安全域的其它集群節點上使用 clustersinglesignonlist...