赞
踩
1、概述(什么是、体系结构、拓扑结构、内部原理)
2、安装配置
3、应用(基础、高级)
无论数据来自什么企业,或是多大量级,通过部署Flume,可以确保数据都安全、及时地到达大数据平台,用户可以将精力集中在如何洞悉数据上。
Flume由Cloudera公司开发,是一个分布式、高可靠、高可用的海量日志采集、聚合、传输的系统。
Flume支持在日志系统中定制各类数据发送方,用于采集数据;
Flume提供对数据进行简单处理,并写到各种数据接收方的能力。
简单的说,Flume是实时采集日志的数据采集引擎。
Flume有3个重要组件:Source
、Channel
、Sink
特点:
适用场景:适用于日志文件实时采集。
其他数据采集工具还有:dataX、kettle、Logstash、Scribe、sqoop。
dataX:
特点:
易用性:没有界面,以执行脚本方式运行,对使用人员技术要求较高
性能:数据抽取性能高
部署:可独立部署
适用场景:在异构数据库/文件系统之间高速交换数据
kettle
特点:
适用场景:数据量及增量不大,业务规则变化较快,要求可视化操作,对技术人员的 技术门槛要求低。
Logstash
应用程序日志、事件的传输、处理、管理和搜索的平台。可以用它来统 一对应用程序日志进行收集管理,提供了Web接口用于查询和统计。
Scribe
是Facebook开源的日志收集系统,它能够从各种日志源上收集日志,存储到 一个中央存储系统(可以是NFS,分布式文件系统等)上,以便于进行集中统计分析 处理。
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包括:
Sink
不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到 存储或索引系统、或者被发送到另一个Flume Agent。
Sink是完全事务性的。在从Channel批量删除数据之前,每个Sink用Channel启 动一个事务。批量事件一旦成功写出到存储系统或下一个Flume Agent,Sink就 利用Channel提交事务。事务一旦被提交,该Channel从自己的内部缓冲区删除 事件。 Sink组件包括hdfs、logger、avro、file、null、HBase、消息队列等。
Event
是Flume定义的一个数据流传输的最小单位。
串行模式
将多个flume给顺序连接起来,从最初的source开始到最终sink传送的目的存储系 统。
此模式不建议桥接过多的flume数量, flume数量过多不仅会影响传输速率,而且一 旦传输过程中某个节点flume宕机,会影响整个传输系统。
复制模式(单Souce多Channel、Sink模式)
负载均衡模式(单Source、Channel多Sink)
聚合模式
总体数据流向: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的事件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。