Day04_02_Flume日志采集系统
Day04_02_Flume日志采集系统
SmithFlume日志采集系统
一、概述
1、Flume是Cloudera提供的日志收集系统,后来贡献给了Apache
2、Flume是分布式的、可信赖的、可获取的服务基于高效的收集、移动或者传输大量的日志数据
3、到目前为止:Flume0.9x和Flume1.x — 两个版本完全不兼容
二、Flume的基本架构
1、Flume是web服务器上的日志传输到HDFS,中间就是Flume需要处理的阶段
2、重要概念:
①event事件:Flume本身是收集日志的,它将每一条日志封装成event事件
②event是Flume收集数据的基本单位
③event事件是从Source流向Channel再到Sink — 本身是一个字节数组
3、日志的特点是以JSON的形式体现的
4、Flume而言传输利用的是Agent对象 — Flume运行核心(Java进程)
5、Source是数据的来源,Channel是数据的缓存,Sink是数据的目的地
三、流动方式
1、单级流动
2、多级流动
3、扇出流动
4、扇入流动
四、入门案例
1、上传压缩包并解压
1 | tar -xvf apache-flume-1.6.0-bin.tar.gz -C /home/software/ |
2、配置文件
1 | # agent起个名称 |
3、配置完成之后进入bin目录,执行启动命令:
1 | sh flume-ng agent --name a1 -c ../conf/ -f ../data/basic.conf -Dflume.root.logger=INFO,console |
五、常用Source
1、netcat — 数据的形式是通过TCP请求接受或者发送,接受的只能是字符串形式的数据
2、AVRO — 要求接受到的数据必须经过AVRO序列化后的数据之后就可以通过AVRO进行反序列化操作
3、Spooling Directory — 监听指定的某一个目录,监听的目录一定要提前存在
4、HTTP — 表示接受HTTP的GET和POST请求作为Flume的源头
六、常用Channel
1、Memory Channel — 内存通道,在内存中以队列的形式存储的
①capacity — 表示这个Channel能够存储多少条数据,在实际开发中建议调节为10W左右
②transactionCapacity — 表示每次给Sink多少条数据,即意味着一次性传输多少条数据,根据实际开发中一般
建议调节为1000~3000左右
2、JDBC Channel — 表示把数据存储在数据库中 – 仅在测试环境中使用
注意:Flume到目前为止支持的数据库有且只有一个:Derby文件型数据库
3、File Channel — 文件通道,IO读写,性能低
4、内存溢出通道 — 官方未正式推出(测试阶段)
七、常用Sink
1、Logger Sink — 表示以日志的形式进行输出打印在控制台,要求在conf目录下必须有log4j.properties文件
2、File Roll Sink — 将日志写到本地文件中
3、HDFS Sink — 将日志写到分布式文件系统
4、AVRO Sink — 实现多级流动、扇入流动、扇出流动的基础(至少需要两个节点)








