Hadoop生态系统之Flume

Flume概念(数据实时采集)

flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统

Flume版本更迭

老版本:flume-og 需要zookeeper的支持
新版本:flume-ng 不需要zookeeper的支持(本文说的都是新版本的)

Flume结构(核心为Agent)

在这里插入图片描述

完整工作流程

在这里插入图片描述
这种机制保证了数据传输的可靠与安全

核心(event)

本身是一个字节数组,可携带headers信息,是事务的基本单位,如果是文本文件,通常为一行记录,flume处理日志时流动的是event

组件剖析

source

职能:
专门从网络收集数据
可处理类型:
avro thrift exec jms spooling directory netcat sequence
generator syslog http legacy 甚至自定义

channel

职能:
存放的临时数据,缓存
可存放地点:
内存(memory),jdbc,磁盘(file)

sink

职能:
将数据发往目的地的组件
目的地类型:
hdfs,logger(控制台),avro,thrift,ipc,flie,hbase,solr,自定义

Interceptor(chain 责任链形式)

职能:
用于在Source与channel之间的数据包装或者数据清洗

Selector

职能:
选择器可以工作在在复制,路由模式下

Process

职能:
指定sink传递给下一个(或者多个)Agent的传递策略

组件配置(可配置项过多,可以自行百度,只贴基本配置)

1.基础配置(配置conf文件)

1)配置Agent的组件
a1.sources=r1
a1.channels=c1(可配置多个通道 以空格隔开)
a1.sinks=s1(可配置多个 以空格隔开)
(其中a1,r1,c1,s1都可以随意定义)
2)配置Channel绑定source与sink
a1.sources.r1.channels=c1(可对应多个通道 以空格隔开)
a1.sinks.s1.channel=c1(一个通道对应一个sink)
3)配置source
4)配置channel
5)配置sink

2.特定组件具体配置
source组件配置

1)配置avro类型source
接收数据是经过avro序列化的后数据 反序列化继续传输
在这里插入图片描述
设置类型,绑定ip与端口,本机IP定义为(0.0.0.0)
2)配置exec类型source
将linux产生的输出作为数据源
在这里插入图片描述
command的内容也可以是cat的文件内容也可以是其他
3)配置Spooling Directory类型的Source
监听目录(一旦有文件就当做source处理) 目录中文件不能修改 不能重名
在这里插入图片描述
4 )配置NetCat类型的Source
监听某个端口 接收的是字符串类型的数据 nc命令传输数据
在这里插入图片描述
在这里插入图片描述
5)Sequence Generator Source(用于测试)
序列发生器 不断产生事件 值从0开始每次递增1
在这里插入图片描述
6)http类型的source
将http post get(get仅用于实验)请求作为flume事件源
curl命令可以模拟一次http的Post请求
在这里插入图片描述
在这里插入图片描述

channel组件配置

1)内存类型的channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=50000(事件在信道中最大数目)
a1.channels.c1.transactionCapacity=1000(每个事务中最大事件数目)
2)磁盘文件类型的channel
在这里插入图片描述

sink组件配置

1)Logger Sink
放在日志中 控制台显示
要求:–conf参数制定的目录下有log4j的配置文件
在这里插入图片描述

2 )File Roll Sink
以文件保存日志信息
在这里插入图片描述
3)Avro Sink(多级流动的基础)
在这里插入图片描述
配置传入到下一个Agent(下一台服务器)的ip与端口
4)Hdfs Sink
将事件(event)写入到分布式文件系统中去
在这里插入图片描述

拦截器配置 (配置在source中)

1)Timestamp Interceptor
插入毫秒为单位的时间戳,若已有则保留原有的时间戳(默认保留可以设置覆盖)
在这里插入图片描述
2)Host Interceptor
数据中插入当前处理Agent的主机名与ip
在这里插入图片描述
3)static Interceptor
用户可自定义头信息的key-value
在这里插入图片描述
4)UUID Interceptor
在事件头中加入全局一致标志 UUID
在这里插入图片描述

5 ) Search and Replace Interceptor
在这里插入图片描述
在这里插入图片描述
6 ) Regex Filtering Interceptor
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7 ) Regax Extractor Interceptor

选择器配置(配置在source中)

1.复制模式配置(默认)
source内容复制 分发给多个sink(每个通道都有相同的数据)
在这里插入图片描述
2.路由模式配置

根据规则 选择通道进行转发
在这里插入图片描述
在这里插入图片描述

Process配置(在配置Agent组件中配置)

1)默认
2)Failover Sink Processor
在这里插入图片描述
为sinks分组 每个组每个sink有优先级 优先级高的先走event
sink发送事件失败,下一个最高优先级接着尝试发送
在这里插入图片描述
3)Load balancing Sink Processor
在这里插入图片描述
多个sink之间的负载均衡的能力(轮询(默认)或者随机方式,也可以自定义选择机制)通道只有一个对应多个sink
在这里插入图片描述

3.执行Agent的命令

在这里插入图片描述

Flume的特点

1:可靠性

事务保证了 节点出现故障的回滚 日志能够传送到其他节点从而不会产生丢失的情况

2:可恢复性

在这里插入图片描述
内存中可能因为断电或者宕机丢失数据

Flume使用场景

5.1、多个agent顺序连接

在这里插入图片描述

可以将多个Agent顺序连接起来,将最初的数据源经过收集,存储到最终的存储系统中。这是最简单的情况,一般情况下,应该控制这种顺序连接的
  Agent 的数量,因为数据流经的路径变长了,如果不考虑failover的话,出现故障将影响整个Flow上的Agent收集服务。

5.2、扇入流

在这里插入图片描述
  这种情况应用的场景比较多,比如要收集Web网站的用户行为日志, Web网站为了可用性使用的负载集群模式,每个节点都产生用户行为日志,可以为
  每 个节点都配置一个Agent来单独收集日志数据,然后多个Agent将数据最终汇聚到一个用来存储数据存储系统,如HDFS上。

5.3、多级流(扇出流)

在这里插入图片描述
当syslog, java, nginx、 tomcat等混合在一起的日志流开始流入一个agent后,可以agent中将混杂的日志流分开,然后给每种日志建立一个自己的传输通道。

5.4、load balance功能

在这里插入图片描述
  上图Agent1是一个路由节点,负责将Channel暂存的Event均衡到对应的多个Sink组件上,而每个Sink组件分别连接到一个独立的Agent上 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值