大数据开发:Flume日志系统架构详解

Flume在大型分布式平台当中,常常是作为日志收集环节的一个重要组成,尤其是在Hadoop为首的大数据技术生态当中,FLume+Kafka的组合也越来越常见。今天的大数据开发学习分享,我们就主要来讲讲FLume日志系统的架构分解。

Flume作为日志收集系统,典型的特点是,高可用、高可靠。Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
 

大数据培训:Flume日志系统架构详解


一、Flume架构分层

日志收集通常分为三层,分别是采集层、汇总层和存储层;其中采集层只负责数据的采集,采集效率要高,避免堆积数据;汇总层统一对采集层推过来的数据进行处理,维护数据的路由逻辑(就是要送到哪个存储层,是hdfs还是Hbase或者mysql、kafka等等);存储层就是存储数据了,存储层可以是各种不同的媒介如hdfs、kafka、hbase等等。

二、Flume组件

Source:完成对日志数据的收集,分成transtion和event打入到channel之中。

Channel:主要提供一个队列的功能,对source提供中的数据进行简单的缓存。

Sink:取出Channel中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器。

三、Flume核心概念

1)Agent

Flume中最核心的角色是agent,flume采集系统就是由一个个agent连接起来所形成的一个或简单或复杂的数据传输通道。

对于每一个Agent来说,它就是一个独立的守护进程(JVM),它负责从数据源接收数据,并发往下一个目的地。

Agent的3个组件的设计思想,主要考虑的是:

source和sink之间解耦合,以及异步操作;

每一个agent相当于一个数据(被封装成Event对象)传递员,内部有3个核心组件:

Source:采集组件,用于跟数据源对接,以获取数据;它有各种各样的内置实现;

Sink:下沉组件,用于往下一级agent传递数据或者向最终存储系统传递数据;

Channel:传输通道组件,用于从source将数据传递到sink。

2)Event

数据在channel中的封装形式;

Source组件在获取到原始数据后,需要封装成Event放入channel;

Sink组件从channel中取出Event后,需要根据目标存储的需求,转成其他形式的数据输出

Event封装对象主要有两部分组成:Headers和Body

header是一个集合Map[String,String],用于携带一些KV形式的元数据(标志、描述等)

body:就是一个字节数组byte[];装载具体的数据内容。

3)interceptor拦截器

拦截器,就是为用户提供添加数据处理逻辑的可能性

拦截器工作在source组件之后,source产生的event会被传入拦截器根据需要进行拦截处理

而且,拦截器可以组成拦截器链!

拦截器在flume中有一些内置的功能比较常用的拦截器

用户也可以根据自己的数据处理需求,自己开发自定义拦截器!

这也是flume的一个可以用来自定义扩展的接口。

4)级联串联(一般下游agent会使用高可用模式,有一个处于待机或者未工作状态)

5)事务机制

数据传输的三个语义:

At least once至少传输数据完整一次(不会丢失数据,但可能产生重复传输)

At most once至多传输数据完整一次(可能一次都不会成功,可能会丢失数据)

Exactly once数据不丢失且不重复实现完美传输

Flume并没有实现Exactly once!但可以实现at least once!因为Exactly once确实比较难实现!

Flume使用两个独立的事务:

put操作:source读取数据源并写入event到channel

take操作:sink从channel中获取event并写出到目标存储

事务实现的核心点是:记录状态!比如source,会记录自己完成拉取成功数据的偏移量。

关于大数据开发学习,Flume日志系统架构,以上就为大家做了初步的介绍了。大数据技术生态当中,分布式日志收集环节,Flume组件有着明显的优势,学习当中应当予以重视。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值