flume 基本概念
flume基本概念
*****************************************************************************************************************************************************************************************
flume是一个分布式,可靠,高可用的海量日志聚合系统,支持在系统中定制各类数据发送方,用于收集数据;同时,flume提供对数据的简单处理,并写道各种数据接收方的能力。
flume在0.9Xand1.X之间有较大的架构调整。1.X版本之后改称Flume NG,0.9X的称为Flume OG。NWE 和OLD的分界领如下。
Flume NG的体系架构
Web Server --Source-Channel-Sink--HDFS(数据接收方)
运行Flume时,机器必须安装JDK6.0以上的版本
Flume NG HEXIN 核心组件讲解
Source:***************************************************************************************************************************
Source :完成对日志数据的收集,分成transtion和event打入到channel之中
flume提供了对各种source的实现,包括Avro Source,Exce Source,Spooling Directory Source,NetCat Source,Syslog Source,Syslog TCP Source,Syslog UDP Source,HTTP Source,HDFS SOURCE,etc
对现有程序改动最小的使用方式是使用直接读取程序原来记录的日志文件,基本可以实现无缝接入,不需要对现有的程序进行任何改动,直接读取文件Source,有两种方式:
Exec Source
以运行Linux命令的方式,持续的输出最新的数据,如tail -f 文件名指令,在这种方式下,取得文件名必须是指定的.
Spool Source
是检测配置的目录下新增的文件,并将文件中的数据读取出来
使用这种方式需要注意:1.copy到spool目录下的文件不可以在打开编辑,2.spool目录下不可包含相应的子目录(也就是不扫描下级目录)
如何使用Spool Source:
在实际使用的过程中,可以结合log4j使用,使用log4j的时候.将log4J的文件分割机制设置为1分钟一次,将文件copu到spool的监控目录,log4j有一个TimeRolling的插件,可以把log4j分割的文件传递到spool目录,基本实现了实时监控,Flume在传完文件之后,将会修改文件的后缀,变为.COMPLETED(后缀可配置)
Exec Source 和Spool Source比较
1.ExecSource可以实现对日志的实时收集,但是存在Flume不运行或者指令执行出错时,将无法收集到日志数据,无法保证日志数据的完整性.
2.SpoolSource虽然无法实现实时的收集数据,但是可以使用以某段时间为间隔的方式收割文件,趋近于实时.
3.如果应用无法实时以分钟分割日志文件的话,可以两种收集方式结合使用.
Sink:***************************************************************************************************************************
Sink 取出Channel中的数据,进行相应的储存文件系统,数据库,或者提交到远程服务器!
Flume也提供了各种Sink的实现,包括HDFS Sink(存储到HDFS中),Logger Sink(打印),Avro Sink(常用,一个Agent传入另一个Agent),File Roll Sink(存储成文件,设置时间间隔存储文件),Null Sink,HBase Sink(放入HBase中),etc
Flume Sink 在设置储存数据时,可以向文件系统中,数据库中,hadoop中储存数据,在日志数据较少时,可以将数据存储在文件系统中,并且设定一定的时间间隔保存数据,在日志数据较多时,可以将数据存储到hadoop中.便于日后进行相应的数据分析.
Channel:***************************************************************************************************************************
Flume Channel 主要提供一个队列的功能,对source提供中的数据进行加简单的缓存,
Flume 对于Channel,则提供了Memory Channel,JDBC Chanel,File Channel,etc
MemoryChannel 可以实现高速的吞吐,但是无法保证数据的完整性.
MemoryRecoverChannel 在官方文档的件以上已经建议使用FileChannel来替换
FileChannel保证数据的完整性和一致性,
FileChannel设置的目录和程序日志文件保存的目录设置不同的磁盘.以便提高效率
flume安装与测试 (JDK需要为1.6以上版本)
*************************************************************************************************************************************************************************
1.下载
2.解压到目录
3.进入目录下config目录修改配置文件(touch新增命令)
3.1 进入flume目录下执行命令
4.启动,命令: bin/flume-ng agent -n a1 -c conf -f conf/flume-conf.properties -Dflume.root.logger=INFO,console (显示控制台信息,-Dflume.root.logger=INFO,console)
5.测试 telnet 168.160.24.168 5678
*************************************************************************************************************************************************************************
Flume配置深入
*Flume部署种类
*flume流配置
*flume source
*flume sink
*flume channel
*flume interceptor
*flume 拓扑分析
flume 不熟种类 foo---------------------------------------->bar
多代理流程 source foo -> channel foo-> sink foo (avro) -----> source bar(avro)->channel bar -> sink bar
流合并
foo---丅
foo---> source(收集)
foo---丄
多路复用流
同一source源,通过三个channel管道,使用三个sink 转储到不同终端(HDFS,JMS,Agent bar)
flume流配置--------------------------------------------------------------------------------------------------------------------------------------------------------------
单一代理流定义
你需要通过一个通道来讲来源和接收器链接,你需要列出源,接受器和通道,为给定的代理,然后指向源和接收器及通道,一个源的实例可以指定多个通道,但只能指定一个接收器实例,格式如下:
如果转载请注明出处. -博客园:玲珑骰子安红豆:http://www.cnblogs.com/erbiaoge/