9,flume 面试题,个人总结 :

1 ,如何实现 flume 传输数据的实时监控

使用第三方框架 ganglia

2 ,flume 的 source,sink,channel 的作用,你们的 source 类型是 ?

  1. source :搜集数据
  2. channel :数据缓存
  3. sink :把数据发送到目的地
  4. 常用 source 类型 :
    1 ,监控文件 :exec
    2 ,监控目录 :spooldir

3 ,flume 选择器 :

  1. 包括两种 :
    1 ,每个通道都复制一份文件,replicating 。
    2 ,选择性发往某个通道,Multiplexing 。

4 ,flume 调优 :

  1. source :
    1 ,增加 source 个数,可以增大 source 读取能力。
    2 ,具体做法 : 如果一个目录下生成的文件过多,可以将它拆分成多个目录。每个目录都配置一个 source 。
    3 ,增大 batchSize : 可以增大一次性批处理的 event 条数,适当调大这个参数,可以调高 source 搬运数据到 channel 的性能。
  2. channel :
    1 ,memory :性能好,但是,如果发生意外,可能丢失数据。
    2 ,使用 file channel 时,dataDirs 配置多个不同盘下的目录可以提高性能。
    3 ,transactionCapacity 需要大于 source 和 sink 的 batchSize 参数
  3. sink :
    增加 sink 个数可以增加消费 event 能力

5 ,事务机制 :

  1. channel : 是位于 source 和 sink 之间的缓冲区。
    1 ,flume 自带两种缓冲区,file channel 和 memory channel
    2 ,file channel : 硬盘缓冲区,性能低,但是安全。系统宕机也不会丢失数据。
    3 ,memory channel :内存缓冲区,性能高,但是有可能丢数据,在不关心数据有可能丢失的情况下使用。
  2. put 事务流程 : 源将数据给管道
    1 ,doPut :把数据写入临时缓冲区 putList 。
    2 ,doCommit :检查 channel 内存队列是否足够合并。
    3 ,doRollBack : 如果 channel 不行,我们就回滚数据。
  3. take 事务流程 :
    1 ,先将数据取到临时缓冲区 takeList。
    2 ,doCommit :如果数据全部发送成功,就清除临时缓冲区。
    3 ,doRollBack :如果数据发送过程中出现异常,doRollBack 将临时缓冲区的数据还给 channel 队列

9,flume 面试题,个人总结 :_第1张图片

6 ,flume 传数据会丢失吗 :

  1. 不会,因为 channel 可以存储在 file 中,而且 flume 本身是有事务的。
  2. 可以做 sink 组,一个坏掉了,就用另一个。

7 ,个人总结 : flume 总结

  1. transactionCapacity :事务容量大小,指的就是 putList 和 takeList 的大小
  2. transactionCapacity > batchSize

你可能感兴趣的:(9,flume 面试题,个人总结 :)