前言

几乎停顿了1年之久,很久没写博客了,一方面是在院里做项目太忙,另一方面是自己也在摸索大数据领域的技术,终于自己搭起来了个基于kafka的分布式爬虫程序,可以抓网站的图像了,不多说,先看抓的图像数据。

目前存储在elastic中的图像记录条数为1.7亿条,用了13个节点,具体的图像数据存储在hbase中。抓取的数据量超过2T,并20台机器同时抓取保持每天800w条数据增长,每天这么大的数据量当然需要一个可靠的爬虫系统。

                                               

(图1 elasticsearch中存储图像的索引)                                        (图2 hbase中的图像)

内容:

爬虫架构图

在讲如何实现这种庞大的数据爬虫前先看下这个爬虫系统的整体架构图,方便大家理解这个爬虫能干什么事,要干什么事。

(图3 分布式爬虫架构图)

上图3的左边是我们今天要说的爬虫系统,图3 的右边是图像的存储应用系统。存储应用系统可以将我们抓的数据做实时的流计算和其他有价值的应用。

图像处理流程

图像抓下后可以对这些小图像进行拼接,然后对拼接后的图像做识别,分类。拼接流程如下:

(图4 图像拼接算法)

这么大的图那不是合成到牛年马月了,不用担心用分布式计算,这个用spark就可。算法原理后面单独讲,今天讲分布式爬虫系统。

拼接图像的应用

将google地图上的遥感图像抓取下来,进行图像拼接处理,可以做森林植被识别,建筑物识别,分析分析,比如某个深山老林新建了一个房,好家伙,竟然是违法建筑,被我查到了。下图是通过抓取google很多的小图像,拼接成一个陆家嘴的大卫星图,绝对高清。

(图5 图像拼接图)

爬虫系统组成

要抓数据首先需要知道要抓什么数据,因此必须有一个任务的主机来分配要抓的任务。然后,拿到这些任务的机器要能知道这些任务是什么。最后这些数据抓到了以后如何分类的保存,已经如何处理失败的任务,总不能某些任务抓图像失败后就丢掉了吧。因此我们爬虫系统主要有3部分组成。(1)任务的发放(2)抓取任务中的数据(3)将任务结果输出至对应的管道处理

这三部分我还是拆开放到后面的章节讲好了。

kafka的分布式爬虫系统相关推荐

  1. 基于SpringBoot和Vue的分布式爬虫系统(JavaWeb)

    前言 本期案例分享,学长给大家上点干货,手把手带你开发一个分布式爬虫系统.通过这个项目,你将学习到下面几点: 架构设计.如果设计一个通用的爬虫系统?一个系统支持爬取所有的网站. 分布式开发经验.分布式 ...

  2. 手把手教你搭建一个基于Java的分布式爬虫系统

    http://blog.51cto.com/xpleaf/2093952 1 概述 在不用爬虫框架的情况,经过多方学习,尝试实现了一个分布式爬虫系统,并且可以将数据保存到不同地方,类似MySQL.HB ...

  3. python分布式爬虫系统_三种分布式爬虫系统的架构方式

    分布式爬虫系统广泛应用于大型爬虫项目中,力求以最高的效率完成任务,这也是分布式爬虫系统的意义所在. 分布式系统的核心在于通信,介绍三种分布式爬虫系统的架构思路,都是围绕通信开始,也就是说有多少分布式系 ...

  4. 分布式爬虫系统的设计与实现(SourceForge.net数据爬取)

    目录 本科生毕业论文(设计)中文摘要 I 本科生毕业论文(设计)英文摘要 II 目录 I 图目录 III 表目录 IV 第一章 引言 1 1.1 研究背景 1 1.1.1 SourceForge.ne ...

  5. 如何设计一个复杂的分布式爬虫系统?

    一个复杂的分布式爬虫系统由很多的模块组成,每个模块是一个独立的服务(SOA架构),所有的服务都注册到Zookeeper来统一管理和便于线上扩展.模块之间通过thrift(或是protobuf,或是so ...

  6. python分布式爬虫系统_如何构建一个分布式爬虫:理论篇

    前言 本系列文章计划分三个章节进行讲述,分别是理论篇.基础篇和实战篇.理论篇主要为构建分布式爬虫而储备的理论知识,基础篇会基于理论篇的知识写一个简易的分布式爬虫,实战篇则会以微博为例,教大家做一个比较 ...

  7. kafka 怎么样连接图形化界面_从零开始搭建Kafka+SpringBoot分布式消息系统

    前言 由于kafka强依赖于zookeeper,所以需先搭建好zookeeper集群.由于zookeeper是由java编写的,需运行在jvm上,所以首先应具备java环境. (ps:默认您的cent ...

  8. 从零开始搭建Kafka+SpringBoot分布式消息系统

    前言 由于kafka强依赖于zookeeper,所以需先搭建好zookeeper集群.由于zookeeper是由java编写的,需运行在jvm上,所以首先应具备java环境. (ps:默认您的cent ...

  9. 分布式爬虫系统设计、实现与实战:爬取京东、苏宁易购全网手机商品数据+MySQL、HBase存储...

    http://blog.51cto.com/xpleaf/2093952 1 概述 在不用爬虫框架的情况,经过多方学习,尝试实现了一个分布式爬虫系统,并且可以将数据保存到不同地方,类似MySQL.HB ...

  10. 【文智背后的奥秘】系列篇——分布式爬虫之WebKit

    2019独角兽企业重金招聘Python工程师标准>>> 版权声明:本文由文智原创文章,转载请注明出处:  文章原文链接:https://www.qcloud.com/communit ...

最新文章

  1. 一口气说出 过滤器 和 拦截器 6个区别,别再傻傻分不清了
  2. mysqldump定时备份数据库
  3. ThinkPHP的安装
  4. types是什么意思中文翻译成_types 和 @types 是什么?
  5. ABAP 标准培训教程 BC400 学习笔记之二:Cross-client 和 Client-specific 的区别
  6. workflow initialization in webclient ui - Remote call case
  7. Exceptionless服务端+kibana部署实时日志纪要
  8. ip网络基础知识及原理_关于网络测试的5个命令
  9. Ubuntu下使用UFW配置防火墙
  10. RN PickerView组件
  11. 【C++ Primer】第五章学习笔记(循环和关系表达式)
  12. ubuntu-16.04安装程序报错 you might want to run 'apt-get -f install' to correct these
  13. NLP 算法工程师的学习、成长和实战经验
  14. 2018华为笔试题2
  15. spring动态代理的实现方式
  16. Blender学习入门(一)-Blender的下载和插件安装
  17. HTML视频自动播放
  18. Redis最详细讲解
  19. Python文件操作之把臂入林
  20. 【操作系统】操作系统

热门文章

  1. 利用随机矩阵理论(random matrix theory)确定微生物网络构建阈值
  2. Python安装pyqt4
  3. 小花语音机器人(零)-单片机控制驱动板PCB
  4. Power BI数据源之web
  5. 5V升压充电12.6V锂电池方案
  6. Teclast X80h安装linux,安装android-x86教程。(没法再贴吧发表,只有百度网盘在线阅读...
  7. Linux目录结构+Linux快捷键+Linux安装软件+Linux常用命令
  8. 2021研究生数学建模B题,空气质量检测
  9. UML统一建模语言简介
  10. 提交按钮html修改样式,css提交按钮样式