flume的核心架构,flume 中的核心概念,flume的操作步骤以及flume中的事务控制是如何设计

1. flume是什么

flume是一种日志收集或数据采集工具,可以从各种各样的数据源(服务器)采集数据传输(汇聚)到大数据生态的各种存储系统中(hdfs,hbase,kafka)等

2. flume的工作原理是什么:

flume是一种日志收集和数据采集的工具,将flume部署在日志服务器上,将日志文件通过source从日志服务器上读取文件,然后写入到channel中,然后sink在从channel中读取数据,写入到hdfs文件系统中

3. flume的核心架构

flume中的核心是由一个个agent组成的一个简单或者是复杂的传输通道,对于每一个agent都是从数据源读取数据,并发往下一个目的地,agent中三个组件的设计思想主要是为了,source和sink之间解耦合,实现异步操作.

4. flume 中的核心概念:

Source:

是agent中的采集组件,用来和数据源对接,以获取数据,source有各种各样的内置实现,比如我们实际生产中经常用到的taildir source 组件

Sink:

sink组件是agent中的下沉组件,用于往下一级agent传递数据或者是向最终的存储系统传递数据,sink组件从channel中取出event然后根据目标存储的需求,转成其他形式输出;

Channel:

传输通道组件,用来将source读取数据传递到sink过程中间的一个缓存组件

Event:

数据在channel中封装形式,source从数据源中读取数据,然后在封装成event对象,放入channel中,event封装对象主要由两部分组成:Headers 和 body ;

Headers:是一种map集合,用来携带一些kv的元数据信息.

body:就是一种字节数组byte[],装载具体的数据内容

interceptor 拦截器:

拦截器的工作是在source读取数据源之后,source产生的event对象会被拦截器根据需求进行拦截处理,比如自定义给event中的headers自定义key和value

channel selector:

一个source可以对接多个channel,则event在多个channel之间的传递策略,就是通过配置channel selector决定的,channel selector 有两种实现:replicating(复制) ,multiplexing(多路复用)

 sink processor :

当一个channel对应多个sink,sink就会组成一个sink组,event对象在sink中是如何进行传递的,就需要靠sink processor来决定,sink processor 有两种形式,一种是:load balance(负载均衡)及sink组中的每一个sink依次循环取channel中的event对象,另一种是:fail over (自动切换和恢复机制) sink组中的一个sink一直保持优先使用机制,其他的sink处于一种等待状态,当优先使用的sink挂掉之后,在从等待的sink 选则一个,接替上一个sink的工作;

Transaction:

事务控制机制,flume中有使用了两种独立的事务控制,一种是put操作:source 读取数据源,将event到channel中,另一种是take操作:sink从channel中获取event并写入到目标存储

事务控制的特点:

事务的实现程度,取决于运行时所选择的具体的组件实现类;

再好的组件的组合,也只实现到了at least once!(不会丢失数据,但可能产生重复传输)

事务实现的核心点,就是记录状态(比如source,记录自己完成的数据的偏移量

5. flume中的事务控制是如何设计的

1)  flume中的事务控制有两个独立的阶段,一种是put操作,一种是take操作 

2) put操作:source 读取数据到channel中这是一个事务控制,一旦事务中所有的事件全部传递到channel且提交成功,那么soucrce就将event batch标记为完成。如果source在将数据传递到channel过程中出现宕机,事务就会回滚,下一次开机就会根据上一次记录的状态从新读取数据,重新传递到channel中

3)take操作:sink从channel中取数据,如果不发生宕机,并且将sink取出的event对象写入到目标存储位置,这事务成功,返回ok,如果sink从channel中取event对象写入目标文件系统,出现某种原因导致这事务失败,事件就会回滚,所有的事件就会保持在channel中,等待重新传递

6.flume的操作步骤

1.先将flume安装在需要采集的服务器上,上传,解压,即可

2.根据不同的需求,选择要用的source 类型,channel 类型和 sink类型

3. 根据选择的类型,编写配置文件,将文件放入指定的目录中

4.在bin目录下启动客户端命令:bin/flume-ng agent  -n  a1  -c  conf/  -f  ./agentconf/xxx.properties  -Dflume.root.logger=INFO,console

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值