`
piziwang
  • 浏览: 241012 次
  • 性别: 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 - 翻译

    - **类描述**:可以在`src/utils/url.h`文件中找到更多关于`url`类的信息。 3. **`void initUserOutput()`** - **描述**:用于初始化所有数据,此函数会在所有其他初始化工作完成后被调用。 4. **`void ...

    larbin-高效网络爬虫

    **larbin-高效网络爬虫** larbin是一个高效且开源的网络爬虫,主要用于Linux操作系统。这个工具在互联网数据抓取领域中具有显著的地位,尽管随着时间的推移,它的使用可能已被其他更现代的爬虫如Nutch所取代,但...

    larbin 搜索

    5. **URL去重**:larbin 内置URL去重机制,确保每个URL只被访问一次。 ### 三、安装与配置 在大多数Linux系统上,larbin 可以通过源码编译或者包管理器进行安装。配置文件通常为 `larbin.conf`,其中可以设置包括...

    larbin 网络爬虫

    1. **下载与安装**:可以从larbin的官方网站或者GitHub仓库下载最新版本(例如larbin-2.6.3),解压后按照README文件的指示编译安装。 2. **配置文件**:larbin的主要配置文件是`larbin.conf`,用户可以根据需求修改...

    larbin-2.6.3

    【larbin-2.6.3】是一款开源的网络爬虫软件,由一位国外开发者创建。这个项目在互联网上广泛传播,为其他开发者提供了一个学习和研究网络爬虫技术的平台,具有一定的教学和实践价值。它展示了如何设计并实现一个能够...

    从Larbin看互联网爬虫设计

    - **分布式算法**:确保爬虫在网络中的分布均匀,避免单点压力过大。 Larbin的一个潜在问题是慢速响应的URL会占用大量连接,这需要优化处理,例如设置超时机制或限制并发连接数。此外,Larbin自带的Web服务器功能和...

    Larbin

    在抓取过程中,Larbin 会记录已访问过的URL,避免重复抓取,并且可以设置规则来限制对特定域名的抓取深度或频率。 **主要特点** 1. **灵活性**:Larbin 允许用户自定义多种参数,如并发请求的数量、每个IP地址的...

    修改好的larbin源代码

    2. **获取源代码**:从压缩包larbin-2.6.3中解压源代码,进入源代码目录。 3. **配置**:运行`./configure`脚本来检查系统环境并生成Makefile。由于这是为Ubuntu 8.10优化的版本,可能已经包含了针对该系统的特定...

    larbin2.6.3爬虫程序

    2. **编译安装**:解压下载的larbin-2.6.3压缩包,然后执行`./configure`、`make`和`make install`进行编译和安装。 3. **配置文件**:larbin的配置文件`larbin.conf`允许用户定制爬虫的行为,如设置抓取速度、保存...

    larbin.2.6.3

    在爬取过程中,larbin 使用哈希表等数据结构记录已访问过的URL,防止重复抓取同一页面,节省了网络带宽和存储空间,同时也减少了对目标网站的压力。 4. **自定义抓取规则** 用户可以通过配置文件定义爬取规则,...

    larbin源码 c++的网络爬虫

    3. **链接提取器**:下载的HTML页面中,larbin会寻找并提取出所有链接,将未访问过的链接添加到URL池中,为后续抓取做准备。 4. **重复内容检测**:为了避免重复抓取同一页面,larbin通常会检查每个新URL的哈希值,...

    larbin开源代码

    1. **安装与编译**:首先,用户需要在Linux环境中解压larbin-2.6.3压缩包,然后进入源代码目录,使用`make`命令进行编译,编译完成后,执行`make install`将larbin安装到系统路径。 2. **配置文件**:larbin的配置...

    著名的网络爬虫程序+源代码

    "larbin-2.6.3" 是一个具体的网络爬虫项目,名为Larbin。Larbin是一款开源、高效、可配置的网络爬虫,由C语言编写,适用于大规模网页抓取。它能够并行抓取网页,具有良好的扩展性和性能。Larbin的特点包括: 1. **...

    larbin网络爬虫的体系结构[参照].pdf

    4. **链接过滤器(Link Filter)**:用于去除重复的URL和不符合爬虫规则的链接,比如防止爬虫陷入死循环或者访问非目标网站的链接。 5. **存储器(Storage)**:将抓取的网页内容和元数据存储起来,供后续分析使用...

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

    在Larbin中,这些参数通常用于配置搜索引擎的行为,如设定抓取URL、代理服务器等。 在`main`函数内部,首先创建了一个全局对象`glob`,它是`global`类的一个实例,负责处理大部分的初始化工作,包括解析命令行参数...

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

    tar zxvf larbin-2.6.3.tar.gz cd larbin-2.6.3 ``` 2. **运行配置脚本** 运行`configure`脚本来检测系统环境,并生成Makefile: ``` ./configure ``` 3. **处理编译错误** 如果在执行`configure`时出现`...

    larbin 分析和win下移植

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

Global site tag (gtag.js) - Google Analytics