Flume简介
Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexible architecture based on streaming data flows. It is robust and fault tolerant with tunable reliability mechanisms and many failover and recovery mechanisms. It uses a simple extensible data model that allows for online analytic application.
简单说,Flume就是一个分布式采集日志文件的服务
个人理解
每一个技术(工具)诞生都是为了解决一个痛点。Flume的诞生是为了实现数据的自动化导入。而且Flume拥有分布式,可靠,对HDFS良好支持的特性,所以Flume得到广泛的使用。Flume的作用与地铁类似,可以类比地铁,来了解Flume各核心组件的作用。
Flume核心组件
- Sourse 数据源
- Channel 频道(管道)
- Sink 数据输出源
安装使用
- 1.准备 java 运行环境
- 2.下载安装 Flume
进入Flume官网链接下载 - 3.解压
tar -zxvf apache-flume-1.9.0-bin.tar.gz flume
- 4.编写配置文件
#example.conf(flume目录下存在)
## 定义Agent的3个组件变量
a1.sources = r1
a1.sinks = k1
a1.channels = c1
## 设置Source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
## 设置Sink
a1.sinks.k1.type = logger
## 设置Channel
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
- 5.启动 Agent 采集数据
/opt/module/flume/bin/flume-ng agent --conf conf --conf-file example.conf --name a1
- 6.对指定端口发送数据
#连接该端口,并发送数据
telnet localhost 44444
如果能出现这些Event的日志打印,就表示这个入门小Demo测试成功啦
Flume 组件间关系
比喻 Flume 的数据抽取就像是地铁
- 1.总体上,Flume是在管道中传输数据。而地铁在管道中运输人;
- 2.Flume-Source 作为数据源,也就是地铁的入站口,有人(数据)输入;
- 3.Flume-Channel 作为管道,有运输,缓冲的作用。地铁的的隧道也有缓冲的功能——如果前面的地铁还没下完人,下一班地铁就要隧道中临时停车,直到上班地铁的人下车完毕;
- 4.Flume-Sink 作为输出源,在地铁上也有下车站点;
Flume | 地铁 |
---|---|
Source | 入站口 |
Channel | 隧道 |
Sink | 出站口 |
如果喜欢这篇文章,帮忙点个赞哦,谢谢!
👇👇👇
网友评论