数新网络官网已全新上线,欢送点击拜访
数新网络官网_让每个人享受数据的价值
1. 什么是 Flume?
Flume 是什么?咱们从 flume 的图标就能看出,它是一个水道。Flume 的图标上面是水,下面是木头。当咱们在山上的伐木场(source) 有很多木头须要运输到山下的时候,如果一棵一棵的去搬的话,太费膂力了,刚好山上有条小溪(channel),而它恰好又是通往山下的,咱们就能够把木头放到小溪里顺流而下,再在山下挖一个水槽(sink),让木头流向这个水槽,咱们须要用的时候就能够在这个水槽外面去取。而 flume 就是集(source+channel+sink)的一个日志数据采集工具。
编辑
图片来源于官网
2. Flume 概述
编辑
图 1 -1
Flume 是一个分布式、牢靠、和高可用的海量日志采集、聚合和传输的零碎。
Flume 能够采集文件,socket 数据包、文件、文件夹、kafka 等各种模式源数据,又能够将采集到的数据(下沉 sink)输入到 HDFS、hbase、hive、kafka 等泛滥内部存储系统中个别的采集需要,通过对 flume 的简略配置即可实现,Flume 针对非凡场景也具备良好的自定义扩大能力。因而,flume 能够实用于大部分的日常数据采集场景。
2 Flume 版本
1.Flume og 构造
编辑
图 2 -1
Flume 初始的发行版本目前被统称为 Flume OG(original generation),属于 cloudera,随着 Flume 性能的扩大,Flume OG 代码工程臃肿、外围组件设计不合理、外围配置不规范等毛病裸露进去。以后咱们应用的个别是 flume ng (apache Flume)。
Flume OG 由三个角色节点组成:agent,collector,master 组成。agent 负责从数据源收集数据,将数据集中到 collector,而后汇入数据库,主节点 master 负责管理,在 OG 版本应用中,应用稳定性依赖于 zookeeper。
2.Flume ng 根底构造
编辑
图 2 -2
Flume NG 只有一种角色的节点:代理节点(agent),没有 collector、master 节点。这是外围组件最外围的变动。去除了 physical nodes、logical nodes 的概念和相干内容。
agent 节点的组成也产生了变动。NG agent 由 source、sink、channel 组成。
3 Flume 事物及流程
- Flume 事务
编辑
图 3 -1
Put 事务流程
将数据先写入 putlist 长期缓冲区,查看 channel 内存是否足够合并(如果后续没有数据了,将在设定的工夫内合并),channel 内存不足,将回滚数据。
Take 事务流程
将数据推入长期缓冲区 takelist,并发送到 HDFS,如果数据全副发送胜利,则革除长期缓冲区 takelist,数据发送过程中如果出现异常,rollback 将长期缓冲区 takelist 中的数据归还给 channel 内存队列。
2.Flume agent 流程
编辑
图 3 -2
在 Source 接管到数据后,会把数据包装成 Event,并把数据交给 channel,由 ChannelProcessor 决定怎么交,交给谁。在 ChannelProcessor 流程中首先会将数据交给拦截器链,可进行数据清理,解决脏数据。拦截器尽量抉择简略的逻辑,不然会影响流式解决链条,整个流程都会变慢。后将数据交给 Channel 选择器 ChannelSelector,ChannelSelector 解决完将数据返还给 ChannelProcessor,依据 ChannelSelector 的抉择后果将数据写入对应的 channel。
每个 channel 都有一个独立的 SinkProcessor,sink 不是间接拉取数据的,sink 是由 SinkProcessor 决定怎么拉取数据的,默认的 SinkProcessor 一共有三种,别离是:
DefaultSinkProcessor:接管繁多的 Sink,不强制用户为 Sink 创立 Processor;LoadBalancingSinkProcessor:负载平衡片处理器提供在多个 Sink 之间负载平衡的能力;FailoverSinkProcessor:通过配置保护了一个优先级列表。保障每一个无效的事件都会被解决(故障转移)。
4 学习总结
Flume 次要是用来数据采集,将用户的信息以及行为日志保留到 HDFS 集群中或者本地文件夹中,相当于一个搬运工,flume 的单位是 agent。学习 flume 的重点是须要把握 source 和 channel 之间的事务、sink 和 channel 之间的事务流程原理,以及 source 和 channel 之间的复制和多路复用的原理、sink 和 channel 之间的负载平衡、故障转移等原理。
一 END 一