初始大数据-02-日志采集大数据和爬虫采集大数据

6. 通过系统日志采集大数据

  • 目前使用最广泛的、用于系统日志采集的海量数据采集工具有 Hadoop 的 Chukwa、ApacheFlumeAFacebook 的 Scribe 和 LinkedIn 的 Kafka 等。

  • 以上工具均采用分布式架构,分布式采集速度更快。

Flume 的基本概念

初始大数据-02-日志采集大数据和爬虫采集大数据_第1张图片
此图借鉴网站
关键字

  • 事件驱动,事件一般是一条记录
  • Source 捕获事件,进行特定的格式化,Source 会把事件推入(单个或多个) Channel 中
  • Channel 是一个缓冲区,直到Sink完成之后才删除
  • Sink 负责持久化日志或者把事件推向另一个 Source

Flume 使用方法

  • 编写一个用户配置文件,配置文件当中描述 Source、Channel 与 Sink 的具体实现
  • 运行一个 Agent 实例
  • Agent 实例的过程中会读取配置文件的内容,这样 Flume 就会采集到数据
  • Flume 提供了大量内置的 Source、Channel 和 Sink 类型,而且不同类型的Source、Channel 和 Sink 可以进行灵活组合。

配置文件的编写原则

  1. 从整体上描述 Agent 中 Sources、Sinks、Channels 所涉及的组件
  2. 详细指定Agent中每个Sources,Sinks 和Channels的具体实现
    • 指定 Source 到底是什么类型的,是接收文件的、接收 HTTP 的,还是接收 Thrift 的。
    • 对于 Sink,需要指定结果是输出到 HDFS 中,还是 HBase 中等
    • 对于Channel,需要指定格式是内存、数据库,还是文件等
  3. 通过 Channel 将 Source 与 Sink 连接起来。
  4. 启动 Agent 的 shell 操作

7. 通过网络爬虫采集大数据

网络爬虫工具基本可以分为 3 类

  • 分布式网络爬虫工具,如 Nutch。
  • Java 网络爬虫工具,如 Crawler4j、WebMagic、WebCollector。
  • 非 Java 网络爬虫工具,如 Scrapy(基于 Python 语言开发)。

网络爬虫是一种按照一定的规则,自动地抓取 Web 信息的程序或者脚本
爬虫一般有数据采集、处理和存储 3 部分功能
初始大数据-02-日志采集大数据和爬虫采集大数据_第2张图片
上图引用网站

网络爬虫原理

  • 网络爬虫系统正是通过网页中的超链接信息不断获得网络上的其他网页的,相当于树形结构,一个网页url相当于根节点,树的子节点就是网页中的url。理论上树是无限层的,这就会收集大量的信息。

  • 不断从当前页面上抽取新的 URL 放入队列,直到满足系统的一定停止条件

  • 一般采用广度优先搜索算法采集网页,深度优先算法会容易陷入某个url内部。

网络爬虫工作流程

  1. 选取种子URL,将这些种子URL放入队列中
  2. 从待取的队列中拿出URL,解析DNS,得到主机的 IP 地址,并将 URL 对应的网页下载下来,存储到已下载网页库中。此外,将这些 URL 放进已抓取 URL 队列
  3. 解析已经抓取的URL,分析其中嵌套的URL,并将这些URL放入待取队列中,如此循环下去,直到获取数据达到某个条件停止。
    初始大数据-02-日志采集大数据和爬虫采集大数据_第3张图片
    上图出自网站

网络爬虫抓取策略

  • 面对谷歌 百度数以亿的网页,怎样才能尽可能的使网络爬虫尽可能地遍历所有网页?尽可能的扩大网页信息抓取的覆盖面,这是一个关键的问题。

  • 抓取策略决定了抓取网页顺序

网页间关系模型

  • 网页间的关系模式,是一个有向图模式。
  • 有向图就可以通过广度优先算法和深度优先算法进行遍历。

初始大数据-02-日志采集大数据和爬虫采集大数据_第4张图片
上图出自网站

网页分类

  • 从爬虫的角度对互联网进行划分,可以将互联网的所有页面分为 5 个部分:已下载未过期网页、已下载已过期网页、待下载网页、可知网页和不可知网页。
  1. 已下载未过期网页:抓取后下载存储到网页库的网页,其网页数据还没过期。
  2. 已下载过期网页:抓取放到网页库中,但由于原网页信息进行更新了,已经下载的网页就过期了。
  3. 待下载网页:在URL队列中还没下载保存到网页库。
  4. 可知网页:还没有抓取下来,也没有在待抓取 URL 队列中,但是可以通过对已抓取页面或者待抓取 URL 对应页面进行分析,从而获取到的网页
  5. 未可知网页:爬虫给不能抓取的网页。

