01Flume概述

一、Flume定义

Flume是Cloudera提供的一个高可用的、高可靠的,分布式的海量日志采集、聚合和传输的系统。					
Flume基于流式架构,灵活简单。
Flume最主要的作用就是,实时读取服务器本地磁盘的数据,将数据写入HDFS中。

二、Flume组成架构

1.Agent
	Agent是一个JVM进程,它以事件的形式将数据从源头送至目的,
	是Flume数据传输的基本单元。其主要有三个部分:Source、Channel、Sink。

2.Source
	Source是负责接收数据到Flume Agent的组件。Source组件可以
	处理各种类型、各种格式的日志数据,包括avro、thrift、exec、
	jms、spooling directory、netcat、sequence generator、
	syslog、http、legacy。
	
	Put事务流程:
		doPut:将批数据先写入临时缓冲区putList。
		doCommit:检查channel内存队列是否足够合并。
		doRollback:channel内存队列空间不足,回滚数据。
	
3.Channel
	Channel是位于source和sink之间的缓冲区。
	Flume自带两种Channel:MEmory Channel 和 File Channel。
		MemoryChannel是内存中的队列。MemoryChannel在不需要关心数据丢失的情景下适用。
		FileChannel将所有事件写到磁盘。是Flume持久化的Channel,系统宕机不会丢失数据。
		
	Take事务流程:
		doTake:先将数据取到临时缓存区takeList。
		doCommit:如果数据全部发送成功,则清除临时缓存区。
		doRollback:数据发送过程中如果出现异常,rollback将临时
					缓存区takeList的数据归还channel内存队列。
			
4.Sink
	Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到
	存储或索引系统、或者被发送到另一个Flume Agent。
	sink是完全事务性的。Sink组件目的地包括hdfs(最常用)、logger、avro、thrift、
		ipc、file、null、HBase、solr、自定义。
	
5.Event
	传输单元,Flume数据传输的基本单元,以事件的形式将数据从源头送至目的地。

三、Flume拓扑机构

1.点对点
	最简单的方式,两个flume,一个是source另一个是sink,中间有channel连接,
	有点像链式结构,后面可以接着加节点。
	
2.多副本结构
	特点是一个source,多个channel,而多个channel是同一内容,只不过后面sink不同。
	这种场景类似,读取一个日志文件,一份要交给hadoop离线处理,一份相同的交给spark实时处理。
	
3.负载均衡
	这种结构在大数据中经常使用,使用多个sink进行负载均衡。
	
4.聚合模式
	这种模式的设计针对的是集群,比如:正常的大数据服务不可能是
	单个服务器,几乎都是集群,那么每个集群都会产生日志文件,为了
	将每个日志文件进行收集,就采用这种Flume Agent聚合模式。

四、Flume Agent内部原理

1.使用"source"接收事件。

2.使用"channel处理器"处理事件。

3.将事件传递给拦截器链。

4.将每个事件给"channel选择器"。
	Channel Selectors有两种类型:
	Replicating Channel Selector(default) 和 Multiplexing Channel Selector。
		Replicating会将source过来的events发往所有channel;
		而Multiplexing可以配置发往那些channel。

5.返回写入事件Channel列表。

6.根据Channel选择器的选择结果,将事件写入相应Channel。

7.Sink处理器选择其中一个Sink去获取Channel数据,并将获取数据写入到下一个阶段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hao难懂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值