flume学习笔记
一、Flume介绍
Flume是一个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力 Flume提供了从console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系统,支持TCP和UDP等2种模式),exec(命令执行)等数据源上收集数据的能力。
二、Flume 工作方式
flume分flume-og和flume-ng.
Flume-og采用多Master的方式,引入了ZooKeeper,可以保存配置数据,ZooKeeper本身可保证配置数据的一致性和高可用,另外,在配置数据发生变化时,ZooKeeper可以通知Flume Master节点。
Flume Master间使用gossip协议同步数据。
FLume-ng则取消了集中管理配置的 Master 和 Zookeeper,变为了一个纯粹的传输工具。
此外,其读入数据和写出数据由不同的工作线程处理由不同的工作线程处理。这也就意味着只要有数据,flume就会一直保持在传输状态,而不关心下游是否来得及处理数据,一旦数据量变大,则会造成数据积压,甚至磁盘空间撑爆。
三、Flume架构
Flume采用了分层架构:分别为agent,collector和storage。
agent里面包含3个核心组件:source、channel、sink。source是数据来源,sink是数据去向。
在整个数据传输过程中,流动的是event。事务保证是在event级别。
flume可以支持多级flume的agent,支持扇入(fan-in)、扇出(fan-out)。
(1) agent
agent的作用是将数据源的数据发送给collector。
Flume自带了很多直接可用的数据源(source),如:
 · 
 · 
 · 
  
同时提供了很多sink,如:
 · 
 · 
 · 
 · 
 · 
 · 
 · 
 · 
 
(2) collector
collector的作用是将多个agent的数据汇总后,加载到storage中。
它的source和sink与agent类似。
数据源(source),如:
 · 
 · 
 · 
sink,如:
 · 
 · 
 (3) 
storage是存储系统,可以是一个普通file,也可以是HDFS,HIVE,HBase,分布式存储等。
 (4) 
Master是管理协调agent和collector的配置等信息,是flume集群的控制器。
在Flume中,最重要的抽象是data flow(数据流),data flow描述了数据从产生,传输、处理并最终写入目标的一条路径。
 1. 
 2. 
注:Flume框架对hadoop和zookeeper的依赖只是在jar包上,并不要求flume启动时必须将hadoop和zookeeper服务也启动。
  
  
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号