一、flume架构
将多种数据源日志以实时的方式 传入到hadoop或者其他地方
分布式:主要是指可以处理分布式平台上的数据 进行汇总
架构:
CLIENT:客户端 数据产生的地方
event:数据传输中的一个数据包 通常对应日志中的一行
agent:代理 一个独立的jvm进程 主要处理数据采集
Source
Channel
Sink 与channel 是一个channel可以对应多个sink
b.启动Agent
cd conf
flume-ng agent --conf …/conf 配置文件的路径 可以省略掉的
–conf-file simple.conf /执行文件的路径
–name agent 名字
-Dflume.root.logger=INFO,console 在控制台打印日志级别info
简化版
cd conf
flume-ng agent --c …/conf 配置文件的路径 可以省略掉的
–f simple.conf /执行文件的路径
–n agent 名字
-Dflume.root.logger=INFO,console 在控制台打印日志级别info
source
exec source 执行语句
spooling directory source 监控一个目录
taildir source 监控 断点续传
http source 监控一个地址 用于接收HTTP的Get和Post请求
avro source 级联 可以接受多台服务器的日志数据 一起处理
kafka source kafka的数据直接传输到 flume中
netcat source 监控网络端口
Channel
Memory Channel
event保存在Java Heap中。如果允许数据小量丢失,推荐使用
File Channel
event保存在本地文件中,可靠性高,但吞吐量低于Memory Channel
Kafka Channel 把数据写到kafka中 此时可以不需要sink了,直接可以再kafka中处理
JDBC Channel
event保存在关系数据中,一般不推荐使用
Sink
Sink负责从Channel收集数据
常用Sink
avro sink (常用)
HDFS sink (常用)
Hive sink
Kafka sink
简单案例
a1.sources = s1
a1.channels = c1
a1.sinks = sk1
设置source类型为exec
a1.sources.s1.type = exec
a1.sources.s1.command = tail -f /root/data/exec.txt
source和channel连接
a1.sources.s1.channels = c1
a1.channels.c1.type = memory
指定sink的类型
a1.sinks.sk1.type = hdfs
a1.sinks.sk1.hdfs.path = /flume/events/%y-%m-%d/%H%M/%S
sink和channel进行连接
a1.sinks.sk1.channel = c1
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100