`
piziwang
  • 浏览: 236069 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

larbin中URL的去重-Bloom Filter算法

    博客分类:
  • J2EE
阅读更多

读larbin的源码曾经赞叹它去重方法的设计,虽然有一定的冲突率,但是效率极高,占用的内存非常小,按照larbin的配置,下载6400万网页,使用的内存只有8M。算法特点总结如下:
   1、使用hash;
   2、将每个url映射到一位;
   3、超找的时间是个常数;
   4、不处理冲突。
今天偶然看到焦萌的专栏 详细介绍了此算法,也就是有名的Bloom Filter算法,大家可以去看一下,觉得这样的设计真的非常精妙,只要容忍一定的错误率,就可以得到非超高的速度。田春峰也写了一篇《Url排重Bloom Filter 算法、误差及其他》也挺有意思,也可以瞅瞅。
   但是可能我们有时无法容忍冲突的发生,这时候采用Bloom Filter显然是不当的。为了不冲突,就必须要保存URL或其对应的唯一值(如MD5),但是面对数以亿计的URL非要把内存“挤爆”不可,那么必须要借助磁盘帮助。在《Design and Implementation of High Performance of Distributed Crawler》一文中有相关的方法,自己英文不好,意思不是很明白,总结了一点,哪位大侠看见错误还望指正。

如何避免larbin当中URL去重的缺陷:数据结构:两个map<url*>, 磁盘维护一个已采集的URL的有序队列;
算法:开始采集到的URL都存入到一个红黑树里面,当红黑树增长到一定程度的时候,转入bulk状态;这时parse 负责将解析出的URL存入另一个红黑树,而且还启动另外一个线程将原红黑树中的数据与磁盘上的有序队列归并,对并过程中实现扫描和插入的操作。每隔一个小时启动一次归并的线程,这样就不会出现larbin中冲突的问题

分享到:
评论

相关推荐

    larbin-2.6.3

    larbin-2.6.3larbin-2.6.3larbin-2.6.3larbin-2.6.3larbin-2.6.3

    如何配置Larbin - 翻译

    关于Larbin网络爬虫的权威文档,你可以在这里学会Larbin的详细配置方法,让你的Larbin工作得更好

    larbin-高效网络爬虫

    LINUX下的网络爬虫。larbin应当是一个被广大搜索引擎爱好者应当引起注意的一个产品,虽然其功能逐渐被 Nutch 所接受和替代,但是其在爬虫上的优美设计的确值得称道。

    论文研究-Larbin的设计与优化 .pdf

    Larbin的设计与优化,叶建平,,搜索引擎是万维网能够更好为人类利用的重要工具。而网络爬虫是搜索引擎的核心组成部分。Larbin是一个高效,比较简单,而且功能比较

    larbin源码 c++的网络爬虫

    larbin源码 c++的网络爬虫larbin源码 c++的网络爬虫larbin源码 c++的网络爬虫

    larbin2.6.3爬虫程序

    larbin2.6.3爬虫,错误已全部改正,已在ubuntu下通过运行,可进行简单的爬网页任务。

    修改好的larbin源代码

    修改好的larbin源代码,可以直接在ubuntu8.10下编译使用

    Larbin

    主要是网络爬虫,整个网络进行景象,得到网络资源

    larbin 分析和win下移植

    介绍larbin原理和在win下怎么移植

    larbin 网络爬虫

    larbin是一种开源的网络爬虫/网络蜘蛛

    Python实现多线程抓取网页功能实例详解

    1、larbin的URL去重用的很高效的bloom filter算法; 2、DNS处理,使用的adns异步的开源组件; 3、对于url队列的处理,则是用部分缓存到内存,部分写入文件的策略。 4、larbin对文件的相关操作做了很多工作 5、在...

    larbin源代码

    larbin是一种开源的网络爬虫/网络蜘蛛,由法国的年轻人 Sé...larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索引擎提供广泛的数据来源。 larbin是一个被广大搜索引擎爱好者应当引起注意的一个产品。

    Larbin搜索引擎源码赏析[整理].pdf

    Larbin搜索引擎源码赏析[整理].pdf

    larbin编译环境及在scanner中搭建交叉编译环境

    larbin编译环境的搭建、larbin编译环境潜入web开发的漏扫(scanner)中的方法及一些对遇到的问题的说明

    larbin源码分析全解

    主要是分析larbin开源爬虫的源代码,主要思路是先从global文件中的各个重要的结构开始讲解、分析代码。

    larbin开源代码

    这是开源的Linux源代工具原码,用于网络获取资源,分享的原因是它各种技巧的用法,包括一个简单的webserver,文件上传工具,他的高效性很很被认同。

    网络蜘蛛Larbin的设计和优化.kdh

    网络蜘蛛Larbin的设计和优化,Larbin是利用c++开发的一种网络爬 虫,由法国人Sebastien Ailleret发布,因此 它是开源的(基于GPL标准)。Larbin最初 开发出来是为了XYLEME工程。Larbin的 目的是在网络上抓取xml页面,然后...

    Webtools 4 larbin-开源

    Larbin是一个Web搜寻器,旨在获取大量Web页面,它应该能够在具有大量u / d的标准PC上获取超过1亿个页面。 这套称为webtools4larbinPHP和Perl脚本可以处理Larbin和p的输出。

    larbin 搜索

    larbin 搜索,提供对网页的搜索。。。。。。。。

Global site tag (gtag.js) - Google Analytics