1:什么是Flume?

apache Flume 是一个可以收集列如日志,事件等数据资源,将这些数量极大的数据从各项数据资源中集中起来的存储工具,服务,或者数字集中机制,flume具有高可用分布式,配置工具,设计的原理也是基于将数据流,如日志数据从各种网站服务器上汇集起来存储到HDFS,Hbase等集中存储器中,结构如下图。
Flume介绍与原理

2:应用的场景

比如我们在做一个电子商务网站,我们想从消费用户中访问点特定的节点区域来分析消费者的行为或购买意图,这样我们就可以更加快速的将客户想要的推送到界面上,
实现这些我们需要将获取到她访问的页面以及电机的产品数据等日志数据信息收集并移交给Hadoop平台上去分析,而Flume正是帮我们做到这一点,现在流行的内容推送,比如广告定点投放以及新闻私人定制也是基于次,不过不一定适用Flume,毕竟优秀的产品很多。

3:Flume的优势

1:Flume可以将应用产生的数据存储到仍和集中存储器中,比如HDFS Hbase
2:当手机数据的速度大于将写入数据的时候,也就是当收集器信息遇到巅峰值时,这时候收集的信息非常大,甚至超过了系统的写入数据能力,这时候,Flume会在数据产生者和数据收容器间做出调整,保证能够在两者之间提供一个平稳的数据。
3:提供上下文路由特征
4:Flume的管理是基于事务,保证了数据在传送和接收时的一致性。
5:支持多路径流量 多管道接入流量,多管道输出流量,上下文路由等
6:可以被水平扩展

3:Flume结构

1:Flume的外部结构: Flume介绍与原理
如上图意思 数据发生器(如facebook Twitter)产生的数据被单个运行在数据发生器所在服务器上的agent(代理)所收集,之后数据收容器从各个agent(代理)上汇集数据并将采集到的数据存入到HDFS或者HBase中
2:Flume事件
事件作为Flume内部数据传输的最基本单元,它是由一个转载数据的字节数组(该数组是从数据源接入点传入,并传输给传输器,也就是HDFS/Hbase)和可选头部构成。
典型的Flume事件如下面结构所示
Header(数据头)Payload(有效载荷,有效负载) Event(事件)Flume介绍与原理 我们在讲Event(事件)私人定制时比如 Flume-Hbase-Sink插件是,获取的就是Event(事件)对其解析,并依据情况做过滤后,传输给Hbase/或者HDFS。
3:Flume agent(代理)
我们在了解Flume的外部结构之后知道了Flume内部有一个或者多个Agent(代理),对于每一个Agent来说,就是一共独立的守护进程(JVM)它从客户端哪儿接收 收集 或者从其他的Agent(代理)哪儿接收 迅速的将获取的数据传输给下一个节点的Sink或者Agent(代理)
下面是Flume的基本模型
Source(来源) Channel(引导)sink(下沉(水位下降)) Agent(代理)Flume介绍与原理
Agent主要由
Source(来源)channel(引导) Sink(下沉)三个组件组成的
Source
从数据发生器接收数据,并将接收的数据以Flume的Event(代理)格式传递给一个或多个铺道Channal(引导),Flume提供多种数据接收的方式比如Avro(阿夫罗),Thrift,Twitter%1等
Channel(引导)
Channel是一种短暂的存储容器,它将从source处接收到的Event(代理)格式化的数据缓存起来,直到它们被Sink(下沉)消费掉,它在Source(来源)和Sink(下沉)间起着一共桥梁的作用,Channal,是一个完整的事务,这一点保证了数据在首发的时候一致性,并且它可以和任意数量的Source(来源)和Sink(下沉)链接,支持的类型有:JDBC Channel File(文档)System(系统)Memort 等…
Sink
Sink将数据存储到集中存储器比如Hbase和HDFS,它从Channals(通道)消费数据(Events)并将其传递给目标地,目标地可能是另一个 Sink,也可能是HDFS,Hbase
它的组成举例
Flume介绍与原理
Flume介绍与原理
上面介绍的是Flume的主要组件,下面介绍一下Flume的插件
1:Interceptors 拦截器
用于Source和Channel之间,用来更爱或者检查Flume的Evevts(代理)数据
2:管道选择器 Channels Selectors(选择器)
在多管道是被用来选择使用那一条管道来传递数据(Event 代理)管道选择器又分为如下两种
默认管道选择器:每一个管道传递的都是相同的Events(代理)
多条通道选择器,依据每一个Event的头部的Header(头部)的地址选择管道
3:sink线程
用于**被选择的Sinks群中特定的Sink,用于负载均衡

相关文章:

  • 2021-07-27
  • 2021-08-20
  • 2022-12-23
  • 2021-06-18
  • 2021-10-03
  • 2022-01-03
猜你喜欢
  • 2022-01-20
  • 2021-11-18
  • 2021-12-23
  • 2021-07-19
  • 2022-01-20
  • 2021-06-20
相关资源
相似解决方案