Flume简介
Flume 是Cloudera 提供一个高可用的,高可靠的,分布式海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。
为什么选用Flume
Flume 最主要的作用就是实时读取服务器本地磁盘的数据,将数据写入到HDFS。
Flume Agent架构
输入叫作源(Source)
输出叫作接收器(Sink)
通道(Channel)提供了Source与Sink之间的胶水
它们都运行在叫作代理(Agent)的守护进程中。
下面是Apache Flume官网提供的架构图,与上图对比。
总结:
源(Source)将事件(Event)写到一个或多个通道(Channel)中。
通道(Channel)作为事件(Event)从源(Source)到接收器(Sink)传递的保留区。
接收器(Sink)只从一个通道(Channel)接收事件(Event)。
代理可能会有多个源、通道、接收器。
Flume事件
Flume传输的基本的数据负载叫作事件(Event)。事件由0个或多个头与体组成。头是一些键值对,可用于路由判断或者承载其他的结构化信息(比如事件的时间戳或是发出事件的服务器主机名)。
Flume从"Hello World开始"
agent1.sources=s1
agent1.channels=c1
agent1.sinks=k1
# 源
agent1.sources.s1.type=netcat
agent1.sources.s1.channels=c1
agent1.sources.s1.bind=0.0.0.0
agent1.sources.s1.port=12345
# 内存通道
agent1.channels.c1.type=memory
# 配置接收器的类型为logger,用于调试与测试。使用log4j将所有info级别的日志记录下来。
agent1.sinks.k1.type=logger
# 一个接收器只能从一个通道接收数据
agent1.sinks.k1.channel=c1
启动flume
bin]# ./flume-ng agent -n agent1 -c conf -f ../conf/flume.conf -Dflume.root.logger=INFO,console
安装nc:yum install -y nc
>nc localhost 12345
hello
可以在flume控制台看到接收到的数据hello