目录
💟这里是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等,进行日志分析。