- 浏览: 283668 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (247)
- free talking (11)
- java (18)
- search (16)
- hbase (34)
- open-sources (0)
- architect (1)
- zookeeper (16)
- vm (1)
- hadoop (34)
- nutch (33)
- lucene (5)
- ubuntu/shell (8)
- ant (0)
- mapreduce (5)
- hdfs (2)
- hadoop sources reading (13)
- AI (0)
- distributed tech (1)
- others (1)
- maths (6)
- english (1)
- art & entertainment (1)
- nosql (1)
- algorithms (8)
- hadoop-2.5 (16)
- hbase-0.94.2 source (28)
- zookeeper-3.4.3 source reading (1)
- solr (1)
- TODO (3)
- JVM optimization (1)
- architecture (0)
- hbase-guideline (1)
- data mining (3)
- hive (1)
- mahout (0)
- spark (28)
- scala (3)
- python (0)
- machine learning (1)
最新评论
-
jpsb:
...
为什么需要分布式? -
leibnitz:
hi guy, this is used as develo ...
compile hadoop-2.5.x on OS X(macbook) -
string2020:
撸主真土豪,在苹果里面玩大数据.
compile hadoop-2.5.x on OS X(macbook) -
youngliu_liu:
怎样运行这个脚本啊??大牛,我刚进入搜索引擎行业,希望你能不吝 ...
nutch 数据增量更新 -
leibnitz:
also, there is a similar bug ...
2。hbase CRUD--Lease in hbase
这个过程很简单,就是开启了一个maprunnable来实现自定义的输出(没有使用通常的mapper).red也是使用默认的.
过程是:
一。Fetch初始化
由于它实现了MapRunnable,那么它其实是一个mapper的启动器,包括将多个输入Key-value pairs处理,然后输出的过程完全由其中的run()实现了,所以发现job中并没有定义mapper;而reduce也是使用了默认的。
输入
segment:由上一过程generator的输出生成,形如segments/201106xxxxxx的格式;
threads:将由多少个fetcher threads来运行这批fetchlist。
InputFormat(sequence file):由于使用了自定义的input format,而其中的getSplits()正是按照fileStatus来对应生成的,所以有多少个file就有多少个splits,这意味着在generate时的rednum就是现在的mapnum了。
input path:segname/crawl_generate
output path:segname
output format:FetchOutputFormat,<text,NutchWritable>,有三种:
<url,crawldatum> --》crawl_fetch
<url,content> --> content
<url,parse> --> crawl_parse,parse_data,parse_text
其中nutchwritable是对其中的value的包装.除了了crawl_parse是sequence file,其它四个都是 map file
处理-MapRunnable
在抓取过程当前处理的urls是固定的,大小以threads * 50=total size来计算。数据结构是:
若干个queues,数量由当前的fetchlsit中的hosts决定;即queue与host是1:1
每个queue中items数量是不固定的,当然会受到total szie的结束。同时作者使用了巧妙的方法来记录当前正在fetching的urls set,当这个set中大于1时表明此host正由多个threads来处理其中的urls,所以用到了maxThreads来断言:
如果>maxThreads时返回 null,表明已经达到并行fetch的上限,让调用者等待。
fetch过程
1.以不固定的顺序从所有queues中(由FetcherQueues管理),返回其中的item元素来fetch;
2.分析此url所在的robts.txt。为了提供灵活的timeover控制及其它request headers,直接使用了socket处理。
3.处理限制性问题,如要不受限或时间间隔在此delay之外则继续;
4.开始真正的fetch。当然用到了parse plugins。由于没有使用mapper(注意不是Maptask)所以需要自己处理输出相关結果。 当有新urls添加到queue中?由updatedb 中可以看出,是不会添加进去fetch的,只会添加crawl_parse中等待下一回的fetch.
(由output()中也可以看出,当使用parsing参数并当status == STATUS_FETCH_SUCCESS时进行了一个parseutil.parse()操作,得到了个页面中的所有outlinks等数据,最后在ParseOutptuFormat#write中进行了一个iterator输出所有outlinks到crawl_parse中。)
5.对queue中的urls进行2,3,4步骤的循环处理。
---各文件内容---
content:
http://www.163.com/ Version: -1
url: http://www.163.com/
base: http://www.163.com/
contentType: text/html
metadata: X-Via=1.1 stcz187:8102 (Cdn Cache Server V2.0), 1.1 dg112:8080 (Cdn Cache Server V2.0) Vary=Accept Date=Sat, 09 Jul 2011 07:14:02 GMT Expires=Sat, 09 Jul 2011 07:15:22 GMT nutch.crawl.score=1.0 Content-Encoding=gzip _fst_=33 nutch.segment.name=20110706142546 Connection=close Content-Type=text/html; charset=GBK Server=nginx Cache-Control=max-age=80
Content:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
.
.
.
<dt class="txt_black"><cite class="txt_blue txt_12"><a href="http://blog.csdn.net/cheny_com
" onclick='LogClickCount(this,79);' target="_blank">cheny_com</a></cite><a href="http://blog.csdn.net/cheny_com/article/details/6587277" target="_blank" title="敏捷开发“松结对编程”实践之三:共同估算篇" onclick='LogClickCount(this,79);'>敏捷开发“松结对编程”实践之三:共同估算篇</a></dt>
<dt class="txt_black"><cite class="txt_blue txt_12"><a href="
http://blog.csdn.net/turingbooks
" onclick='LogClickCount(this,79);' t
从上可以看出,content是存放了所有fetch的html raw contents。
crawl_fetch:
http://www.163.com/ Version: 7
Status: 33 (fetch_success)
Fetch time: Sat Jul 09 15:14:02 CST 2011
Modified time: Thu Jan 01 08:00:00 CST 1970
Retries since fetch: 0
Retry interval: 2592000 seconds (30 days)
Score: 1.0
Signature: null
Metadata: _ngt_: 1309933252318_pst_: success(1), lastModified=0
http://www.csdn.net/ Version: 7
Status: 33 (fetch_success)
Fetch time: Sat Jul 09 15:14:02 CST 2011
Modified time: Thu Jan 01 08:00:00 CST 1970
Retries since fetch: 0
Retry interval: 2592000 seconds (30 days)
Score: 1.0
Signature: null
Metadata: _ngt_: 1309933252318_pst_: success(1), lastModified=0
通过下面的crawl_geneate的比较可以看出,这个阶段的結果是对原generate的修改,包括fetch time,status,metadata etc.
crawl_parse :(note this is a seqnence file but map files in other files)
http://www.163.com/ Version: 7
Status: 65 (signature)
Fetch time: Sat Jul 09 15:14:08 CST 2011
Modified time: Thu Jan 01 08:00:00 CST 1970
Retries since fetch: 0
Retry interval: 0 seconds (0 days)
Score: 1.0
Signature: 989844cdb45e225db2b2731315cb5342
Metadata:
http://img3.cache.netease.com/cnews/js/ntes_jslib_1.x.js Version: 7
Status: 67 (linked)
Fetch time: Sat Jul 09 15:14:08 CST 2011
Modified time: Thu Jan 01 08:00:00 CST 1970
Retries since fetch: 0
Retry interval: 2592000 seconds (30 days)
Score: 0.01
Signature: null
Metadata:
.
.
.
http://g.csdn.net/5187332 Version: 7
Status: 67 (linked)
Fetch time: Sat Jul 09 15:14:08 CST 2011
Modified time: Thu Jan 01 08:00:00 CST 1970
Retries since fetch: 0
Retry interval: 2592000 seconds (30 days)
Score: 0.01
Signature: null
Metadata:
http://g.csdn.net/5189759 Version: 7
Status: 67 (linked)
Fetch time: Sat Jul 09 15:14:08 CST 2011
Modified time: Thu Jan 01 08:00:00 CST 1970
Retries since fetch: 0
Retry interval: 2592000 seconds (30 days)
Score: 0.01
Signature: null
Metadata:
这里其实就是包括seed urls在内的所有parse的urls状态 信息
parse_data:
http://www.163.com/ Version: 5
Status: success(1,0)
Title: 网易
Outlinks: 100
outlink: toUrl: http://img3.cache.netease.com/cnews/js/ntes_jslib_1.x.js anchor:
outlink: toUrl: http://reg.vip.126.com/enterMail.m anchor: 进入我的邮箱
。。。
Content Metadata: X-Via=1.1 stcz187:8102 (Cdn Cache Server V2.0), 1.1 dg112:8080 (Cdn Cache Server V2.0) Expires=Sat, 09 Jul 2011 07:15:22 GMT _fst_=33 nutch.segment.name=20110706142546 Connection=close Server=nginx _ftk_=1310195642769 Cache-Control=max-age=80 nutch.content.digest=989844cdb45e225db2b2731315cb5342 Date=Sat, 09 Jul 2011 07:14:02 GMT Vary=Accept Content-Encoding=gzip nutch.crawl.score=1.0 Content-Type=text/html; charset=GBK
Parse Metadata: CharEncodingForConversion=gb18030 OriginalCharEncoding=gb18030
.
.
.
http://www.csdn.net/ Version: 5
Status: success(1,0)
Title: CSDN.NET - 全球最大中文IT社区,为IT专业技术人员提供最全面的信息传播和服务平台
Outlinks: 100
outlink: toUrl: http://www.csdn.net/1341df/csdn_ggmm.js anchor:
outlink: toUrl: http://counter.csdn.net/a/js/AreaCounter.js anchor:
。。。
Content Metadata: ETag=W/"e7bf7935f53dcc1:1111" Content-Length=126983 X-UA-Compatible=IE=EmulateIE7 Last-Modified=Sat, 09 Jul 2011 05:01:06 GMT _fst_=33 nutch.segment.name=20110706142546 Connection=close X-Powered-By=ASP.NET Server=nginx/0.7.68 Cache-Control=max-age=1800 _ftk_=1310195642771 nutch.content.digest=892e028e36c036049789babb3db5806b Date=Sat, 09 Jul 2011 07:14:02 GMT Vary=Accept-Encoding nutch.crawl.score=1.0 Content-Location=http://www.csdn.net/index.htm Content-Type=text/html; charset=utf-8 Accept-Ranges=bytes
Parse Metadata: CharEncodingForConversion=utf-8 OriginalCharEncoding=utf-8
这里就是各个seed urls中取出的所有出站urls,在搜索时的anchor项就是由这里提供的。
parse_text:
http://www.163.com/ 网易 帐号 密码 选择去向 网易通行证 163邮箱 126邮箱 VIP126邮箱 Yeah邮箱 188财富邮 vip邮箱 网易博客 网易相册 同城约会 网易论坛 网易微博 登录微博 注册免费邮箱 欢迎你, pInfo 进入通行证 进入我的邮箱 进入我的邮箱 进入我的邮箱 进入我的邮箱 进入我的邮箱 进入我的邮箱 进入我的博客 进入我的相册 进入。。。
http://www.csdn.net/ CSDN.NET - 全球最大中文IT社区,为IT专业技术人员提供最全面的信息传播和服务平台 CSDN.NET - 中国领先的IT技术社区,为IT专业技术人员提供最全面的信息传播和服务平台 您还未登录! | 登录 | 注册 | 帮助 首页 资讯 论坛 博客 下载 搜索 空间 网摘 程序员 会议 CTO 俱乐部 项目交易 TUP 培训充电 学生大本营 移。。。
这里的内容是从整个page中所有tags解析的contents
----之前generator阶段的結果,
crawl_generate:
http://www.163.com/ Version: 7
Status: 1 (db_unfetched)
Fetch time: Mon Jul 04 14:57:19 CST 2011
Modified time: Thu Jan 01 08:00:00 CST 1970
Retries since fetch: 0
Retry interval: 2592000 seconds (30 days)
Score: 1.0
Signature: null
Metadata: _ngt_: 1309933252318
http://www.csdn.net/ Version: 7
Status: 1 (db_unfetched)
Fetch time: Mon Jul 04 14:57:19 CST 2011
Modified time: Thu Jan 01 08:00:00 CST 1970
Retries since fetch: 0
Retry interval: 2592000 seconds (30 days)
Score: 1.0
Signature: null
Metadata: _ngt_: 1309933252318
anyway ,这些数据都可以从code中了解,但显示出来是为了方便日后 的查找而已;
另外可以根据输出格式的来想像相关的数据亦可。
发表评论
-
nutch 几种搜索布署
2011-12-29 13:21 8721。这是最简单的一种布署方式,通常用于简单测试。 ... -
nutch搜索架构关键类
2011-12-13 00:19 14todo -
nutch结合hadoop解説 RPC机制
2011-12-13 00:18 895todo -
nutch搜索架构关键类
2011-12-13 00:17 1139在整个crawl->recrawl ... -
访问hadoop数据时注意相对路径问题
2011-12-07 00:30 1423今天在nutch配置分布式搜索时出现搜索不到結果,背景是: ... -
nutch 发布时要注意的问题
2011-12-04 23:40 1859在利用Nutch自身的ant打 ... -
nutch 中的trie tree 算法简介
2011-11-18 14:18 945todoo -
nutch 配置文件详解
2011-11-17 16:58 2169下面来分析 一下,conf目录下各文件的作用是怎样的: cr ... -
nutch 分布式索引(爬虫)
2011-10-19 00:15 3848其实,全网抓取比intranet区别再于, 前者提供了较 ... -
nutch 分布式搜索-cluster-hdfs index
2011-10-17 02:14 1369此过程也很简单,步骤是: a.put the indexes ... -
nutch 分布式搜索-cluster-local index
2011-10-17 02:13 782此过程亦相当简单,只是修改一下search-servers.t ... -
nutch 分布式搜索-standalone mode
2011-10-17 01:47 970本地模式篇,其实就是相当 于之前图中的虚线部分。詳細如下 ... -
nutch对某个contentType文档进行解析的流程--html
2011-09-22 23:44 992经过上一遍contentType流程 介绍后,现在进入具体的 ... -
nutch对某个contentType文档进行解析的流程
2011-09-04 12:48 1673nutch支持对诸多的文档 ... -
nutch 处理robots.txt原理
2011-08-28 16:42 1711形如大多SE一样,在bot ... -
nutch analyzers 使用机制
2011-07-31 14:35 823一。索引时analyzer 我们知道,在Indexer ... -
nutch 数据增量更新
2011-07-22 19:25 3029以下是转载的执行recrawl的脚本(其实还是可以再优化的,比 ... -
nutch 评分机制
2011-07-22 02:28 1755其实nutch的评分机制有二部分,与通常的SE类似: 1 ... -
nutch 搜索site dedup
2011-07-22 01:41 887这个版本发现有个大大的bug,就是搜索时同一页面出现重复,不同 ... -
nutch 搜索流程 2-distributed search
2011-07-20 13:55 997了解了local search ,那么进行distribute ...
相关推荐
- **自动化工作流**:将新项目触发自动化工作流程,如自动抓取并保存文章全文。 **使用步骤** 1. 安装 `mqtt-feed-fetcher` 及其依赖,如 `paho-mqtt`(用于 MQTT 交互)和 `feedparser`(用于解析 RSS/Atom 提要)...
4. **数据解析**:抓取的数据可能包含游戏特有的编码或格式,"Shop Titans Spreadsheet Fetcher"会对这些数据进行解析,转换成易于理解的格式。 5. **结果展示与分析**:工具通常会提供一个直观的界面,展示提取的...
Nutch 是一个开源的搜索引擎项目,其核心功能包括网络爬虫(Crawler)和搜索器(Searcher)。本文主要分析Nutch爬虫的工作流程及其涉及的...了解Nutch的文件格式和工作流程对于管理和优化大规模的Web抓取任务至关重要。
Nutch的工作流程主要包括以下几个步骤:构建初始URL集合、注入(Inject)、生成抓取列表(Generate)、抓取页面(Fetch)、解析页面(Parse)、更新索引(Index)。接下来我们将详细地探讨每个步骤的具体实现。 ###...
处理器链包括PreProcessor、Fetcher、Extractor、Writer和PostProcessor五个队列,分别处理抓取的先决条件、网络传输协议、内容解析、信息写入和后期处理。 总结来说,搜索引擎系统中的网页抓取模块是关键,它决定...
- **Web 抓取(Fetcher)**:Nutch 使用多线程进行网页抓取,遵循Robots协议,确保合法抓取。 - **链接分析(Link Analysis)**:Nutch 运用PageRank算法对网页的重要性进行评估,提高搜索结果的相关性。 - **...
然后,Fetcher下载线程按照Fetchlist抓取网页。抓取完成后,Crawler会更新WebDB,并生成新的Fetchlist,包含未抓取或新发现的URL,进入下一轮循环。在抓取过程中,Nutch遵循Robots Exclusion Protocol,尊重网站的...
在"page-fetcher-master"这个文件名中,"master"通常指的是Git仓库的主分支,这暗示了该项目可能是一个开源软件,其源代码被版本控制并托管在某个Git服务上,比如GitHub。用户可以克隆或下载这个"page-fetcher"项目...
本文将解析 Nutch-0.9 版本中的 `Crawl` 类,它是 Nutch 抓取流程的起点。 `Crawl` 类位于 `org.apache.nutch.crawl` 包中,它包含了启动 Nutch 抓取程序的主要逻辑。`main` 函数是整个程序的入口点,它接收命令行...
Nutch 的工作流程主要包括六个主要步骤:Injector、Generator、Fetcher、ParseSegment、CrawlDb 更新和 LinkDb 更新,最后由 Indexer 创建索引。下面将对每个步骤进行详细解释。 1. Injector: Injector 是 Nutch ...
4. **运行Nutch**:使用bin/nutch命令行工具执行`inject`、`fetch`、`parse`、`update`和`index`等步骤,完成网页抓取和索引的完整流程。 5. **设置Solr或HBase**:为了进行搜索,你需要配置并运行Solr或HBase来接收...
当执行`crawlurls–dirmydir–depth5–threads5–topN100`命令时,Nutch的抓取流程便由此类启动。其中,`mydir`指定数据存储路径,包括crawlDb、segments和indexes等关键目录。 在Crawl类的`main()`方法中,首先...
- **Fetcher**:下载抓取到的网页。 - **Parser**:解析HTML,提取内容和元数据。 - **Indexer**:将解析后的数据构建为索引。 - **Searcher**:提供搜索服务,查询索引并返回结果。 4. **入门学习Nutch** - *...
"Fetcher.png"展示了Fetcher组件的详细工作流程。Fetcher负责网络通信,下载网页,并将其存储为Segment,这是Nutch的基本处理单元。 "Parse segment.png"可能涉及Parse阶段,Segment被送入Parser进行处理,提取出...
同时,可能还需要配置`conf/regex-urlfilter.txt`和`conf/fetcher.properties`等文件以适应特定需求。 5. **运行Nutch**:启动Nutch涉及到多个步骤,包括生成URL列表、执行抓取、索引和搜索等。命令行工具如`bin/...
7. **爬虫工作流程**: - **种子 URL 设置**:开始时,用户提供一组种子 URL。 - **发现**:Fetcher 下载 URL,并将其内容传递给 Parser。 - **解析**:Parser 解析 HTML,提取内容和链接。 - **分析**:...
此外,`Fetcher`还负责监控抓取队列,确保任务的顺利进行,并处理任何可能出现的异常。 Nutch 的工作流程可以总结为以下几个步骤: 1. **初始化**:根据配置文件启动`Fetcher`,创建指定数量的`FetcherThread`线程...
然后,通过调度器启动任务,fetcher将抓取网页,processor解析出所需数据,最后由result_worker存储结果。 五、进阶应用 pyspider不仅适合初学者,也为高级用户提供了丰富的扩展接口。例如,可以自定义中间件来处理...
Crawler4j的使用流程:** - 创建自定义的WebCrawler类,实现`visit(Page)`方法来处理每个抓取到的页面。 - 配置CrawlerConfig对象,设置爬虫参数。 - 创建Controller实例,启动爬虫,传入配置好的WebCrawler和...
如`bin/nutch inject`来注入种子URL,`bin/nutch fetch`执行抓取,`bin/nutch update`更新已抓取的页面,`bin/nutch generate`生成待抓取的URL列表,以及`bin/nutch crawl`执行整个流程。 8. **索引与搜索** 抓取...