当前位置: 首页 > news >正文

flume性能调优

作者:南墨

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 Sink的kafka.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

更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw

http://www.lryc.cn/news/420019.html

相关文章:

  • mysql 字符串转数组
  • UE基础 —— 术语
  • kubernets学习笔记——使用kubeadm构建kubernets集群及排错
  • 简述MYSQL聚簇索引、二级索引、索引下推
  • 电脑开机后出现bootmgr is missing原因及解决方法
  • 2024 年 7 月公链行业研报:市场波动中 Solana 表现抢眼,Layer 2 竞争白热化
  • Python查缺補漏
  • c++的类和对象(中):默认成员函数与运算符重载(重难点!!)
  • Android .kl按键布局文件
  • Java每日一练_模拟面试题6(JVM的GC过程)
  • 数据防泄密软件推荐|(6大数据防泄密软件推荐!)
  • Codeforces 874 div3 A-G
  • 暑期数据结构 空间复杂度
  • 【Android Studio】图标一键生成 Image Asset Studio(一键各机型适配图标生成工具-告别一个一个替换)
  • C++ | Leetcode C++题解之第332题重新安排行程
  • 使用Python实现简单的网页爬虫:抓取网站标题
  • 视觉SLAM ch3—三维空间的刚体运动
  • 计算机毕业设计选题推荐-二手图书交易系统-Java/Python项目实战
  • 4.MySQL数据类型
  • 快递查询新纪元:一键批量获取多家快递物流详情
  • docker部署redis和mongoDB
  • 了解LVS,配置LVS
  • 目标检测综述文章解读——Object Detection in 20 Years: A Survey
  • Android make_vbmeta_image的参数值定义
  • 代码规范 —— 并发编程规范
  • 仪器仪表控制:pymeasure常用模块以及API
  • 如何理解openfoam案例里面的blockMesh文件里面的simpleGrading
  • 算法竞赛的制胜法宝:被严重低估的位运算究竟有什么用?
  • Qt QTableWidget 去除序号列
  • 【C++】5.类和对象(3)