flume调优

1 调整jvm参数

    修改conf下flume-env.sh

      -Xms  -Xmx参数,具体根据机器内存分配

  CDH中的我修改的是,将这个参数修改了下:

                     Agent 的 Java 堆栈大小(字节)1g

用ps -ef | grep pid查看

flume    29416  3102 26 12:02 ?        00:00:14 /usr/local/java/jdk1.8/bin/java -Xmx20m -Djava.net.preferIPv4Stack=true -Duser.home=/var/lib/flume-ng -Xms1073741824 -Xmx1073741824 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/flume_flume-AGENT-990e88397d411fad12ae8a7251c28b37_pid29416.hprof -XX:OnOutOfMemoryError=/usr/local/cm5/cm-5.13.0/lib64/cmf/service/common/killparent.sh -Dflume.monitoring.type=HTTP -Dflume.monitoring.port=41414 -cp /usr/local/cm5/cm-5.13.0/run/cloudera-scm-agent/process/3

2 调整channel的容量

   中间出现了错误信息

     Space for commit to queue couldn't be acquired. Sinks are likely not keeping up with sources, or the buffer size is too tight

  解决办法:

         将capacity transactionCapacity调大,之前是10000 100 现在调整成100000 1000

       注意transactionCapacity的值必须大于sink的batchSize

3 调整sink的batchSize

     这个在2中已经说明,注意与transactionCapacity的值

    另外hdfsSink出现错误

java.lang.InterruptedException: Timed out before HDFS call was made. Your hdfs.callTimeout might be set too low or HDFS calls are taking too long.

   解决办法:

     master0.sinks.h1.hdfs.callTimeout=30000
master0.sinks.h1.hdfs.batchSize=1000

 调整hdfs的callTimeout

 

下面是别人的总结可供借鉴:

fllume经常被用在生产环境中收集后端产生的日志。一个flume进程就是一个Agent。要充分发挥flume的性能最主要的是要调好flume的配置参数。

flume agent配置分为三部分:Source, Channel,Sink. Soure用来接收数据源的数据并放到channel里里面。Channel用来缓存Source放入的数据。Sink用来从channel中取出缓存的数据,并写到下个Agent的Source、数据库、文件系统、kafka等。以下分成Source, Channel,Sink三部分讲flume性能调优要点。

 

1. Source

增加Source个(使用Tair Dir Source时可增加filegroups个数)可以增大Soure的读取数据的能力。例如:当某一个目录产生的文件过多时需要将这个文件目录拆分成多个文件目录,同时配置好多个Source 以保证Soure有足够的能力获取到新产生的数据。

batchSize参数决定Source一次批量运输到Channel的event条数,适当调大这个参数可以提高Soure搬运Event到Channel时的性能。

 

2. 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参数。

 

3. Sink 

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

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

      

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值