flume性能调优

南墨12个月前技术文章587

1.Source性能调优

1.1 Spooldir Source

使用Spooldir Source采集日志数据时,若每行日志数据<100bp,可以通过将多行合并传输来提升传输性能

建议合并时根据数据长度来确定多少行合并为一个单位进行传输,合并后的长度建议在1K以上,譬如数据长度为50bp,那么可以采用20行合并为一个单位传输,配置示例如下:

server.sources.static_log_source.deserializer.maxBatchLine = 20

server.sources.static_log_source.deserializer.maxLineLength = 2048

1.2 Avro Source

Avro source支持SSL加密传输,但加密传输势必会影响传输性能,因此如果环境足够安全或传输的数据非敏感数据,建议采用非加密传输来提升传输性能,配置示例如下:

server.sources.avro_source.ssl = false

1.3 TailDir Source

如果TAILDIR监视的目录下有数千文件,按照正则表达式列出所有的文件会是一个比较耗费资源的过程,建议打开cachePatternMatching开关以提升性能,配置示例如下:

server.sources.taildir_source.cachePatternMatching = false

2. Channel性能调优

2.1 File Channel

使用File Channel会将缓存数据写入本地磁盘,由于需要频繁的读写dataDirs所在磁盘,若数据流量比较大,可能造成磁盘IO高,从而影响传输性能;如果IO响应时间经常超过10ms,那么建议将dataDirs设置在更多的磁盘上以降低磁盘IO,配置示例如下:

server.channels.file_channel.dataDirs = /data/data1/flume/datadir, /data/data2/flume/datadir, /data/data3/flume/datadir

2.2 Memory Channel

Memory Channel使用内存作为缓存,相较于File Channel有更好的性能,但使用Memory Channel可靠性较低,一旦宕机或其他意外发生,Channel中缓存的数据将会丢失,因此Channel的容量(capacity)不宜设置过大,另一方面Channel容量大小直接影响到flume进程占用内存大小,容量越大,占用的内存越大,GC耗时越长, 性能也越低;建议Channel容量设置为transactionCapacity的十倍,最好不要超过100000;配置示例如下:

server.channels.memory_channel.capacity = 100000

3. Sink性能调优

3.1 Hdfs Sink

Hdfs Sink支持文件滚动,滚动策略有按时间(hdfs.rollInterval)、文件大小(hdfs.rollSize)、Event个数(hdfs.rollCount)滚动,该配置对传输性能有影响,滚动约频繁对性能影响越大;超时时间(hdfs.callTimeout)也对传输数据有影响,尤其是HDFS压力较大的场景;

如何提升hdfs sink的性能?

1.       在业务允许的范围内,尽可能减小文件滚动频率;

2.       HDFS压力较大、flume日志中有比较频繁hdfs超时异常,参见5.5 性能瓶颈监控及调优中超时异常章节介绍调整hdfs.callTimeout设置;

配置示例如下:

server.channels.hdfs_sink.coalesceIncrements = true

3.2 Kafka Sink

kafka中写数据,一般要写若干副本(至少为1),Kafka Sinkkafka.producer.acks配置项可以配置需要等待的副本返回结果,若设为0,表示不需要等待,此参数可以提升Kafka Sink性能,但同时牺牲了可靠性,因此在有可靠性要求的场景下不建议使用,配置示例如下:

server.channels.kafka_sink.kafka.producer.acks = 0

3.3 HBase Sink

HBase sink每批次写入的数据如果存储在有限的cell中,是否合并计数对性能有较大的影响,将参数coalesceIncrements设置为true,即合并计数会提升HBase sink的性能,但计数异常时会影响整个批次,在可靠性要求较高的时候不建议采用,配置示例如下:

server.channels.hbase_sink.coalesceIncrements = true

HBase Sink支持向安全HBase写数据,如果向非安全HBase中写数据,可以使用AsyncHBaseSink,其采用异步的方式,性能会更高,但其不支持安全认证,配置示例如下:

server.channels.asynchbase_sink.type = asynchbase

server.channels.asynchbase_sink.coalesceIncrements = true


返回列表

上一篇:ES架构模型

下一篇:flink web监控

相关文章

Linux操作系统之Linux命令的返回值

Linux命令执行后无论成功与否都有一个返回值,如果为 0,则表示命令执行成功,其它值则表示执行错误。具体的错误码含义如下:  "OS error code  1: Operation not per...

NameSpaces状态一直为Terminating

NameSpaces状态一直为Terminating

问题描述删除ingress-nginx后发现ingress-nginx的命名空间一直为销毁中,大致查看了下发现命名空间中已经没有其他资源。该状态已经持续了十几个小时强制删除命名空间```Plain T...

阿里云ES跨账号数据迁移(reindex)

阿里云ES跨账号数据迁移(reindex)

1、背景与前置条件总的来说,阿里云es集群间数据迁移,有三中方式,logstash、reindex、镜像备份恢复,分别使用不同的场景,本文档主要讨论reindex方式进行账号下,ES跨集群迁移时,使用...

DRDS SQL闪回介绍

DRDS SQL闪回介绍

1、SQL闪回注意事项1、SQL闪回依赖RDS BINLOG保存时间,需要注意开启binlog备份。2、SQL闪回生成的恢复文件默认保存7天,闪回sql后需要尽快执行。3、SQL闪回精确匹配需要满足如...

kafka优选副本切换办法

      1. 以topic test为例,假设test的分布为以下状态。Topic:test PartitionCount:3 Replicati...

nginx服务企业应用

1、软件的分类1.1 常用来提供静态服务的软件Apache :这是中小型Web服务的主流,Web服务器中的老大哥,Nginx :大型网站Web服务的主流,曾经Web服务器中的初生牛犊,现已长大。Ngi...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。