- 浏览: 282873 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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
以下是转载的执行recrawl的脚本(其实还是可以再优化的,比如参数和备份处理过程等 ),来对比 一下与普通的crawl有啥区别。
# runbot script to run the Nutch bot for crawling and re-crawling. # Usage: bin/runbot [safe] # If executed in 'safe' mode, it doesn't delete the temporary # directories generated during crawl. This might be helpful for # analysis and recovery in case a crawl fails. # # Author: Susam Pal depth=2 threads=5 adddays=5 topN=15 #Comment this statement if you don't want to set topN value # Arguments for rm and mv RMARGS="-rf" MVARGS="--verbose" # Parse arguments if [ "$1" == "safe" ] then safe=yes fi if [ -z "$NUTCH_HOME" ] then NUTCH_HOME=. echo runbot: $0 could not find environment variable NUTCH_HOME echo runbot: NUTCH_HOME=$NUTCH_HOME has been set by the script else echo runbot: $0 found environment variable NUTCH_HOME=$NUTCH_HOME fi if [ -z "$CATALINA_HOME" ] then CATALINA_HOME=/opt/apache-tomcat-6.0.10 echo runbot: $0 could not find environment variable NUTCH_HOME echo runbot: CATALINA_HOME=$CATALINA_HOME has been set by the script else echo runbot: $0 found environment variable CATALINA_HOME=$CATALINA_HOME fi if [ -n "$topN" ] then topN="-topN $topN" else topN="" fi steps=8 echo "----- Inject (Step 1 of $steps) -----" $NUTCH_HOME/bin/nutch inject crawl/crawldb urls echo "----- Generate, Fetch, Parse, Update (Step 2 of $steps) -----" for((i=0; i < $depth; i++)) do echo "--- Beginning crawl at depth `expr $i + 1` of $depth ---" $NUTCH_HOME/bin/nutch generate crawl/crawldb crawl/segments $topN \ -adddays $adddays if [ $? -ne 0 ] then echo "runbot: Stopping at depth $depth. No more URLs to fetch." break fi segment=`ls -d crawl/segments/* | tail -1` $NUTCH_HOME/bin/nutch fetch $segment -threads $threads if [ $? -ne 0 ] then echo "runbot: fetch $segment at depth `expr $i + 1` failed." echo "runbot: Deleting segment $segment." rm $RMARGS $segment continue fi $NUTCH_HOME/bin/nutch updatedb crawl/crawldb $segment done echo "----- Merge Segments (Step 3 of $steps) -----" $NUTCH_HOME/bin/nutch mergesegs crawl/MERGEDsegments crawl/segments/* if [ "$safe" != "yes" ] then rm $RMARGS crawl/segments else rm $RMARGS crawl/BACKUPsegments mv $MVARGS crawl/segments crawl/BACKUPsegments fi mv $MVARGS crawl/MERGEDsegments crawl/segments echo "----- Invert Links (Step 4 of $steps) -----" $NUTCH_HOME/bin/nutch invertlinks crawl/linkdb crawl/segments/* echo "----- Index (Step 5 of $steps) -----" $NUTCH_HOME/bin/nutch index crawl/NEWindexes crawl/crawldb crawl/linkdb \ crawl/segments/* echo "----- Dedup (Step 6 of $steps) -----" $NUTCH_HOME/bin/nutch dedup crawl/NEWindexes echo "----- Merge Indexes (Step 7 of $steps) -----" $NUTCH_HOME/bin/nutch merge crawl/NEWindex crawl/NEWindexes echo "----- Loading New Index (Step 8 of $steps) -----" ${CATALINA_HOME}/bin/shutdown.sh if [ "$safe" != "yes" ] then rm $RMARGS crawl/NEWindexes rm $RMARGS crawl/index else rm $RMARGS crawl/BACKUPindexes rm $RMARGS crawl/BACKUPindex mv $MVARGS crawl/NEWindexes crawl/BACKUPindexes mv $MVARGS crawl/index crawl/BACKUPindex fi mv $MVARGS crawl/NEWindex crawl/index ${CATALINA_HOME}/bin/startup.sh echo "runbot: FINISHED: Crawl completed!" echo ""
其中recrawl的差异:
* 指定了adddays参数:由于fetch time在fetch时被更新为下次要抓取的时间,所以,这里是指定当前时间+adddays后哪些urls是过早的,则需要抓取。所以如果是负数表明相对于是正数来产,将缩小抓取范围。即adddays后即将过期的urls将recrawl
* 多了mergesegs job: 将旧版本中的数据用新版本替换,同时将刚生成的segs合并到一个seg或多个指定大小的segs中。个人这个是可选的 。这个应该与下面说的merge job同时存在或去掉。
NOTE:
merge job(合并索引):对于web crawl来说是不应该执行这个的,因为这样做反而达不到分布式搜索的目的了。
此代码已经在修改,增加上验证;剩下删除没有。(个人认为是:如果url到期后再fetch时,如果发现unavailable时将剔除)
* 这里的recrawl ,但index并非是真正的increment index,而是按照之前的(合并的)segments和新的linkdb,crawldb三个目 录重新生成的;所以index的输出目录indexes同样也并非是之前的旧索引文件夹,而是全新的索引(当然没去重)
compare:
nutch 分布式索引(爬虫)
see
linux下nutch的增量抓去(recrawl)-- 注意事项1
nutch研究记录3(增量爬行) --注意事项2
发表评论
-
hadoop-replication written flow
2017-08-14 17:00 544w:net write r :net read( ... -
搜索引擎有多聪明?
2017-02-11 13:56 300ref:https://www.seozac.com/seo/ ... -
搜索引擎中的信息处理和概率论
2017-02-06 15:57 459info theory and maths use ... -
hbase-export table to json file
2015-12-25 17:21 1667i wanna export a table to j ... -
yarn-similar logs when starting up container
2015-12-09 17:17 94515/12/09 16:47:52 INFO yarn.E ... -
hadoop-compression
2015-10-26 16:52 490http://blog.cloudera.com/blog ... -
hoya--hbase on yarn
2015-04-23 17:00 444Introducing Hoya – HBase on YA ... -
compile hadoop-2.5.x on OS X(macbook)
2014-10-30 15:42 2492same as compile hbase ,it ' ... -
upgrades of hadoop and hbase
2014-10-28 11:39 7391.the match relationships ... -
how to submit jars to a map reduce job?
2014-04-02 01:23 541there maybe two ways : 1.serv ... -
install snappy compression in hadoop and hbase
2014-03-08 00:36 4541.what is snappy ... -
3。hbase rpc/ipc/proxy通信机制
2013-07-15 15:12 1297一。RPC VS IPC (relationship/di ... -
hadoop-2 dfs/yarn 相关概念
2012-10-03 00:22 1906一.dfs 1.旧的dfs方案 可以看到bloc ... -
hadoop 删除节点(Decommission nodes)
2012-09-02 03:28 2679具体的操作步骤网上已经很多,这里只说明一下自己操作过程注意事项 ... -
hadoop 2(0.23.x) 与 0.20.x比较
2012-07-01 12:09 2206以下大部分内容来自网络,这里主要是进行学习,比较 1、 ... -
hadoop-2.0 alpha standalone install
2012-06-10 12:02 2506看了一堆不太相关的东西... 其实只要解压运行即可,形 ... -
hadoop源码阅读-shell启动流程-start-all
2012-05-06 01:13 874when executes start-all.sh ... -
hadoop源码阅读-shell启动流程
2012-05-03 01:58 1882open the bin/hadoop file,you w ... -
hadoop源码阅读-第二回阅读开始
2012-05-03 01:03 1028出于工作需要及版本更新带来的变动,现在开始再次进入源码 ... -
hadoop 联合 join操作
2012-01-02 18:06 1047hadoop join操作类似于sql中的功能,就是对多表进行 ...
相关推荐
实现Nutch的增量recrawl通常涉及到多个步骤,包括清理旧数据、生成新的抓取列表、执行抓取任务以及合并新旧索引。这部分内容提到了使用shell脚本自动化这些过程的重要性,特别是在定期执行recrawl时,可以利用...
然而,在实际操作过程中发现,尽管解决了基本的增量更新逻辑,但在执行`indexmerge`命令后,新旧索引合并并未完全成功。具体表现为:在执行完合并命令后,索引目录中的文件并未按照预期的方式更新。这导致索引数据...
2. **增量索引**:在Nutch中,增量索引是指只更新自上次索引以来变化或新增的网页,而不是重新索引整个数据库。这提高了系统的效率,减少了资源消耗。Nutch使用Hadoop进行分布式处理,通过MapReduce实现增量索引的...
4. **索引更新与合并**:Nutch支持增量索引,这意味着它可以仅对新抓取或更新的网页进行索引,而不是重新索引整个集合。索引合并则用于定期整合多个小索引,以减少索引碎片并优化查询性能。 5. **搜索接口**:Nutch...
3. **索引优化**:Nutch 提供了多种索引策略,如增量索引、定期全量索引等,以适应不同场景需求。 4. **倒排索引**:Nutch 采用倒排索引结构,快速定位关键词在文档中的位置。 **四、Apache Solr 搜索引擎** 1. **...
2. **增量索引**:Nutch支持增量索引,即只对新抓取或已更改的网页进行索引,而不是重新索引整个数据库。这降低了索引更新的资源需求,并减少了对现有服务的影响。 3. **双写策略**:在热替换过程中,新索引将被...
6. **更新与增量抓取**:Nutch支持增量抓取,即只抓取新出现或已更改的网页,而不是重新抓取整个互联网。这通过检查URL的修改时间戳和使用HTTP头部信息实现。 在深入学习Nutch的过程中,可以结合其源代码理解其内部...
网络爬虫工具有多种,例如分布式爬虫Nutch,以及Java爬虫框架Crawler4j、WebMagic和WebCollector,还有非Java的Scrapy框架。 1.2.1 网络爬虫原理: 网络爬虫通过获取URL和解析超链接来抓取信息,然后使用算法决定下...
1. **DataX**:这是一个由阿里巴巴开发的数据同步工具,支持多种数据源到多种目标数据的全量和增量数据迁移,如从RDBMS到Hadoop。 2. **Flume**:Apache Flume是一种分布式、可靠的、可用于聚合和移动大量日志数据...
增量式抓取则基于已有的网页集合,抓取更新的或过时的网页,确保数据的实时性。实际应用中,两者通常结合使用,前者用于大规模数据初始化,后者用于日常维护和即时更新。 工作流程: Nutch的工作流程主要包括注入...
HDFS(Hadoop Distributed File System)是Apache Hadoop项目的一部分,最初是为了支撑Nutch搜索引擎的数据存储需求而创建的。 在设计上,HDFS考虑了硬件故障的常态,它在大量的普通硬件服务器上运行,每个服务器...
此外,网络数据采集,如网络爬虫,能够从网站上抓取数据,将非结构化信息转化为结构化数据,工具如Nutch、Crawler4j、WebMagic、WebCollector和Scrapy等各有特色。 总的来说,人工智能的基础在于大数据的收集、...
HDFS源于Apache Nutch项目,是Hadoop项目的一部分,旨在支持高吞吐量的数据访问,适用于大规模批量处理任务,而非常规的交互式应用。HDFS的设计原则包括以下几个方面: 1. **硬件错误的正常化**:由于HDFS部署在...
这种设计使得系统能更好地应对大规模网络环境,尤其是在信息更新迅速、数据量庞大的情况下。 在系统设计过程中,本文特别提到了Bloom过滤器这一关键技术。Bloom过滤器是一种空间效率极高的概率型数据结构,用于判断...
针对不同的应用场景,例如海量数据处理、实时增量搜索、图形计算和交互式计算等,理解如何优化Hadoop和HBase的配置和使用,以提高性能。 在实际搭建过程中,还需注意Hadoop和HBase的版本兼容性问题、节点的配置和...
增量式爬虫关注的是更新的内容,而DeepWeb爬虫则是针对那些不能被传统搜索引擎直接抓取的动态网页。 网络爬虫的基本结构通常由控制器、解析器、资源库三部分组成。控制器负责分配任务给爬虫线程,解析器进行网页...
3. 爬虫类型:通用爬虫、聚焦爬虫、增量式爬虫和深层网络爬虫,各有特点,适用于不同数据采集场景。 【三】国内外研究现状 1. 国外研究:网络爬虫起源于90年代,如Archie软件是搜索引擎的先驱。Google的出现推动了...
其中,批量型网络爬虫有明确的抓取范围限制,而增量型网络爬虫则是不断抓取直到获取所有数据,垂直网络爬虫则专注于特定领域的深度抓取。 在爬虫的实际应用中,有时需要登录后才能访问的数据。这就需要实现自动登录...
5. **实时更新与增量索引**:展示了如何在数据变化时实时更新索引,以保持搜索结果的最新性。 6. **多语言支持**:讲解了处理不同语言文本的方法,包括语言识别和特定语言的分析器。 7. **分布式搜索**:详细介绍...