Review Flume

flume:

负责数据的收集,采集传输,并将数据存储在大数据生态系统。
数据采集:文件、文件夹、数据包,kafka.
数据存储:HDFS,hbase, hive, kafka
XXX收集,采集,传输
例如:扫码枪,打卡机,收割机,吸尘器


Flume内部模块


1、Source :与数据源对接,用于数据的收集,采集。
2、Channel: 数据的传输(一个flumeAgent内部)
3、Sink : 负责数据的输出 或 下沉(一个flumeAgent内部)


Flume内部运行机制

Flume安装部署


1、安装包上传解压
2、修改解压目录conf下的flume-env.sh
3、配置java_home


案例一 收集数据包
agent编写


1、实例三个角色(组件)
a1.sources = r1
a1.channels = c1
a1.sinks = k1


2、配置三个觉得的属性
a1.sources.r1.type = netcat
a1.sources.r1.bind = 192.168.100.201
a1.sources.r1.port = 44444
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
a1.sinks.k1.type = logger


3、建立联系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

执行脚本

bin/flume-ng agent -c conf -f tmpconf/a1.conf -n a1 -Dflume.root.logger=INFO,console
-c 指定flume配置文件的路径
-f 指定配置文件
-n 指定agent的名字(必须与配置文件内的名字相同)
设置日志级别 -Dflume.root.logger=INFO,console
在另一个节点发送数据
安装telnet yum install -y telnet
telnet 192.168.100.201 44444(端口)

案例二 监控收集文件夹

1、实例三个角色(组件)
2、配置三个觉得的属性
a1.sources.r1.type=spooldir a1.sources.r1.spoolDir=/export/servers/dirfile
a1.sinks.k1.type=hdfs a1.sinks.k1.hdfs.path=hdfs://node01:8020/spooldir/
3、建立联系
监控路径下已经处理过的数据添加后缀"COMPLETED"标识,表示已经处理过
新的数据没有表示,flume只处理没有标识的数据。

案例三 收集文件内新增的数据

1、实例三个角色(组件)
2、配置三个觉得的属性
a1.sources.r1.type=exec a1.sources.r1.command= tail -F 文件路径+文件名称
a1.sinks.k1.type=hdfs a1.sinks.k1.hdfs.path=hdfs://node01:8020/spooldir/
3、建立联系
 

案例四 agent级联

需求:node01采集数据,发送给node02,node02将数据写入HDFS
在第一节点实例agent
1、实例三个角色(组件)
2、配置三个觉得的属性
a1.sources.r1.type=exec a1.sources.r1.command= tail -F 文件路径+文件名称
a1.sinks.k1.type = avro
a1.sinks.k1.hostname = 192.168.100.202
a1.sinks.k1.port = 4141
3、建立联系

在第二节点实例agent
1、实例三个角色(组件)
2、配置三个觉得的属性
a1.sources.r1.type = avro
a1.sources.r1.bind = 192.168.100.202
a1.sources.r1.port = 4141
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://node01:8020/avro
3、建立联系
 

案例五 高可用Flum-NG配置案例failove

在node01节点配置
1、实例三个角色(组件)
agent1.channels = c1
agent1.sources = r1
agent1.sinks = k1 k2

设置组
agent1.sinkgroups = g1
agent1.sinkgroups.g1.sinks = k1 k2

2、配置三个属性
## set sink1
agent1.sinks.k1.type = avro
agent1.sinks.k1.hostname = node02
agent1.sinks.k1.port = 52020
#
## set sink2
agent1.sinks.k2.type = avro
agent1.sinks.k2.hostname = node03
agent1.sinks.k2.port = 52020
#
##set failover
agent1.sinkgroups.g1.processor.type = failover
agent1.sinkgroups.g1.processor.priority.k1 = 2
agent1.sinkgroups.g1.processor.priority.k2 = 1
agent1.sinkgroups.g1.processor.maxpenalty = 10000
#
 

3、建立联系
故障转移中
agent1.sinkgroups.g1.processor.priority.k1 设置每个sink的优先级
数字越大优先级越高,发生故障时启用优先级较低的sink
当优先级较高的恢复时,任务切换到较高优先级的sink
 

案例六:负载均衡load balancer

在第一个节点特定的配置

Sink组设置

a1.sinkgroups.g1.processor.type = load_balance
a1.sinkgroups.g1.processor.backoff = true
a1.sinkgroups.g1.processor.selector = round_robin
a1.sinkgroups.g1.processor.selector.maxTimeOut=10000

案例七:过滤器

A、B两台日志服务机器实时生产日志主要类型为access.log、nginx.log、web.log
C节点接收AB发送的数据,并写入HDFS. 写入的规则,同一类型的数据写入对应的文件夹下
/source/logs/access/20180101/**
/source/logs/nginx/20180101/**
/source/logs/web/20180101/**

发布了232 篇原创文章 · 获赞 300 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/bbvjx1314/article/details/105446609