数据采集工具 -- Flume

1、Flume的定义

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

Flume有3个重要组件:Source、Channel、Sink 

特点:

  • 分布式:flume分布式集群部署,扩展性好
  • 可靠性好: 当节点出现故障时,日志能够被传送到其他节点上而不会丢失
  • 易用性:flume配置使用较繁琐,对使用人员专业技术要求高
  • 实时采集:flume采集流模式进行数据实时采集

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

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

dataX:

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

特点:

  • 易用性:没有界面,以执行脚本方式运行,对使用人员技术要求较高
  • 性能:数据抽取性能高
  • 部署:可独立部署

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

kettle:

        kettle开源ETL工具。支持数据库、FTP、文件、rest接口、hdfs、hive等平台的据进行抽取、转换、传输等操作,Java编写跨平台,C/S架构,不支持浏览器模式。

特点:

  • 易用性:有可视化设计器进行可视化操作,使用简单
  • 功能强大:不仅能进行数据传输,能同时进行数据清洗转换等操作
  • 支持多种源:支持各种数据库、FTP、文件、rest接口、hdfs、Hive等源
  • 部署方便:独立部署,不依赖第三方产品

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

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

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

2、Flume体系结构

Flume架构中的组件: 

  • Agent本质上是一个 JVM 进程,该JVM进程控制Event数据流从外部日志生产者那里传输到目的地(或者是下一个Agent)。一个完整的Agent中包含了三个组件Source、Channel和Sink,Source是指数据的来源和方式,Channel是一个数据的缓冲池,Sink定义了数据输出的方式和目的地。
  • Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据,包括avro、exec、spooldir、netcat等。
  • Channel是位于Source和Sink之间的缓冲区。Channel允许Source和Sink运作在不同的速率上。Channel是线程安全的,可以同时处理多个Source的写入操作及多个Sink的读取操作。常用的Channel包括:
    • Memory Channel是内存中的队列。Memory Channel在允许数据丢失的情景下适用。如果不允许数据丢失,应该避免使用Memory Channel,因为程序死亡、机器宕机或者重启都可能会导致数据丢失;
    • File Channel将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据;
  • Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。

    Sink是完全事务性的。在从Channel批量删除数据之前,每个Sink用Channel启动一个事务。批量事件一旦成功写出到存储系统或下一个Flume Agent,Sink就利用Channel提交事务。事务一旦被提交,该Channel从自己的内部缓冲区删除事件。
    Sink组件包括hdfs、logger、avro、file、null、HBase、消息队列等。

  • Event是Flume定义的一个数据流传输的最小单位。

3、Flume拓扑结构

串行模式

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

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

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

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

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

聚合模式 

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

 

4、Flume内部原理

  • 总体数据流向:Souce => Channel => Sink
  • Channel: 处理器、拦截器、选择器

具体过程: 

  • Source接收事件,交给其Channel处理器处理事件
  • 处理器通过拦截器Interceptor,对事件一些处理,比如压缩解码,正则拦截,时间戳拦截,分类等
  • 经过拦截器处理过的事件再传给Channel选择器,将事件写入相应的Channel。
    • Channel Selector有两种:
      • Replicating Channel Selector(默认),会将source过来的Event发往所有Channel(比较常用的场景是,用多个Channel实现冗余副本,保证可用性)
      • Multiplexing Channel Selector,根据配置分发event。此selector会根据event中某个header对应的value来将event发往不同的channel
  • 最后由Sink处理器处理各个Channel的事件
会计软件数据采集 4.1系统概述 1、能采集、转换目前常用的用友、金蝶、安易、新中大、金算盘、浪潮、远光、远方、华兴、灵狐、速达、万能、通用、友强、金蜘蛛、降龙、益和、易统、润嘉、奥林岛、煤碳财务、金思维、复旦天翼、天大天财、小蜜蜂、北京通用、北嘉、兴竹、电信新逸、博科、管家婆、三门、科发通用、中财信事行财务、金财以及Sap/Oracle等80余种财务软件各个版本的数据,并能快速定制特殊财务软件数据采集接口。从6.2版本开始开放了数据采集转换接口,用户可以自己定义转换对应关系,直接读取各种(包括未支持财务软件及手工账数据)财务软件导出的科目汇总数据及凭证分录数据(格式为EXCEL,大多数财务软件有此功能),从而使本审计软件彻底解决数据接口问题。 2、采用只读不写的采集技术,保证了被审单位财务数据的安全性、准确性和完整性。 3、采集、转换工具都使用向导式技术,采集、转换流程清晰、直观、易操作。 4、转换、重新记帐步骤合并到一起,用户将被审单位的数据进行转换完毕后,就可以切换到通用财务审计系统进行审计分析。 登录审计管理平台后如下图4.1-1所示,点击登录平台中间的“快捷切换”右边的下拉式箭头,在弹出的下拉式菜单中选择【02-数据采集转换系统】,数据采集转换系统操作界面功能如下图4.1-1左边树型结构所示: 图4.1-1 数据采集转换系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悠然予夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值