Flume面试题

什么是flume?

flume最初是分布式、高可用的日志收集系统。

不仅限于日志收集,还可以通过简单的配置收集不同数据源的海量数据并准确高效的传输到不同的数据中心

flume通过可扩展、插件化、组合式、高可用、高容错的设计模式,为用户提供了简单、高效、准确的轻量化大数据采集工具

基本架构

收集(source)、暂存(channel)、输出(sink)

agent:包含source、channel、sink等组件的一个flume进程。

一个event在一个agent中传输流程:source→interceptor→selector→channel→sink processor→sink→数据中心/下一个agent

event:一条信息或者一条数据

source:数据源

channel: event的临时缓冲区,source将event发送到channel缓存等待sink消费

sink:从channel获取event并发送到中心存储或者下一个agent

interceptor: event拦截器,根据配置文件在event的header中添加信息

selector: event选择器,选择event流入channel的方式,提供了复制和复用选择器

sink processor: event sink处理器,提供了故障转移处理器和负载均衡处理器

Source

提供了Kafka Source、Directory Source等

Channel

channel设计为event中转临时缓冲区,存储source收集且没有被sink消费的event,为平衡source和sink的速度,可视为flume内部的消息队列。

channel线程安全并且具有事务性,支持source写失败重写和sink读失败重读。

常用的channel有Memory Channel、File Channel、Kafka Channel

Sink

提供了HDFS Sink、Kafka Sink

拦截器

source将event写入channel之前,可以使用拦截器对event进行处理

已提供的拦截器有:时间拦截器、主机拦截器、UUID拦截器

选择器

source发送的event通过channel选择器来选择以哪种方式写入到channel中,flume提供了三种类型的channel选择器:复制channel选择器、复用channel选择器和自定义选择器

复制选择器:一个source以复制的方式将一个event同时写入到多个channel中,不同的sink可以从不同的channel中获取相同的event

复用选择器:复用选择器需要和拦截器配合使用,根据event的头信息中不同键值数据来判断event应该被写入到哪个channel中

负载均衡与故障转移

提高整个系统的容错能力和稳定性

实现这两个功能首先需要设置sink组,同一个sink组内有多个子sink,不同的sink之间可以配置成负载均衡或者故障转移。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值