数新网络官网已全新上线,欢送点击拜访

数新网络官网_让每个人享受数据的价值

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事物及流程

  1. 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 一