三个组件的优化

Source

  • 增加Source个(使用Tair Dir Source时可增加FileGroups个数)可以增大Source的读取数据的能力。例如:当某一个目录产生的文件过多时需要将这个文件目录拆分成多个文件目录,同时配置好多个Source 以保证Source有足够的能力获取到新产生的数据。
  • batchSize参数决定Source一次批量运输到Channel的event条数,适当调大这个参数可以提高Source搬运Event到Channel时的性能。(Event 1K 左右时,500-1000 合适(默认为 100))

    Channel

    type 选择memory时Channel的性能最好,但是如果Flume进程意外挂掉可能会丢失数据。type选择file时Channel的容错性更好,但是性能上会比memory channel差。

  • 使用file Channel时dataDirs配置多个不同盘下的目录可以提高性能。

  • Capacity 参数决定Channel可容纳最大的event条数。
  • transactionCapacity 参数决定每次Source往channel里面写的最大event条数和每次Sink从channel里面读的最大event条数。transactionCapacity需要大于Source和Sink的batchSize参数。

    Sink

    增加Sink的个数可以增加Sink消费event的能力。Sink也不是越多越好够用就行,过多的Sink会占用系统资源,造成系统资源不必要的浪费。

  • batchSize参数决定Sink一次批量从Channel读取的event条数,适当调大这个参数可以提高Sink从Channel搬出event的性能。

flume-env.sh

  • 设置flume内存 ```bash

export JAVA_OPTS=”-Xms4000m -Xmx4000m -Dcom.sun.management.jmxremote”

VM heap 一般设置为 4G 或更高 -Xmx 与-Xms 最好设置一致,减少内存抖动带来的性能影响,如果设置不一致容易导致频繁 fullgc。 -Xms 表示 JVM Heap(堆内存)最小尺寸,初始分配; -Xmx 表示 JVM Heap(堆内存)最大允许的尺寸,按需分配。 如果不设置一致,容易在初始化时,由于内存不够,频繁触发 fullgc ```