Flume的进阶介绍和使用(Interceptor,Selectors,Processors)

Flume的引入

  • 关于Flume的介绍和使用,官网已经给了比较详细的介绍。本文在这里做一个总结。
  • Flume是Apache下的一个开源的顶级项目,它是一个分布式,可扩展,高可用,高可靠的,轻量级数据收集框架,主要用来做数据的收集,聚合,和传输,相对与传统的数据导入导出框架Sqoop,它具备多方面优势,如,简单易用,Flume只需要一个简单的配置文件即可启动;功能全面,Flume在Source,Channel,Sink三个组件部分提供了很多功能,比如Source端多种类型以支持不同的数据收集需求,并可以自定义Source来满足特定的需求,Source的拦截器(Interceptor),Channel的Selector,Sink端的Processor(下文会一一介绍),并可配置压缩格式,定义文件格式等。

Flume基本概念

  • 关于Flume的基本概念,如,Agent,Source,Channel,Sink可以参照之前博客,该篇文章也有Flume 的基本使用介绍,本篇文章就不做过度阐述,这里主要拎出Flume中重要概念之一,Event。
  • Event: Event是Flume事件处理的最小单元,Flume在读取数据源时,会将一行数据(也就是遇到\r\n)包装成一个Event,它主要有俩个部分,Header和Body, Header主要是以Key,Value的形式用来记录该数据的一些冗余信息,可用来标记数据唯一信息,利用Header的信息,我们可以对数据做出一些额外的操作,如对数据进行一个简单过滤,Body则是存入真正数据的地方。

Flume架构

  • Flume本身的架构特点保证了端到端的数据一致性,数据经过Source被存入到Channel中,如果选择合适的Channel可以保证数据的零丢失,并且Channel 中的数据只有在被Sink 端消费(也就是数据传输到下一个Agent或写入到文件后)才会在Channel中删除相应数据。
  • Flume使用两个独立的事务分别负责从soucrce到channel,以及从channel到sink的事件传递。比如spooling directory source 为文件的每一行创建一个事件,一旦事务中所有的事件全部传递到channel且提交成功,那么source就将该文件标记为完成。同理,事务以类似的方式处理从channel到sink的传递过程,如果因为某种 原因使得事件无法记录,那么事务将会回滚。且所有的事件都会保持到channel中,等待重新传递。
  • Flume 官网介绍了Flume的两种架构选型,扇入和扇出模型,这两种架构需相互结合,并配合上Flume本身提供Load_balance,Failover 机制来使整体设计的架构稳定,可靠

这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值