nutch的inject 有二个job
第一个job 如下图
map :InjectMapper 功能如下
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<CrawlDatum>
第二个job如下图
这个job 叫mergerjob主要是合并第一个job的输出和crawldb/current 下面的值进行合并,输出目录为crawldb/current 。
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目录
- 大小: 58.6 KB
- 大小: 73.1 KB
分享到:
相关推荐
【Nutch安装详解】 Nutch是一款开源的网络爬虫软件,用于抓取互联网上的网页并构建搜索引擎。本文将详细介绍如何安装Nutch version 0.8。 **1. 安装前提** 在开始Nutch的安装前,需要确保满足以下硬件和软件条件...
**Nutch搜索引擎配置详解** Nutch是一款开源的网络爬虫软件,主要用于收集、索引和搜索互联网上的数据。它在大数据领域中占有重要地位,尤其对于构建自定义搜索引擎的项目非常实用。Nutch的设计理念是模块化,允许...
【Nutch在Windows中安装详解】 Nutch是一个由Apache基金会维护的开源搜索引擎项目,它允许用户构建内部网络或全局互联网的搜索引擎。在Windows系统中安装Nutch并不像在Linux那样直接,因为Nutch的一些脚本依赖于...
1. **初始化crawlDb与注入初始URL**:使用`bin/nutch inject db/crawldb urls/`命令初始化数据库并注入初始URL列表。 2. **生成新的抓取URLs**:执行`bin/nutch generate crawldb segments_dir [-force] [-topNN] [-...
### Nutch工作流程详解 #### 一、Nutch概述及工作流程概览 Nutch是一款开源的网络爬虫项目,其主要功能在于抓取互联网上的网页,并对其进行分析、索引,以便用户能够快速检索到所需的信息。Nutch的灵活性和可扩展...
【Nutch入门学习资料详解】 Nutch是一款开源的网络爬虫软件,主要用于抓取和索引互联网上的网页,是大数据领域中的重要工具之一。本文将深入解析Nutch的基础知识,帮助初学者快速入门。 1. **Nutch简介** Nutch是...
### Windows下Nutch的安装配置与Tomcat集成详解 #### Nutch概述 Nutch是一款开源的搜索引擎框架,基于Java开发,旨在提供一个完整的搜索引擎解决方案。它由两大部分组成:抓取部分(Crawler),负责抓取网页数据并...
- 使用`inject`, `generate`, `fetch`, 和`updatedb`等底层命令可实现更为精细的全网抓取控制。 #### 四、全网抓取概览 全网抓取允许用户以高度定制的方式抓取整个互联网,涉及概念、数据库初始化、数据抓取、索引...
### 知识点详解:Nutch教程——网络爬虫实现 #### 一、Nutch简介与准备工作 **Nutch** 是一个高度可扩展且开放源代码的网络爬虫项目,它可以抓取整个互联网上的网页,并对其进行索引。Nutch基于Hadoop构建,非常...