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之间可以配置成负载均衡或者故障转移。
本文地址:https://blog.csdn.net/ifenggege/article/details/107460891