大数据开发

Flume概述

2021-02-10  本文已影响0人  奋斗的蛐蛐

无论数据来自什么企业,或是多大量级,通过部署Flume,可以确保数据都安全、 及时地到达大数据平台,用户可以将精力集中在如何洞悉数据上。

Flume的定义

分布式、高可靠、高可用的海量日志采集、聚合、传输系统。支持在日志系统中定制各类数据发送方,用以采集数据,也提供对数据进行简单处理,并写到各种数据接收方的能力。简单来说:Flume是实时采集日志的数据采集引擎。

Flume架构.png

三个重要的组成部门:Source、Channel、Sink

特点:

适用场景:适用于日志文件实时采集。

其他数据采集工具还有:dataX、kettle、Logstash、Scribe、sqoop。

dataX是阿里开源软件异构数据源离线同步工具。实现包括关系型数据库(MySQL、 Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的 数据同步功能。

特点:

适用场景:在异构数据库/文件系统之间高速交换数据

kettle开源ETL工具。支持数据库、FTP、文件、rest接口、hdfs、hive等平台的据

进行抽取、转换、传输等操作,Java编写跨平台,C/S架构,不支持浏览器模式。

特点:

适用场景:数据量及增量不大,业务规则变化较快,要求可视化操作,对技术人员 的技术门槛要求低。

Logstash。应用程序日志、事件的传输、处理、管理和搜索的平台。可以用它来统 一对应用程序日志进行收集管理,提供了Web接口用于查询和统计。

Scribe是Facebook开源的日志收集系统,它能够从各种日志源上收集日志,存储到 一个中央存储系统(可以是NFS,分布式文件系统等)上,以便于进行集中统计分 析处理。

Flume体系结构

Flume体系结构.png

Flume拓扑结构

串行模式

将多个flume给顺序连接起来,从最初的source开始到最终sink传送的目的存储系统。此模式不建议桥接过多的flume数量, flume数量过多不仅会影响传输速率,而且一 旦传输过程中某个节点flume宕机,会影响整个传输系统

串型模式.png

复制模式(单Souce多Channel、Sink模式)

将事件流向一个或者多个目的地。这种模式将数据源复制到多个channel中,每个channel都有相同的数据,sink可以选择传送的不同的目的地。

复制模式.png

负载均衡模式(单Source、Channel多Sink)

将多个sink逻辑上分到一个sink组,flume将数据发送到不同的sink,主要解决负载 均衡和故障转移问题。

负载均衡模式.png

聚合模式

这种模式最常见的,也非常实用,日常web应用通常分布在上百个服务器,大者甚 至上千个、上万个服务器。产生的日志,处理起来也非常麻烦。用这种组合方式能 很好的解决这一问题,每台服务器部署一个flume采集日志,传送到一个集中收集日志的flume,再由此flume上传到hdfs、hive、hbase、消息队列中。

聚合模式.png

Flume内部原理

数据整体流向:Source->Channel(处理器、拦截器、选择器)->Sink

Flume内部原理.png

具体过程:

  1. Source接收事件,交给其Channel处理器处理事件

  2. 处理器通过拦截器Interceptor,对事件一些处理,比如压缩解码,正则拦截,时间戳拦截,分类等

  3. 经过拦截器处理过的事件再传给Channel选择器,将事件写入相应的Channel。

    Channel Selector有两种:

    1. Replicating Channel Selector(默认),会将source过来的Event发往所有 Channel(比较常用的场景是,用多个Channel实现冗余副本,保证可用性)
    2. Multiplexing Channel Selector,根据配置分发event。此selector会根据 event中某个header对应的value来将event发往不同的channel
  4. 最后由Sink处理器处理各个Channel的事件

上一篇下一篇

猜你喜欢

热点阅读