大数据干货系列(八)--Flume总结



本文共计1365字,预计阅读时长六分钟



Flume总结

 

本质

Flume是一个分布式可信任的弹性系统用于高效收集汇聚和移动大规模日志信息从多种不同的数据源到一个集中的数据存储中心

、Flume解决了什么问题

• 支持在日志系统中定制各类数据发送方用于收集数据

• Flume提供对数据进行简单处理并写道各种数据接收方可定制的能力

– 支持各种接入资源数据的类型以及接出数据类型

– 支持多路径流量多管道接入流量多管道接出流量上下文路由等

– 可以被水平扩展

 

、Flume Core

3.1外部架构

0) Event事件Flume使用Event对象来作为传递数据的格式是内部数据传输的最基本单元由两部分组成转载数据的字节数组+可选头部

1) Data Generators数据发生器:facebook,twitter)产生数据的地方

2) Agent代理器从发生器接收数据或者从其他的Agent接收然后迅速的将获取的数据传给下一个目的节点Agent

3) Data Collector数据收容器从各个agent上汇集数据并将采集到的数据存入到HDFS或者HBase

 

3.2 Agent组件


Agent主要由Source、Channel、Sink三个组件组成其他可选的组件还有Intercepter,Selector。

1) Source

• 该外部源将它的事件以Flume可以识别的格式发送到Flume

• 当一个Flume源接收到一个事件时其将通过一个或者多个通道存储该事件

2) Channel通道

• 采用被动存储的形式即通道会缓存该事件直到该事件被sink组件处理

• 可以通过参数设置event的最大个数

• Flume通常选择FileChannel,而不使用Memory Channel

– Memory Channel:内存存储事务吞吐率极高但存在丢数据风险

– File Channel:本地磁盘的事务实现模式保证数据不会丢失(WAL实现

3) Sink 

• Sink会将事件从Channel中移除并将事件放置到外部数据介质上

– 通过Flume HDFS Sink将数据放置到HDFS或者放置到下一个FlumeSource,等到下一个Flume处理

– 对于缓存在通道中的事件,SourceSink采用异步处理的方式

• Sink成功取出EventEventChannel中移除

• Sink必须作用于一个确切的Channel

• 不同类型的Sink:

– 存储Event到最终目的的终端:HDFS、Hbase

– 自动消耗:Null Sink

– 用于Agent之间通信:Avro

4) Interceptor拦截器

• 位于Source的一组拦截器按照预设的顺序必要地方对events进行过滤和自定义的

处理逻辑实现

• app(应用程序日志) source 之间的app日志进行拦截处理的也即在日志进入到source之前对日志进行一些包装清新过滤等等动作

• 官方上提供的已有的拦截器有

– Timestamp Interceptor:eventheader中添加一个key:timestamp,value为当前的时间戳

– Host Interceptor:eventheader中添加一个key:host,value为当前机器的hostname或者ip

– Static Interceptor:可以在eventheader中添加自定义的keyvalue

– Regex Filtering Interceptor:通过正则来清洗或包含匹配的events

– Regex Extractor Interceptor:通过正则表达式来在header中添加指定的key,value则为正则匹配的部分

• flume的拦截器也是chain形式的可以对一个source指定多个拦截器按先后顺序依次处理

5) selector 通道选择器

• 位于sourcechannel之间故称通道选择器主要有两种类型:

– Replicating Channel Selector (default):source过来的events发往所有channel

– Multiplexing Channel Selector:Multiplexing 可以选择该发往哪些channel

• Multiplexing 需要判断header里指定key的值来决定分发到某个具体的channel。

    在不同的服务器上运行我们可以在 source1上加上一个 host 拦截器这样可以通过header中的host来判断event该分发给哪个channel。

    而这里是在同一个服务器上host是区分不出来日志的来源的,这时可以通过设置上游不同的Source就可以区分日志的来源


3.3 Flume的可靠性

• Flume保证单次跳转可靠性的方式传送完成后该事件才会从通道中移除

• Flume使用事务性的方法来保证事件交互的可靠性

• 整个处理过程中如果因为网络中断或者其他原因在某一步被迫结束了这个数据会在下一次重新传输

• Flume可靠性还体现在数据可暂存上面当目标不可访问后数据会暂存在Channel等目标可访问之后进行传输

• SourceSink封装在一个事务的存储和检索中即事件的放置或者提供由一个事务通过通道来分别提供这保证了事件集在流中可靠地进行端到端的传递


、Flume案例框架

  

以上.


如果觉得本文对你有帮助,可以点个赞表示支持呗!

如果有任何意见和建议,也欢迎再下方留言~





 

关注这个公众号,每天22:00会有三道大数据面试题准时推送给你哦~


