目录
💟这里是CS大白话专场,让枯燥的学习变得有趣!
💟没有对象不要怕,我们new一个出来,每天对ta说不尽情话!
💟好记性不如烂键盘,自己总结不如收藏别人!
💌Flume是基于流式的高可用,高可靠,分布式的海量日志采集、聚合和传输的系统。
🍠基本流程:Web服务器→Source→Channel→Sink→HDFS。
🧡Flume事务
💌在Source→Channel(Put推送)和Channel→Sink(Take拉取)之间存在事务。
Put事务

🍠doPut:将Source推送的数据先写入缓冲区putList。
🍠doCommit:检查Channel内存是否足够。
🍠doRollback:Channel内存不足,回滚数据。
Take事务

🍠doTake:将数据拉取到缓冲区putList。
🍠doCommit:如果数据全部发送成功,清空缓冲区putList。
🍠doRollback:数据发送异常,回滚数据。
🧡Flume内部原理

💌先将事件由Channel Processor传递给Interceptors(拦截器链),对数据进行丢弃/添加信息,再将事件给Channel Selector(选择器)决定如何发送数据给Channel,接着由Sink Processor决定将拉取的数据发送给哪个Sink。
Channel Selector复本&多路复用
🍠ReplicatingSelector(复本):默认策略,将一份数据发送给绑定的所有Channel。
🍠MultiplexingSelector(多路复用):可以配置数据发给哪个Channel,结合Interceptors使用,根据数据的头信息进行处理。
Sink Processor负载均衡&故障转移
💌Channel和Sink是1:N的关系。
🍠DefaultSinkProcessor:一个Channel只能绑定一个Sink。
🍠LoadBalancingSinkProcessor(负载均衡):以轮询的策略拉取Channel中的数据。
🍠FailoverSinkProcessor(故障转移):由当前优先级最高的Sink拉取。
🧡聚合
💌多台服务器的Sink连接到一台服务器的Source。每台服务器部署一个Flume采集日志,集中传送到一台服务器的Flume,再由此Flume上传到HDFS、Hive、Hbase等,进行日志分析。
Flume是一个高可用的日志采集系统,其核心在于Put和Take事务,确保数据的可靠性。Put事务在Source到Channel间,数据先写入缓冲区,如果Channel内存不足则回滚;Take事务在Channel到Sink间,数据拉取后发送,异常则回滚。Flume内部采用ChannelSelector和SinkProcessor策略,实现数据复用、负载均衡和故障转移。通过多台服务器的Sink聚合,Flume能有效地集中日志并传输到存储系统进行分析。
205

被折叠的 条评论
为什么被折叠?



