Flume概述及其单节点安装部署
概述
概念:
Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的软件。
核心(执行流程):
Flume 的核心是把数据从数据源(source)收集过来,再将收集到的数据送到指定的目的地(sink)。为了保证输送的过程一定成功,在送到目的地(sink)之前, 会先缓存数据(channel),待数据真正到达目的地(sink)后,flume 在删除自己缓存的数据。
运行机制:
Flume 系统中核心的角色是 agent,agent 本身是一个 Java 进程,一般运行在日志收集节点。
每一个 agent 相当于一个数据传递员,内部有三个组件:
Source:采集源,用于跟数据源对接,以获取数据;
Sink:下沉地,采集数据的传送目的,用于往下一级 agent 传递数据或者往最终存储系统传递数据;
Channel:agent 内部的数据传输通道,用于从 source 将数据传递到 sink;
在整个数据的传输的过程中,流动的是 event,它是 Flume 内部数据传输的
最基本单元。event 将传输的数据进行封装。如果是文本文件,通常是一行记录, event 也是事务的基本单位。event 从 source,流向 channel,再到 sink,本身为一个字节数组,并可携带 headers(头信息)信息。event 代表着一个数据的最小完整单元,从外部数据源来,向外部的目的地去。
一个完整的 event 包括:event headers、event body、event 信息,其中event 信息就是 flume 收集到的日记记录。
应用场景:
当前 Flume 有两个版本。Flume 0.9X 版本的统称 Flume OG( original generation),Flume1.X 版本的统称 Flume NG(next generation)。由于 Flume NG 经过核心组件、核心配置以及代码架构重构,与 Flume OG 有很大不同,使用时请注意区分。改动的另一原因是将 Flume 纳入 apache 旗下,Cloudera Flume 改名为 Apache Flume。
安装部署(以node01节点为例)
- 上传安装包到数据源所在的节点上(放至/export/soft目录下)
- 解压
tar -zxvf apache-flume-1.8.0-bin.tar.gz -C ../servers
- 进入 flume 的目录,修改 conf 下的 flume-env.sh
cd /export/servers/apache-flume-1.8.0-bin/conf
cp flume-env.sh.template flume-env.sh
vi flume-env.sh
在文件末尾添加:
export JAVA_HOME=/export/servers/jdk1.8.0_65
验证
- 先在 flume软件包 的 conf 目录下新建一个文件
进入flume软件包目录下:
/export/servers/apache-flume-1.8.0-bin
创建文件并修改:
vi netcat-logger.conf
添加以下内容:
#定义这个 agent 中各组件的名字
a1.sources =r1
a1.sinks =k1
a1.channels=c1
#描述和配置 source 组件:r1
a1.sources.r1.type = netcat
a1.sources.r1.bind = node01
a1.sources.r1.port = 44444
#描述和配置 sink 组件:k1
a1.sinks.k1.type = logger
#描述和配置 channel 组件,此处使用是内存缓存的方式
#使用一个通道将事件缓存在内存
a1.channels.c1.type = memory
#设置储存在通道(管道)中的最大数量
a1.channels.c1.capacity =1000
#事务通道将从源获取或提供给接收器的最大事件数
a1.channels.c1.transactionCapacity = 100
#描述和配置 source channel sink 之间的连接关系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
- 启动 agent 去采集数据
进入flume软件包:
cd /export/servers/apache-flume-1.8.0-bin
启动:
bin/flume-ng agent -c ./conf -f ./conf/netcat-logger.conf -n a1 -Dflume.root.logger=INFO,console
启动成功:
- 测试
先要往 agent 采集监听的端口上发送数据,让 agent 有数据可采。随便在一个能跟 agent 节点联网的机器上,
以node02节点为例:
在node02节点上安装相应yum包:
yum -y install telnet
与node01的44444端口通信:
telnet node01 44444
在node02节点上模拟发送数据:
在node01节点上查看监控到的数据:
本文地址:https://blog.csdn.net/zh2475855601/article/details/110505521