摘要:这里主要看一下CrawlDb中的updatedb,它主要是用来更新CrawlDb数据库的1. bin/nutch updatedb我们用nutch的命令行时会看到一个方法叫updatedb,其实这个方法就是调用CrawlDb.java类中的update方法,它的参数帮助如下:Usage:CrawlDb<crawldb>(-dir<segments>|<seg1><seg2>...)[-force][-normalize][-filter][-noAdditions]crawldbCrawlDbtoupdate-dirsegmentsparentd 阅读全文
posted @ 2011-10-24 00:00 爱开卷360 阅读(385) 评论(0) 推荐(0) 编辑
摘要:1. bin/nutch parse这个命令主要是用来解析抓取的内容,对其进行外链接分析,计算分数等操作,这个解析在抓取的时候就可以设置是否进行,如果在抓取的时候没有设置解析抓取的网页内容,那这边可以单独用一个Map-Reduce任务来做。后面的参数为:Usage: ParseSegment segment这里是一个segment的目录名2. ParseSegment源代码分析2.1 任务的启动ParseSegment任务的启动也是用一个Map-Reduce任务的,下面是它的源代码//配置一个JobJobConfjob=newNutchJob(getConf());job.setJobName 阅读全文
posted @ 2011-10-24 00:00 爱开卷360 阅读(804) 评论(1) 推荐(1) 编辑
摘要:1. Fetcher模块的简单介绍Fetcher这个模块在Nutch中有单独一个包在实现,在org.apache.nutch.fetcher,其中有Fetcher.java, FetcherOutput 和FetcherOutputFormat来组成,看上去很简单,但其中使用到了多线程,多线程的生产者与消费者模型,MapReduce的多路径输出等方法。下面我们来看一下Fetcher的注释,从中我们可以得到很多有用的信息。首先,这是一种基于队列的fetcher方法,它使用了一种经典的线程模型,生产者(a-QueueFeeder)与消费者(many-FetcherThread)模型,注意,这里有多 阅读全文
posted @ 2011-10-23 23:58 爱开卷360 阅读(379) 评论(0) 推荐(0) 编辑
摘要:上一节看了Fetcher中主要几个类的实现,这一节会来分析一下其中用到的消费者FetcherThread,来看看它是干嘛的。1. Fetcher的Mapp模型Fetcher.java代码中可以看到,Fetcher继承自MapRunable,它是Mapper的抽象接口,实现这个接口的子类能够更好的对Map的流程进行控制,包括多线程与异步Maper。1.1 Fetcher的入口函数fetch(Path segment,int threads, boolean parsing)下面是它的源代码,来分析一下://对配置进行检测,看一些必要的配置是否已经配置了,如http.agent.name等参数ch 阅读全文
posted @ 2011-10-23 23:58 爱开卷360 阅读(729) 评论(0) 推荐(1) 编辑
摘要:前面我们看了一下Generate的流程,它是为Fetch产生相应的fetchlist,这里想介绍一下Segment的查看工具SegmentReader类。1. 命令介绍bin/nutchreadsegUsage:SegmentReader(-dump...|-list...|-get...)[generaloptions]// 这里是一般的参数说明*Generaloptions:-nocontentignorecontentdirectory-nofetchignorecrawl_fetchdirectory-nogenerateignorecrawl_generatedirectory-no 阅读全文
posted @ 2011-10-22 22:41 爱开卷360 阅读(766) 评论(0) 推荐(1) 编辑
摘要:1. Generate的作用 在Inject之后就是Generate,这个方法主要是从CrawlDb中产生一个Fetch可以抓取的url集合(fetchlist),再结合一定的过滤条件,它的命令行如下: bin/nutchgenerateUsage:Generator<crawldb><segments_dir>[-force][-topNN][-numFetchersnumFetchers][-adddaysnumDays][-noFilter][-noNorm][-maxNumSegmentsnum] 参数说明: * crawldb: crawldb的相对路径 * 阅读全文
posted @ 2011-10-22 22:37 爱开卷360 阅读(481) 评论(0) 推荐(0) 编辑
摘要:上次我们分析了Inject的整个流程,其中说到了Inject的输出格式是MapSequenceFileOutputFormat,这个格式可以使用一个叫CrawlDbReader的工具来读取和分析。下面我们就来分析一下这个工具有哪些用。1. CrawlDbReader工具的使用方法 在命令行中运行bin/nutch readdb后就可以看到其帮助,实际上这个shell方法调用的正是CrawlDbReader的main方法,这个工具有下面几种使用方法: * bin/nutch <crawldb> -stats -sort 这个方法是在终端中打印所有crawldb的统计信息,加上sort 阅读全文
posted @ 2011-10-22 22:26 爱开卷360 阅读(575) 评论(0) 推荐(0) 编辑
摘要:1. Inject是干嘛的?在Nutch中Inject是用来把文本格式的url列表注入到抓取数据库中,一般是用来引导系统的初始化。这里的文本格式如下:http://www.nutch.org/\tnutch.score=10\tnutch.fetchInterval=2592000\tuserType=open_source这里的url与其元数据之间用Tab隔开,这里有两个保留的元数据,如下nutch.score : 表示特定url的分数nutch.fetchInterval : 表示特定url的抓取间隔,单位为毫秒Inject注入后生成的数据库为二进制结构,是Hadoop的MapSequen 阅读全文
posted @ 2011-10-22 22:19 爱开卷360 阅读(545) 评论(0) 推荐(0) 编辑
摘要:1. Nutch 1.3 运行命令的一些介绍 要看Nutch的命令说明,可执行如下命令bin/nutchUsage:nutch[-core]COMMANDwhereCOMMANDisoneof:crawlone-stepcrawlerforintranetsreaddbread/dumpcrawldbconvdbconvertcrawldbfrompre-0.9formatmergedbmergecrawldb-s,withoptionalfilteringreadlinkdbread/dumplinkdbinjectinjectnewurlsintothedatabasegeneratege 阅读全文
posted @ 2011-10-22 22:15 爱开卷360 阅读(1056) 评论(0) 推荐(0) 编辑
摘要:1. Nutch是什么? Nutch是一个开源的网页抓取工具,主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的接口来对其网页数据进行查询的一套工具。其底层使用了Hadoop来做分布式计算与存储,索引使用了Solr分布式索引框架来做,Solr是一个开源的全文索引框架,从Nutch 1.3开始,其集成了这个索引架构2. 在哪里要可以下载到最新的Nutch?在下面地址中可以下载到最新的Nutch 1.3二进制包和源代码http://mirror.bjtu.edu.cn/apache//nutch/3. 如何配置Nutch? 3.1 对下载后的压缩包进行解压,然后cd $HOME/nut 阅读全文
posted @ 2011-10-22 22:06 爱开卷360 阅读(1675) 评论(0) 推荐(0) 编辑