flume结构
flume类别
flume-og
采用master结构,引入zookeeper进行管理
采用相同的线程进行数据的读写操作,写的效率低会降低读取的效率
flume-ng
取消master结构,取消zookeeper,完全变成传输工具
采用不同的线程进行数据的读写操作
flume结构
flume以agent为基本单位
agent:
source, channel, sink
cli => source(接受客户端数据) => channel(数据传输保存) => sink(发送数据) => Des(kafka…)
agent结构:
1.单agent
结构图<后续添加>2.链式多agent
结构图<后续添加>3.多路复用agent
结构图<后续添加>
source
主要用来接收客户端的请求,并将数据发送到channel中
一般情况下一个source对应多个channel(当然source和channle之间可以是多对多的关系)
通常情况下使用不同的名称对source进行区分
常用source:
avro source | thrift source | exec source | kafka source | netcat source
exec source ==> shell 命令
配置:
#a1 agent name
#r1 source name
a1.sources = r1
#source type
a1.sources.r1.type = netcat
#netcat source的参数,不同类型的source具有不同的参数,具体后续章节在进行讲解
a1.sources.r1.bind = dev-hadoop-single.com
a1.sources.r1.port = 44444
#source的路由,配置source指向的channel
#c1 channel name
a1.sources.r1.channels = c1
channel
主要功能是数据的传输通道,source将数据传入channel,sink从channel中获取数据
常用channel:
Memory channel | JDBC Channel | Kafka channel | File channel
其中memory channel处理速度最快,jdbc/file channel可以将数据永久保存
配置:
#c1 channel name
a1.channels= c1
#channel type
a1.channels.c1.type = memory
#memory channel 的特殊参数
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
sink
主要用来从channel中读取数据,同时将数据按照定义的方式进行输出,sink从channel中获取数据,其中channel和sink之间是一对多的关系,正常情况情况下使用一对一的关系
常用sink:
Hdfs sink | Hive sink | File sink | HBase sink | Avro sink | Thrift sink | Logger sink
其中Avro sink一般用来讲数据传输到下一个agent
配置:
#k1 sink name
a1.sinks = k1
#sink type
a1.sinks.k1.type = logger
#指定sink从哪个channel中获取数据
a1.sinks.k1.channel = c1
flume event
flume 的agent三个模块之间传输的内容被称为event