flume原理

1.Flume

是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力;

2.Flume设计目标:

---》可靠性:当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end(Exactly once),Store on failure(当数据接收方crash时,将数据写到本地,待恢复后,继续发送),Best effort(数据发送到接收方后,不会进行确认)
---》可扩展性:Flume采用了三层架构,分别为Source,Channel和Sink,每一层均可以水平扩展
---》可管理性:所有Source, Channel和 Sink 由 Agent 统一管理,这使得系统便于维护

Paste_Image.png

3.各组件职责:

--》Source 组件:负责日志流入,比如从文件、网络、Kafka 等数据源流入数据,数据流入的方式有两种:轮训拉取和事件驱动;
--》Channel 组件:负责数据聚合/暂存,比如暂存到内存、本地文件、数据库、Kafka 等,日志数据不会在管道停留很长时间,很快会被 Sink 消费掉;
--》Sink 组件:负责数据转移存储,比如从 Channel 拿到日志后直接存储到 HDFS、HBase、Kafka、ElasticSearch 等。
一个Agent会同时存在这三个组件,Source和Sink都是异步执行的,相互之间不会影响

Paste_Image.png

4.整体结构,可以灵活配置

Source 上的数据可以复制到不同的通道上。每一个 Channel 也可以连接不同数量的 Sink。这样连接不同配置的 Agent 就可以组成一个复杂的数据收集网络。

Paste_Image.png
Paste_Image.png

(1)Flume Source组件

Source 组件负责接收输入数据,并将数据写入管道 (Channel)。Flume的Source支持:
Avro
Exec
HTTP
Spooling Directory
Kafka
Syslog
……
其中Spooling支持监视一个目录或者文件,解析其中新生成的事件

(2)Flume 过滤器(拦截器):

在 App(应用程序日志)和 Source 之间的,对 App 日志进行拦截处理的。官方已有的拦截器有(可以链式添加多个):
--》Timestamp Interceptor: 在 event 的 header 中添加一个 key 为 timestamp , value为当前的时间戳;
--》Host Interceptor: 在 event 的 header 中添加一个 key 为 host , value 为当前机器的 hostname 或者 ip;
--》Static Interceptor:可以在 event 的 header 中添加自定义的 key 和 value;
--》Regex Filtering Interceptor: 通过正则来清洗或包含匹配的 events;
--》Regex Extractor Interceptor: 通过正则表达式来在 header 中添加指定的key , value则为正则匹配的部分

(3)Flume Channel组件

Channel组件存储,缓存从 Source 到 Sink 的中间数据。可使用不同的配置来做Channel,例如:
内存
文件
JDBC
Kafka
……
其中使用内存性能高但不持久,有可能丢数据。使用文件更可靠,但性能不如内存

Flume Channel 选择器:

数据通过不同的 Channel 路由到不同的 Sink 中。官方已有的 Channel 选择器有:
--》Replicating Channel Selector (default): 将 Source过来的 events 发往所有Channel;
--》Multiplexing Channel Selector: 可以选择将数据发往哪些 Channel;

(4)Flume Sink组件

Sink 组件负责从管道中读出数据并发给下一个 Agent 或者最终的目的地。Sink 支持的不同目的地种类包括:
HDFS
HBASE
Avro
ElasticSearch
File
Logger
其它的 Flume Agent

Flume 序列化器:

在 Sink 和目标存储之间自定义数据序列化方式。官方已有的序列化器有:
--》Body Text Serializer: 忽略 event header,只将 event value 写到输出流;
--》Avro Event Serializer: 数据以 Avro 序列化,然后写到输出流;

Flume Sink 处理器:

在多个 Sink 之间选择下一个用来发送数据的 Sink 。官方已有的 Sink 处理器有:
--》Failover Sink Processor: 每次都从活动池选择优先级最高的 Sink 发送数据,当发送失败时放入冷却池直到超过冷冻期,一旦重新发送成功就重新进入活动池;
--》Load balancing Sink Processor : 每次都按照配置的方案从多个 Sink 中选择一个 Sink 发送数据。目前官方提供两种策略: round_robin, random ;


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • 博客原文 翻译作品,水平有限,如有错误,烦请留言指正。原文请见 官网英文文档 引言 概述 Apache Flume...
    rabbitGYK阅读 11,437评论 13 34
  • 介绍 概述 Apache Flume是为有效收集聚合和移动大量来自不同源到中心数据存储而设计的可分布,可靠的,可用...
    ximengchj阅读 3,513评论 0 13
  • Flume架构与实践 Flume是一款在线数据采集的系统,典型的应用场景是作为数据的总线,在线的进行日志的采集、分...
    mike_zhangliang阅读 2,083评论 0 2
  • 在互联网迅猛发展的今天 各大厂发挥十八般武艺的收集用户的各种信息,甚至包括点击的位置,我们也经常发现自己刚搜完一个...
    欢醉阅读 1,786评论 0 12
  • Flume1-架构及应用介绍 转载:http://blog.csdn.net/a2011480169/articl...
    raincoffee阅读 298评论 0 0