Flume笔记

Flume 笔记

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

总体架构图

在这里插入图片描述
flume的核心是把数据从数据源source收集过来,在将收集到的数据送到指定目的地(sink)。为了保证传输过程中不丢失数据,在送到目的地之前,会先缓存在通道中(channel),待数据发送到sink之,flume从通道中删除数据。

source不断的接收数据,将数据封装成一个一个event,然后将event发送给channel,sink会将channel中的event数据发送到指定的地方。

核心

event事件

数据从source采集,流向channel,最终流向sink的整个过程称之为一次事件。
event将传输数据进行封装,是flume传输数据的基本单位。

agent 进程

flume运行的核心就是agent,agent本身是一个java进程。
agent内部包含三个核心组件(source、channel、sink)

source

source组件是专门用来收集数据的。

channel

channel组件是专门用来存放临时数据的。

sink

sink组件是用于把数据发送到目的地的组件

特性

可靠性

事务型的数据传递,保证数据的可靠性

可恢复性

通道可以以内存或文件的方式实现,内存更快但不可恢复,文件较慢但提供了可恢复性。

source

类型说明
avro用于接收由flume发送的消息
exec用于执行shell命令后,将命令结果发送到flume
spooling Directory用于监听目录变化,读取变化目录名称信息
netcat用于监听某个端口,将接口接收到的数据发送给flume
sequence generator source自生成序号,将需要发送给flume
http用于监听http请求,将请求内容接收到数据发送给flume

sink

类型说明
logger sink日志控制台输出
File Roll Sink文件输出
hdfs sinkhdfs输出

channel

类型说明
memory内存通道
jdbc数据库通道
file文件通道
内存溢出通道(正式环境不建议使用)

selector路由

source+selector可以实现根据event中不同的值,将event向不同的channel分发。

interceptors拦截器

flume在运行阶段可以通过interceptors对event进行修改和删除。
可以定义多个拦截器,多个拦截器之间按定义顺序执行

类型说明
timestamp interceptors时间戳拦截器,会在event的header中添加时间戳数据
host interceptors主机名或ip拦截器,会在event的header中添加主机名或主机ip
static interceptors静态值拦截器,会在event的header中添加自定义数据
UUID interceptorsuuid拦截器,会在event的header中添加uuid
search and replace interceptors查找与替换拦截器,会替换event的信息内容
regex filtering interceptors正则过滤拦截器,满足的放过,不满足的丢弃
regex Extractor interceptors将正则匹配分组结果添加到header中,次拦截器可以将event内部的内容提取到event外部的header中

process

flume允许将多个sink进行分组,组内按照process的设定控制数据的分发策略。

类型说明
failover sink process向优先级最高的sink发送event,其他的不发送,需要提前设定sink的优先级
load balancing sink process以轮循或随机的方式实现负载均衡式的event分发
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值