Flume简介
Apache Flume 是一个分布式的、可靠的、可用的数据收集系统,它可以有
效地收集、聚合和移动大量的日志数据,这些数据可以从许多不同的来源转移到
一个集中的数据存储中。
Flume 特点
- 可靠性
Flume 的核心是把数据从数据源收集过来,再送到目的地。为了保证输送
一定成功,在送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除
自己缓存的数据。
Flume 使用事务性的方式保证传送 Event 整个过程的可靠性。
- 可恢复性
Events 在通道中执行,由该通道管理从失败中恢复。
Flume架构
- Event
flume最基本的数据单元,带有一个可选的消息头(headers)。如果是文本,event通常是一行记录,event也是事务的基本单位。
- Flow
Event从源点到达目的点的迁移的抽象。
- Client
客户端 操作位于源点处的Event,将其发送到Flume Agent。
- Agent
一个独立的JVM进程,包含组件Source、Channel、Sink。
- Source
用来消费传递到该组件的Event,完成对数据的收集,分成transtion和event打入到channel之中。不同的 source,可以接受不同的数据格式。
- Channel
主要提供一个队列的功能,对source提供中的数据进行简单缓存,作用是保证source到sink的数据传输过程一定能成功。
- Sink
取出Channel中的数据,进行相应的存储文件系统、数据库等
一个示例
- 编写Flume的配置文件
vi source_netcat.conf
#定义source,channel,sink的名字
a1.surces = s1
a1.channels = c1
a1.sinks = sk1
#对source的一些设置
a1.sources.s1.type = netcat
a1.sources.s1.bind = localhost
a1.sources.s1.port = 5678
a1.sources.s1.channels = c1
#对channel的一些设置
a1.channels.c1.type = memory
#对sink的一些设置
a1.sinks.sk1.type = logger
a1.sinks.sk1.channel = c1
- 启动Flume
【注意配置文件路径和Flume脚本路径】
flume-ng agent --name a1 -f source_netcat.conf -Dflume.root.logger=INFO,console
- 启动telne发送数据’
#安装telnet yum -y install telnet.x86_64
#启动telnet telnet localhost 5678
#发送数据 hello word ok
- 查看Flumen日志输出