- 博客(14)
- 收藏
- 关注
原创 nutch源码分析—solrindex(2)
2021SC@SDUSC IndexerMapReduce::reduce public void reduce(Text key, Iterator<NutchWritable> values, OutputCollector<Text, NutchIndexAction> output, Reporter reporter) throws IOException { Inlinks inlinks = null; CrawlD
2021-12-26 14:46:15 148
原创 nutch源码分析—solrindex
2021SC@SDUSC 本章开始分析nutch源码的最后一步,即通过“bin/nutch solrindex http://localhost:8983/solr crawl/crawldb/ -linkdb crawl/linkdb/ -dir crawl/segments/ -filter -normalize”命令在solr服务器上建立索引。 首先看nutch执行脚本的其中一段, elif [ "$COMMAND" = "solrindex" ] ; then CLASS="org.a.
2021-12-26 14:42:09 148
原创 nutch源码分析——invertlink
LinkDb::main ToolRunner的run函数最终调用LinkDb的run函数 public static void main(String[] args) throws Exception { int res = ToolRunner.run(NutchConfiguration.create(), new LinkDb(), args); System.exit(res); } LinkDb::run public int run(String[] a..
2021-12-26 14:37:42 168
原创 nutch核心代码分析——crawl.Indexer
这个类的任务是另一方面的工作了,它是基于hadoop和lucene的分布式索引。它就是为前面爬虫抓取回来的数据进行索引好让用户可以搜索到这些数据。 这里的输入就比较多了,有segments下的fetch_dir,parseData和parseText,还有crawldb下的 current_dir和linkdb下的current_dir。 1,在这个类里,map将所有输入都装载到一个容器里边, 2,再到reduce进行分类处理, 3,实现拦截 --> this...
2021-11-24 21:22:43 123
原创 nutch核心代码分析——crawl.link.db
分析新输入的segment目录,主要代码如下: 新建立一个MP任务 JobConf job = LinkDb.createJob(getConf(), linkDb, normalize, filter); // 添加目录到输入路径,这里可能有多个输入路径, parse_data for (int i = 0; i < segments.length; i++) { if (LOG.isInfoEnabled()) { LOG.info("LinkDb:.
2021-11-24 21:13:15 211
原创 nutch核心代码分析——crawl.CrawlDb
这里主要看一下CrawlDb中的updatedb,它主要是用来更新CrawlDb数据库的 1. bin/nutch updatedb 我们用nutch的命令行时会看到一个方法叫updatedb,其实这个方法就是调用CrawlDb.java类中的update方法,它的参数帮助如下: sage: CrawlDb <crawldb> (-dir <segments> | <seg1> <seg2> ...) [-force] [-normalize] .
2021-11-24 20:43:04 120
原创 nutch核心代码分析——crawl.fetch
Fetcher这个模块在Nutch中有单独一个包在实现,在org.apache.nutch.fetcher,其中有Fetcher.java, FetcherOutput 和FetcherOutputFormat来组成,看上去很简单,但其中使用到了多线程,多线程的生产者与消费者模型,MapReduce的多路径输出等方法。 下面我们来看一下Fetcher的注释,从中我们可以得到很多有用的信息。 首先,这是一种基于队列的fetcher方法,它使用了一种经典的线程模型,生产者(a-QueueFeeder)与消费者
2021-11-24 20:33:13 112
原创 nutch核心代码分析——crawl.generator
在整个crawl中,generator主要有以下几个作用: 1,过滤不及格url (使用url过滤插件) 2,检测URL是否在有效更新时间里 3,获取URL metaData,metaData记录了url上次更新时间 4,对url进行打分 5,将url载入相应任务组(以host为分组) 6,计算url hash值 7,收集url, 直至到达 topN 指定量 那我们来看看generator的第一个job都干了什么。 for (i = 0; i &...
2021-11-24 20:14:43 205
原创 nutch核心代码分析——crawl.injector总结
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 配置中取,如果没有默认259...
2021-11-24 19:48:08 108
原创 nutch核心代码分析——crawl.injector-mapreduce
map:对符URL标准的url进行map对构造<url, CrawlDatum>,在构造过程中给CrawlDatum初始化得分,分数可影响url host的搜索排序,和采集优先级! public void map(Text key, CrawlDatum value, OutputCollector<Text, CrawlDatum> output, Reporter reporter) throws IOException { String u
2021-11-24 19:43:36 92
原创 nutch代码分析第三篇——crawl.injector--mapper
2021SC@SDUSC injector的注释 * Injector takes a flat text file of URLs (or a folder containing text files) * and merges ("injects") these URLs into the CrawlDb. Useful for bootstrapping * a Nutch crawl. The URL files contain one URL per line, optionally.
2021-11-24 19:35:43 185
原创 nutch代码分析第二篇——crawl.crawl
顾名思义,org.apache.nutch.crawl.Crawl实现的是一个完整的抓取过程,包括各种方法的初始化,url集的建立 /* Perform complete crawling and indexing (to Solr) given a set of root urls and the -solr parameter respectively. More information and Usage parameters can be found below. */ publi
2021-11-24 19:26:14 109
原创 nutch代码分析第一篇——综述
文章目录 系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、nutch是什么? Nutch是一个开源Java实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。 Nutch的创始人是Doug Cutting,他同时也是Lucene、Hadoop和Avro开源项目的创始人。 Nutch诞生于2002年8月,是Apache旗...
2021-09-30 23:45:25 393
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人