flume复习

224 阅读1分钟

简介

flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。Flume采用的流式的Event(事件)的形式,其核心的结构为Agent细分可分为Source,channel,Sink 三个部分,而数据流动的方向是 Source =》Channel=》Sink

核心结构可简化为如下图

image.png

flume的结构解析

Source

flume的数据来源多种多样,支持Kafka,netcat和avro,thrift,Exec等数据源,支持使用拦截器,拦截过滤数据。下面先详述flume的拦截器,拦截器处在source和channel之间

拦截器

拦截器处在flume的source和channel之间,flume内置了多种拦截器,如Timestamp,Host,regex,也支持自定义拦截器。拦截器会根据设定的规范,对数据进行过滤或者处理,具体可以看这篇文章

Source类型

source支持连接多个channel,而sink只能连接一个source,source可通过拦截器或者轮询方式连接source image.png 下面是几个例子

flume的ExecSource例子flume的tailSource例子

channel

channel是连接sink和source的管道,一直有channel是保存数据的,因此channel的选型将极大的影响flume的性能和安全性,下面是几种常见的channel

image.png

channel selectors

配置channel选择器,具体参考,这篇文章

Replicating Channel Selector

每个channel都复制一份

Multiplexing Channel Selector

可配置转发规则,实现负载均衡和选择性接收

sink

sink只能连接一个source,支持多种sink方式,可参考这篇文章,hdfssink和kafkasink应该是用的比较多的