flume

flume

1.flume:一个高可用,高可靠的,分布式的海量日志采集,聚合,传输的系统,flume基于流式架构,灵活简单。

2.flume组成架构?
一个flume叫一个agent

Source数据输入端的常见类型有:
       文件夹
       exec :命令行,执行linux命令, tail -F   文件  监控文件变化
       syslog
       netcat
       avro:序列化

Channel是位于Source和Sink之间的缓冲区
Flume 自带两种Channel:Memory Channel 和File Channel
Memory Channel:基于内存缓存,在不需要关心数据丢失的情景下使用。
File Channel:是Flume的持久化Channel,系统宕机不会丢失数据。

Sink组件常见的目的地包括:
hdfs
kafka
logger
avro
File
自定义

Source -> Channel : 推送事件
Put事务流程:
doput ()-> putList()->doCommit()

doput:将批数据先写入临时缓冲区putList。
doCommit:检查channel内存队列是否足够放入数据。
doRollback:channel内存队列空间已满,回滚数据。

Channel -> Sink : 拉取事件
Take事务
doTake()->takeList()->doCommit()

doTake:先将数据取到临时缓冲区takeList
doCommit:如果数据全部发送成功,则清除临时缓冲区takeList
doRollback:数据发送过程中如果出现异常,rollback将临时缓冲区takeList中的数据归还给channel内存队列。

Agent
Agent是一个JVM进程,它以事件EVENT(形式类似json串形式)的形式将数据从源头送至目的,是Flume数据传输的基本单元。
Agent主要有3个部分组成:Source Channel Sink

Source:
Source是负责接受数据到Flume Agent的组件。Source组件可以处理各种类型,各种格式的日志数据,包括avro,thrift,exec,jms,spooling directory,netcat,sequence generator,syslog,http,legacy

Sink
Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统,或者发送到另一个Flume Agent。

Event
传输单元,Flume数据传输的基本单元,以事件的形式将数据从源头送至目的地。

Flume Agent内部原理

在这里插入图片描述

flume常见面试题

1.你是如何实现Flume数据传输的监控的?

 使用第三方框架Ganglia实时监控Flume

2.Flume的Source,Sink,Channel的作用?你们Source是什么类型?

1.作用:
   (1)Source组件是专门用来收集数据的,可以处理各种类型,各种格式的日志数据,包括avro,exec,spooling directory,syslog。
   
   (2)channel组件对采集到的数据进行缓存,可以存放在Memory或File中。
   
   (3)Sink组件是用于把数据发送到目的地的组件,目的地包括hdfs,logger,avro,file,kafka

2.我公司采用的Source类型为:

(1)端口为:a1.sources.r1.port = 8514
(2)ip为:a1.sources.r1.bind= 0.0.0.0
(3)接收方式为:a1.sources.r1.type = syslogudp

3.Flume的Channel Selectors?

Channel Selector,可以让不同的项目日志通过不同的     
Channel到不同的Sink中去。
官方文档上Channel Selectors 有两种类型:
Repliating Channel  Selector(default)和
Multiplexing Channel Selector
这两种Selector的区别是:Replicating会将source过来的events发往所有的channel,而Multiplexing可以选择发往那些Channel。

3.Flume的参数调优?

 (1)Source  
           增加Source个数可以增大Source的读取数据的能力。例如:当某一个目录产生的文件过多时,需要将这个文件目录拆分成多个文件目录,同时配置好多个Source以保证Source有足够的能力获取到新产生的数据。
           batchSize参数决定Source一次批量运输到Channel的event条数,适当调大这个参数可以提高Source搬运Event到Channel时的性能。
           
 (2)Channel
          type选择memory时Channel的性能最好,但是如果Flume进程意外挂掉可能会丢失数据。type选择File时Channel的容错性更好,但是性能会比memory channel差。
          使用file Channel时dataDirs配置多个不同盘下的目录可以提高性能。
          Capacity参数决定Channel可容纳最大的event条数。transactionCapacity参数决定每次Source往channel里面写的最大event条数和每次Sink从channel里面读单位最大event条数。
          transactionCapacity需要大于Source和Sink的batchSize参数。
          
 (3)Sink
          增加Sink的个数可以增加Sink消费event的能力。Sink也不是越多越好够用就行,过多的Sink会占用系统资源,造成系统资源不必要的浪费。
          bachSize参数决定Sink一次批量从Channel读取的event条数,适当调大这个参数可以提高Sink从Channel搬出event的性能。

4.Flume采集数据会丢失吗?

不会,Channel存储可以存储在File中,数据传输自身有事务。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值