Hadoop-Flume整理(架构,组件以及三种形式)

一.什么是Flume?(收集日志)

Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集聚合和传输的系统

Flume支持在日志系统中定制各类数据发送方(console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系统,支持TCP和UDP等2种模式),exec(命令执行)等数据源上)收集数据的能力;

同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制,比如文本、HDFS、Hbase等)的能力。

当前Flume有两个版本Flume 0.9X版本的统称Flume-og(日志传输不稳定的现象尤为严重),Flume1.X版本的统称Flume-ng。

二.Flume的特点

flume的数据流由**事件(Event)**贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。你可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source。

a)可靠性

当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了**三种级别的可靠性保障,从强到弱依次分别为**:

end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。)
Store on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送)
Best effort(数据发送到接收方后,不会进行确认)。
b)可恢复性

靠Channel。推荐使用FileChannel,事件持久化在本地文件系统中(性能有点差)

三.什么是Event?

在整个数据的传输的过程中,流动的是event,即事务保证是在event级别进行的。那么什么是event呢
event将传输的数据进行封装,是flume传输数据的基本单位,如果是文本文件,通常是一行记录,event也是事务的基本单位。event从source,流向channel,再到sink,本身为一个字节数组,并可携带headers(头信息)信息。event代表着一个数据的最小完整单元,从外部数据源来,向外部的目的地去。
event数据流向图如下
在这里插入图片描述
一个完整的event包括:event headers、event body、event信息(即文本文件中的单行记录),如下所以:
在这里插入图片描述
其中event信息就是flume收集到的日记记录。

四.Flume架构解释

a)组件的架构

在这里插入图片描述

b)组件介绍

在这里插入图片描述
Event
Event:上边已经介绍了,是一个数据单元,带有可选的信息头。
Flow
Flow:Event从源点到达目的点的迁移的抽象。
Web Server
Client:操作位于源点处的Event,将其发送到Flume Agent。
Agent
Agent:一个独立的Flume进程,包含组件Source、Channel、Sink。
Source
Source是数据源的总称,我们往往设定好源后,数据将源源不断的被抓取或者被推送。常见的数据源有: ExecSource,KafkaSource,HttpSource,NetcatSource,JmsSource,AvroSource等等。
Channel
Channel用于连接Source和Sink,Source将日志信息发送到Channel,Sink从Channel消费日志信息;Channel 是中转日志信息的一个临时存储,保存有Source组件传递过来的日志信息
Sink
Sink负责取出Channel中的消息数据,进行相应的存储文件系统,数据库,或者提交到远程服务器。Sink在设置存 储数据时,可以向文件系统中,数据库中,hadoop中储数据,在日志数据较少时,可以将数据存储在文件系中,并 且设定一定的时间间隔保存数据。在日志数据较多时,可以将相应的日志数据存储到Hadoop中,便于日后进行相 应的数据分析。

c)三种形式

多代理流程,合并,复用流,以及高可用
i.第一种(设置多代理流程)
在这里插入图片描述
为了将数据流过多个代理或跳,前一代理的宿和当前跳的源需要被avro类型,宿指向源的主机名(或IP地址)和端口。

ii.第二种(合并)
日志收集中一个非常常见的情况是大量日志生成客户端向连接到存储子系统的几个消费者代理发送数据。例如,从数百个Web服务器收集的日志发送到写入HDFS群集的十几个代理。
在这里插入图片描述
这可以在Flume中通过配置一些具有avro接收器的第一层代理来实现,所有这些代理都指向单个代理的avro源(再次,您可以在这种情况下使用节俭源/汇/客户端)。第二层代理的此源将接收到的事件合并到单个通道中,该通道将由汇汇消耗到其最终目的地。

iii.第三种(复用流)
Flume支持将事件流复用到一个或多个目的地。这通过定义可以复制或选择性地将事件路由到一个或多个信道的流多路复用器来实现。
在这里插入图片描述
上面的示例显示了代理“foo”的源代码,将流程扇出到三个不同的通道。这个扇出可以复制或复用。在复制流程的情况下,每个事件都发送到所有三个通道。对于多路复用情况,当事件的属性与预配置的值匹配时,将事件传递到可用通道的子集。例如,如果一个名为“txnType”的事件属性设置为“customer”,那么它应该转到channel1和channel3,如果它是“vendor”,那么它应该去channel2,否则是channel3。可以在代理的配置文件中设置映射。

iv.flume ha方式
在这里插入图片描述
首先在三个web服务器中收集数据,然后交给collect,此处的collect是高可用的,首先collect01是主,所有收集到的数据发送给他,collect02只是出于热备状态不接受数据,当collect01宕机的时候,collect02顶替,然后接受数据,最终将数据发送给hdfs或者kafka。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值