1 、如何实现 flume 传输数据的实时监控
使用第三方框架 ganglia

2 、flume 的 source,sink,channel 的作用,你们的 source 类型是 ?
source :搜集数据
channel :数据缓存
sink :把数据发送到目的地
常用 source 类型 :
1 ,监控文件 :exec
2 ,监控目录 :spooldir

3 、flume 选择器 :
在这里插入图片描述
包括两种 :
1 ,每个通道都复制一份文件,replicating 。
2 ,选择性发往某个通道,Multiplexing 。

4 、flume 调优 :
source :
1 ,增加 source 个数,可以增大 source 读取能力。
2 ,具体做法 : 如果一个目录下生成的文件过多,可以将它拆分成多个目录。每个目录都配置一个 source 。
3 ,增大 batchSize : 可以增大一次性批处理的 event 条数,适当调大这个参数,可以调高 source 搬运数据到 channel 的性能。
channel :
1 ,memory :性能好,但是,如果发生意外,可能丢失数据。
2 ,使用 file channel 时,dataDirs 配置多个不同盘下的目录可以提高性能。
3 ,transactionCapacity 需要大于 source 和 sink 的 batchSize 参数
sink :
增加 sink 个数可以增加消费 event 能力
5 、事务机制 :
channel : 是位于 source 和 sink 之间的缓冲区。
1 ,flume 自带两种缓冲区,file channel 和 memory channel
2 ,file channel : 硬盘缓冲区,性能低,但是安全。系统宕机也不会丢失数据。
3 ,memory channel :内存缓冲区,性能高,但是有可能丢数据,在不关心数据有可能丢失的情况下使用。
put 事务流程 : 源将数据给管道
1 ,doPut :把数据写入临时缓冲区 putList 。
2 ,doCommit :检查 channel 内存队列是否足够合并。
3 ,doRollBack : 如果 channel 不行,我们就回滚数据。
take 事务流程 :
1 ,先将数据取到临时缓冲区 takeList。
2 ,doCommit :如果数据全部发送成功,就清除临时缓冲区。
3 ,doRollBack :如果数据发送过程中出现异常,doRollBack 将临时缓冲区的数据还给 channel 队列
6 、flume 传数据会丢失吗 :
不会,因为 channel 可以存储在 file 中,而且 flume 本身是有事务的。
可以做 sink 组,一个坏掉了,就用另一个。
7 、个人总结 : flume 总结
transactionCapacity :事务容量大小,指的就是 putList 和 takeList 的大小
transactionCapacity > batchSize

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