常见的抓取策略

  1. 通过网络爬虫
    • 通用网络爬虫又称全网爬虫,爬行对象从一些种子 URL 扩展到整个 Web,主要为门户站点搜索引擎大型 Web 服务提供商采集数据。

    • 为提高工作效率,通用网络爬虫会采取一定的爬行策略。常用的爬行策略有深度优先策略广度优先策略

  • 深度优先策略

    • 跟深度优先算法类似,一个URL分支爬取结束再转换到其它分支,深度优先当一个分支很长时,就容易陷入其中,导致爬取的数据不全面。
    • 深度优会选择一个合适的深度,然后反复地搜索,直到找到解,这样搜索的效率就降低了。
    • 深度优先一般适用于数据量比较小的情况。
  • 广度优先策略

    • 广度优先策略按照网页内容目录层次深浅来爬行页面,处于较浅目录层次的页面首先被爬行。当同一层次中的页面爬行完毕后,爬虫再深入下一层继续爬行。
    • 广度优先算法适用于数据量比较大的情况
  1. 聚焦网络爬虫
  • 聚焦网络爬虫又称主题网络爬虫,是指选择性地爬行那些与预先定义好的主题相关的页面的网络爬虫。

    1)基于内容评价的爬行策略

    • Fish Search 算法,算法将用户输入的查询词作为主题,包含查询词的页面被视为与主题相关的页面,其局限性在于无法评价页面与主题相关度的大小。
    • Shark Search 算法 ,对 Fish Search 算法进行了改进。利用**空间向量模型**计算页面与主题的相关度大小
      (向量空间模式就是将文档转换成向量,再通过余弦值计算两个向量之间的距离,也就计算出两个文档之间的相似度了)
      2)基于链接结构评价的爬行策略
    • 网页时一种半结构化的结构,其结构时通过网页中的链接来维持的。
    • 因此就诞生了基于链接结构的算法PageRank。PageRank算法是通过(其所引用链接平均该链接的优先级)策略将网页中的链接进行优先级排序,爬取的顺序就按照优先级进行。
      初始大数据-02-日志采集大数据和爬虫采集大数据_第5张图片
      原图网站

    3)基于增强学习的爬行策略

    • Rennie 和 McCallum 将增强学习引入聚焦爬虫,利用贝叶斯分类器,根据整个网页文本和链接文本对超链接进行分类,为每个链接计算出重要性,从而决定链接的访问顺序。

    4)基于语境图的爬行策略

    • Diligenti 等人提出了一种通过建立语境图学习网页之间的相关度的爬行策略,该策略可训练一个机器学习系统,通过该系统可计算当前页面到相关 Web 页面的距离,距离近的页面中的链接优先访问。

网络爬虫策略的简单认识

  • 因为网络数据量很大,爬虫不是经所有的信息都爬取下来。爬虫的目的是尽可能多的爬取对我们有用的数据。

  • 那我们如何判断哪些数据是我们最有用的,对我们价值最高的呢?这就设计的爬虫策略问题了。其实策略也就是对我们要爬取的信息进行优先级排序。

  • 关于优先级问题,机器学习中有比价成熟的算法。如我们熟知的推介系统,就是以某个用户为主题,推选出该用户有可能感兴趣的。这样的算法也可以应用到,以我们爬虫主题出发,找出于主题很相近的链接,并进行优先级排序,按照优先级高低进行爬取就行了。

  1. 深层网络爬虫

网页按存在方式可以分为表层网页和深层网页。

  • 表层网页是指传统搜索引擎可以索引的页面,以超链接可以到达的静态网页为主。
  • 深层网页是那些大部分内容不能通过静态链接获取的,隐藏在搜索表单后的,只有用户提交一些关键词才能获得的网页。

深层网络爬虫体系结构包含 6 个基本功能模块(爬行控制器解析器表单分析器表单处理器响应分析器LVS 控制器)和两个爬虫内部数据结构(URL 列表和 LVS 表)。

其中,LVS(LabelValueSet)表示标签和数值集合,用来表示填充表单的数据源。在爬取过程中,最重要的部分就是表单填写,包含基于领域知识的表单填写和基于网页结构分析的表单填写两种。

你可能感兴趣的:(大数据)