本文共计1365字,预计阅读时长六分钟



Flume总结

 

本质

Flume是一个分布式可信任的弹性系统用于高效收集汇聚和移动大规模日志信息从多种不同的数据源到一个集中的数据存储中心

、Flume解决了什么问题

• 支持在日志系统中定制各类数据发送方用于收集数据

• Flume提供对数据进行简单处理并写道各种数据接收方可定制的能力

– 支持各种接入资源数据的类型以及接出数据类型

– 支持多路径流量多管道接入流量多管道接出流量上下文路由等

– 可以被水平扩展

 

、Flume Core

3.1外部架构

0) Event事件Flume使用Event对象来作为传递数据的格式是内部数据传输的最基本单元由两部分组成转载数据的字节数组+可选头部

1) Data Generators数据发生器:facebook,twitter)产生数据的地方

2) Agent代理器从发生器接收数据或者从其他的Agent接收然后迅速的将获取的数据传给下一个目的节点Agent

3) Data Collector数据收容器从各个agent上汇集数据并将采集到的数据存入到HDFS或者HBase

 

3.2 Agent组件


Agent主要由Source、Channel、Sink三个组件组成其他可选的组件还有Intercepter,Selector。

1) Source

• 该外部源将它的事件以Flume可以识别的格式发送到Flume

• 当一个Flume源接收到一个事件时其将通过一个或者多个通道存储该事件

2) Channel通道

• 采用被动存储的形式即通道会缓存该事件直到该事件被sink组件处理

• 可以通过参数设置event的最大个数

• Flume通常选择FileChannel,而不使用Memory Channel

– Memory Channel:内存存储事务吞吐率极高但存在丢数据风险

– File Channel:本地磁盘的事务实现模式保证数据不会丢失(WAL实现

3) Sink 

• Sink会将事件从Channel中移除并将事件放置到外部数据介质上

– 通过Flume HDFS Sink将数据放置到HDFS或者放置到下一个FlumeSource,等到下一个Flume处理

– 对于缓存在通道中的事件,SourceSink采用异步处理的方式

• Sink成功取出EventEventChannel中移除

• Sink必须作用于一个确切的Channel

• 不同类型的Sink:

– 存储Event到最终目的的终端:HDFS、Hbase

– 自动消耗:Null Sink

– 用于Agent之间通信:Avro

4) Interceptor拦截器

• 位于Source的一组拦截器按照预设的顺序必要地方对events进行过滤和自定义的

处理逻辑实现

• app(应用程序日志) source 之间的app日志进行拦截处理的也即在日志进入到source之前对日志进行一些包装清新过滤等等动作

• 官方上提供的已有的拦截器有

– Timestamp Interceptor:eventheader中添加一个key:timestamp,value为当前的时间戳

– Host Interceptor:eventheader中添加一个key:host,value为当前机器的hostname或者ip

– Static Interceptor:可以在eventheader中添加自定义的keyvalue

– Regex Filtering Interceptor:通过正则来清洗或包含匹配的events

– Regex Extractor Interceptor:通过正则表达式来在header中添加指定的key,value则为正则匹配的部分

• flume的拦截器也是chain形式的可以对一个source指定多个拦截器按先后顺序依次处理

5) selector 通道选择器

• 位于sourcechannel之间故称通道选择器主要有两种类型:

– Replicating Channel Selector (default):source过来的events发往所有channel

– Multiplexing Channel Selector:Multiplexing 可以选择该发往哪些channel

• Multiplexing 需要判断header里指定key的值来决定分发到某个具体的channel。

    在不同的服务器上运行我们可以在 source1上加上一个 host 拦截器这样可以通过header中的host来判断event该分发给哪个channel。

    而这里是在同一个服务器上host是区分不出来日志的来源的,这时可以通过设置上游不同的Source就可以区分日志的来源


3.3 Flume的可靠性

• Flume保证单次跳转可靠性的方式传送完成后该事件才会从通道中移除

• Flume使用事务性的方法来保证事件交互的可靠性

• 整个处理过程中如果因为网络中断或者其他原因在某一步被迫结束了这个数据会在下一次重新传输

• Flume可靠性还体现在数据可暂存上面当目标不可访问后数据会暂存在Channel等目标可访问之后进行传输

• SourceSink封装在一个事务的存储和检索中即事件的放置或者提供由一个事务通过通道来分别提供这保证了事件集在流中可靠地进行端到端的传递


、Flume案例框架

  

以上.


如果觉得本文对你有帮助,可以点个赞表示支持呗!

如果有任何意见和建议,也欢迎再下方留言~





 

关注这个公众号,每天22:00会有三道大数据面试题准时推送给你哦~


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值