Flume概述
Flume是一种分布式,可靠且可用的服务,用于有效地收集,聚合和移动大量日志数据。它具有可靠的可靠性机制和许多故障转移和恢复机制,具有强大的容错能力。它使用简单的可扩展数据模型,允许在线分析应用程序。(多用于数据采集)
数据从哪里来
- 爬虫
- 日志数据 flume
- 传统型数据库 sqoop
Flume架构
- source:数据源
产生数据流,同时source将产生的数据流传输到channel
- channel:传输通道
用于桥接source和sinks
- sinks:下沉
从channel收集数据
- event:传输单元(事件)
Flume数据传输的基本单元,以事件的形式将数据送往目的地
Flume安装配置
- 修改配置文件
1
export JAVA_HOME=path
Flume的使用
- 单channel/sink
准备配置文件flumejob_telnet.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#smple.conf: A single-node Flume configuration
# Name the components on this agent 定义变量方便调用 加s可以有多个此角色
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source 描述source角色 进行内容定制
# 此配置属于tcp source 必须是netcat类型
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
# Describe the sink 输出日志文件
a1.sinks.k1.type = logger
# Use a channel which buffers events in memory(file) 使用内存 总大小1000 每次传输100
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel 一个source可以绑定多个channel
# 一个sinks可以只能绑定一个channel 使用的是图二的模型
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1通过命令执行
1
2
3
4
5[root@bigdata211 flume]# bin/flume-ng agent \
> --conf/ \ === 指定配置文件所在目录
> --name a1 \ === 指定别名
> --conf-file conf/flumejob_telnet.conf \ === 指定配置文件名
> -Dflume.root.logger==INFO,console === 指定输出日志到控制台
- 多channel/sink
- 准备配置文件
1 | flumejob_1.conf: |
1 | flumejob_2.conf |
1 | flumejob_3.conf |
- 通过命令执行
1
2
3
4
5
6
7
8
9
10
11
12
13
14[root@bigdata211 flume]# bin/flume-ng agent \
> --conf conf/ \
> --name a1 \
> --conf-file conf/flumejob_1.conf
[root@bigdata211 flume]# bin/flume-ng agent \
> --conf conf/ \
> --name a1 \
> --conf-file conf/flumejob_2.conf
[root@bigdata211 flume]# bin/flume-ng agent \
> --conf conf/ \
> --name a1 \
> --conf-file conf/flumejob_3.conf