Flume内置的很大功能强大的Source、Channel和Sink的实现,并且这些实现可以自由组合,同时,Flume的拓扑结构也和灵活,可以根据不同的应用场景选择不同的架构,下面示例Flume常用的配置。
Avro
Avro是一种协议,在分布式系统中广泛用于节点之间的数据交互,Flume可以把一个具体的Avro数据端口作为数据源来收集数据。
- 编写Avro Source配置文件avro.conf
>vim avro.conf
#defined name of source , channel and sink
a1.sources = r1
a1.sinks = k1
a1.channels = c1
#configure avro source
a1.sources.r1.type = avro
a1.sources.r1.channels = c1
a1.sources.r1.bind = 0.0.0.0
a1.sources.r1.port = 4141
#configure logger sink
a1.sinks.k1.type = logger
#configure channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
#bind source and sink to channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
- 创建用户测试的文件
>echo "Hello World" >> log.00
- 启动Flume agent
>./flume-ng agent -f ../conf/avro.conf -n a1 -Dflume.root.logger=INFO,console
- 利用Avro客户端向agent发送数据
>./flume-ng avro-client -H 0.0.0.0 -p 4141 -F ../temp/log.00
- 在agent控制台会看到如下信息
16/11/06 21:52:08 INFO ipc.NettyServer: [id: 0x5e51d2a3, /192.168.11.130:45335 => /192.168.11.130:4141] OPEN