Flume就是一个用来采集日志数据的系统。它支持在日志系统中定制各类数据发送方,用于收集数据。
# Flume三大核心组件
- Source:数据源,Flume内置支持读取很多种数据源,基于文件、基于目录、基于TCP\UDP端口、基于HTTP、Kafka等等,也可以自定义
- Channel:临时存储数据的管道,接收Source发送的数据,它分为几种类型
- Memory Channel:使用内存作为数据的存储;优点是效率高,缺点是可能会丢失数据(断电等情况),且内存有限。
- File Channel:使用文件来作为数据的存储;优点是数据不会丢失,但速度比内存慢点。
- Spillable Memory Channel:使用内存和文件作为数据存储,即先把数据存到内存中,如果内存中数据达到阈值再flush到文件中;缺点是仍然存在数据丢失的风险。
- Sink:从Channel中读取数据并存储到指定目的地;Sink的表现形式有很多如打印到控制台、HDFS、Kafka等,常用的sink组件有:
- Logger Sink:将数据作为日志处理,可以选择打印到控制台或者写到文件中,主要在测试时使用。
- HDFS Sink:将数据传输到HDFS中,这个是比较常见的,主要针对离线计算的场景
- Kafka Sink:将数据发送到kafka消息队列中,这个也是比较常见的,主要针对实时计算场景,数据不落盘,实时传输,最后使用实时计算框架直接处理。
# Flume的下载与安装
服务器需要配置jdk环境,上传至/usr/local/soft/
目录下,然后进行如下操作
[root@bigdata04 ~]# cd /usr/local/soft/
[root@bigdata04 soft]# ls
apache-flume-1.11.0-bin.tar.gz hadoop
[root@bigdata04 soft]# tar -zxvf apache-flume-1.11.0-bin.tar.gz #解压
[root@bigdata04 soft]# cd apache-flume-1.11.0-bin/conf/
[root@bigdata04 conf]# mv flume-env.sh.template flume-env.sh # 重命名
# Flume入门案例
点击进入Flume官方入门文档 (opens new window),我将英文注释改成中文,入门代码示例如下:
# 给三大组件取个名字,a1是agent的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# source组件配置
a1.sources.r1.type = netcat
a1.sources.r1.bind = 0.0.0.0 # 如果想让所有都访问到使用 0.0.0.0
a1.sources.r1.port = 44444
# sink组件配置
a1.sinks.k1.type = logger
# channels组件配置
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# 将3个组件关联起来
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
官方文档:sources配置官方文档 (opens new window)、channel配置官方文档 (opens new window)、sink配置官方文档 (opens new window)(sink包含很多种),然后创建配置文件并执行
[root@bigdata04 conf]# pwd
/usr/local/soft/apache-flume-1.11.0-bin/conf #当前所在目录
[root@bigdata04 conf]# vi example.conf #创建配置文件,将上述文件输入
[root@bigdata04 conf]# cd ..
[root@bigdata04 apache-flume-1.11.0-bin]# nohup bin/flume-ng agent --conf conf --conf-file conf/example.conf --name a1 & 后台运行
[root@bigdata04 apache-flume-1.11.0-bin]# jps
2196 Jps
2074 Application # 这个就是正在运行的flume进程
[root@bigdata04 apache-flume-1.11.0-bin]# cat flume.log # 查看日志
可以在另一个窗口输入telnet localhost 44444
,然后输入任意内容按回车,然后观察日志尾部变化。