Fetcher分析 Fetcher是以生产者/消费者模式来处理网页抓取的。 QueueFeeder作为生产者,从前面Generator中产生的<url, CrawlDatum>读取出来,然后加入到FetchItemQueues队列中,加入的时候需处理队列已满等异常情况。 FetcherThread作为消费者,不断从队列里取出待抓取的URL进行抓取。 Fetcher与Injector和Generat

nutch  

Generator分析 Generator的功能主要是将注入的URL按照一定的规则生产一系列CrawlDb的子集。这里的规则包括:抓取时间是否符合要求,是否符合设定过滤规则,根据页面评分进行排序,根据URL的host/ip/domain划分子集,是否超过设定的generate最大值(就是Crawl命令中的topN值)等。 generate方法主要包括三个job的执行: 第一个job的map和red

nutch  

Injector的主要功能 Injector的主要功能是将urls目录下的文本文件中的URL地址注入到CrawlDb中。 Injector类基本构成 (1) 三个主成员变量 nutchScoreMDName nutchFetchIntervalMDName nutchFixedFetchIntervalMDName (2) 两个内部静态类 InjectMapper InjectReducer (3

nutch  

说明:本文的工作流程分析基于1.x的最新版Nutch1.7。 找到分析源头 分析软件的基本工作流程,通常都是从它的运行命令开始。在前面的<Nutch1.7学习笔记:基本环境搭建及使用>一文 (地址:http://blog.csdn.net/gobitan/article/details/13916981)中提到了运行Nutch的命令为$bin/nutch crawl urls -dir crawl

nutch  

说明:Nutch有两个主版本1.x和2.x,它们的主要区别是2.x引入了Gora作为存储抽象层,从而支持各种NoSQL数据库,如HBase,Cassandra等。本文是以1.x的最新版Nutch1.7 (发布于2013年6月25日)为例。 环境准备: 一台Ubuntu Linux服务器,可以装在VMware虚拟机中。 下载Nutch1.7版本的二进制包,地址:http://www.apache.o

nutch  

Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。当然在百度百科上这种方法在Nutch1.2之后,已经不再适合这样描述Nutch了,因为在1.2版本之后,Nutch专注的只是爬取数据,而全文检索的部分彻底的交给Lucene和Solr,ES来做了,当然因为他们都是近亲关系,所以Nutch抓取完后的数据,非常easy的就能生成全文索

nutch   搜索引擎   全文检索   分布式  

前提: jdk   eclipse  等等安装就略过了。    下载  apache-nutch-1.7-src.zip 包  和 apache-nutch-1.7-bin.zip 包 一、 1、创建一个Java Project 。 2、复制 nutch-1.7-src 包下 java 包里的org整个包放在 项目的src包下。 3、复制 nutch-1.7-bin包里的conf 文件夹至 项目的

hadoop   core  

Hadoop在运行一个mapreduce job之前,需要估算这个job的maptask数和reducetask数。首先分析一下job的maptask数,当一个job提交时,jobclient首先分析job被拆分的split数量,然后吧job.split文件放置在HDFS中,一个job的MapTask数量就等于split的个数。 job.split中包含split的个数由FileInputForm

hadoop   map   reduce  

1 Map side tuning参数 1.1 MapTask运行内部原理 当map task开始运算,并产生中间数据时,其产生的中间结果并非直接就简单的写入磁盘。这中间的过程比较复杂,并且利用到了内存buffer来进行已经产生的部分结果的缓存,并在内存buffer中进行一些预排序来优化整个map的性能。如上图所示,每一个map都会对应存在一个内存buffer(MapOutputBuffer,即上

hadoop   性能   分析   优化  

1.文件append的问题 hadoop的版本1.0.4以后,API中已经有了追加写入的功能,但不建议在生产环境中使用,原因如下:Does HDFS allow appends to files? This is currently set to false because there are bugs in the "append code" and is not supported in an

hdfs   异常