当前位置: 首页 > 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

相关文章:

flume性能调优

作者&#xff1a;南墨 1.Source性能调优 1.1 Spooldir Source 使用Spooldir Source采集日志数据时&#xff0c;若每行日志数据<100bp&#xff0c;可以通过将多行合并传输来提升传输性能 建议合并时根据数据长度来确定多少行合并为一个单位进行传输&#xff0c;合并后的长…...

mysql 字符串转数组

在 MySQL 中&#xff0c;可以使用内置的字符串函数 SUBSTRING_INDEX() 和 REPLACE() 来实现将字符串转换为数组。 首先&#xff0c;使用 REPLACE() 函数将字符串中的分隔符替换为空格&#xff0c;然后使用 SUBSTRING_INDEX() 函数将字符串按空格分割成多个子字符串。最后&…...

UE基础 —— 术语

目录 Project Blueprint Class Object Actor Casting Component Pawn Character Player Controller AI Controller Player State Game Mode Game State Brush Volume Level World Project 项目&#xff08;Project&#xff09;包含游戏的所有内容&#xff0c…...

kubernets学习笔记——使用kubeadm构建kubernets集群及排错

使用kubeadm构建kubernets集群 一、准备工作1、repo源配置&#xff1a;阿里巴巴开源镜像源2、更新软件包并安装必要的系统工具3、同步时间4、禁用selinux5、禁用交换分区swap6、关闭防火墙 二、安装docker-ce、docker、cri-docker1、安装docker-ce2、开启内核转发&#xff0c;转…...

简述MYSQL聚簇索引、二级索引、索引下推

一丶聚簇索引 InnoDB的索引分为两种&#xff1a; 聚簇索引&#xff1a;一般创建表时的主键就会被mysql作为聚簇索引&#xff0c;如果没有主键则选择非空唯一索引作为聚簇索引&#xff0c;都没有则隐式创建一个索引作为聚簇索引&#xff1b;辅助索引&#xff1a;也就是非聚簇索…...

电脑开机后出现bootmgr is missing原因及解决方法

最近有网友问我为什么我电脑开机后出现bootmgr is missing&#xff0c;这个提示意思是:意思是启动管理器丢失&#xff0c;说明bootmgr损坏或者丢失&#xff0c;系统无法读取到这个必要的启动信息导致无法启动。原因有很多&#xff0c;比如我们采用的是uefi引导&#xff0c;而第…...

2024 年 7 月公链行业研报:市场波动中 Solana 表现抢眼,Layer 2 竞争白热化

作者&#xff1a;Stella L (stellafootprint.network) 数据来源&#xff1a;Footprint Analytics 公链 Research 页面 7 月份&#xff0c;加密货币市场表现活跃&#xff0c;波动幅度较大&#xff0c;这一现象映射了全球金融市场的整体趋势。现货以太坊 ETP 在美国的上市&…...

Python查缺補漏

一、 json.load(s)与json.dump(s)区别 json.loads()将str类型的数据转换为dict类型 json.dumps()将dict类型的数据转成str json.load()从json文件中读取数据 json.dump()将数据以json的数据类型写入文件中 二、json内部要使用双引号 data """{ "fruit&qu…...

c++的类和对象(中):默认成员函数与运算符重载(重难点!!)

前言 Hello, 小伙伴们&#xff0c;我们今天继续c的学习&#xff0c;我们上期有介绍到c的部分特性&#xff0c;以及一些区别于c语言的地方&#xff0c;今天我们将继续深入了解c的类和对象&#xff0c;探索c的奥秘。 好&#xff0c;废话不多说&#xff0c;开始我们今天的学习。…...

Android .kl按键布局文件

1.介绍 一个硬件按键的处理流程大致为&#xff1a;当用户按下或释放一个键时&#xff0c;键盘硬件会生成一个扫描码scan code&#xff0c;然后操作系统读取这个scan code&#xff0c;并将scan code扫描码映射到虚拟键码key code&#xff0c;最后操作系统根据映射的keycode生成…...

Java每日一练_模拟面试题6(JVM的GC过程)

一、JVM虚拟机组成 JVM五大内存区域&#xff1a;程序计数器&#xff0c;Java虚拟机栈&#xff0c;本地方法栈&#xff0c;java堆&#xff0c;方法区。 堆被划分为两个区域&#xff1a;年轻代(Young)、老年代(Tenured)。年轻代又被划分为三个区域&#xff1a;Eden、From Surviv…...

数据防泄密软件推荐|(6大数据防泄密软件推荐!)

很多朋友在后台私信&#xff0c;什么是数据防泄密软件&#xff0c;有哪些数据防泄密软件推荐。 今天小编将从定义出发&#xff0c;深入浅出地介绍这一技术的工作原理、应用场景以及实现方式。 一、什么是文档透明加密&#xff1f; 文档透明加密是一种在用户无感知的情况下对文…...

Codeforces 874 div3 A-G

A. Musical Puzzle 分析 每两个相邻的字母都要录制一段&#xff0c;开个set记录一下&#xff0c;然后输出set的大小 C代码&#xff1a; #include<iostream> #include<set> using namespace std; void solve(){int n;string s;cin>>n>>s;set<strin…...

暑期数据结构 空间复杂度

3&#xff0e;空间复杂度 空间复杂度也是一个数学表达式&#xff0c;是对一个算法在运行过程中临时占用存储空间大小的量度。 空间复杂度不是程序占用了多少bytes的空间&#xff0c;因为这个也没太大意义&#xff0c;所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟…...

【Android Studio】图标一键生成 Image Asset Studio(一键各机型适配图标生成工具-告别一个一个替换)

文章目录 方法一&#xff1a;原始替换方法二&#xff1a;Image Asset Studio 方法一&#xff1a;原始替换 https://blog.csdn.net/xzzteach/article/details/140821856 方法二&#xff1a;Image Asset Studio 自动替换所有机型图标...

C++ | Leetcode C++题解之第332题重新安排行程

题目&#xff1a; 题解&#xff1a; class Solution { public:unordered_map<string, priority_queue<string, vector<string>, std::greater<string>>> vec;vector<string> stk;void dfs(const string& curr) {while (vec.count(curr) &am…...

使用Python实现简单的网页爬虫:抓取网站标题

使用Python实现简单的网页爬虫:抓取网站标题 在当今数据驱动的时代,网络爬虫(Web Crawler)成为了获取和分析网络数据的重要工具。无论是数据科学、市场分析还是学术研究,爬虫都能帮助我们从互联网上提取有价值的信息。本文将介绍如何使用Python实现一个简单的爬虫,抓取某…...

视觉SLAM ch3—三维空间的刚体运动

如果对于某些线性代数的知识不太牢固&#xff0c;可以看一下我的另一篇博客&#xff0c;写了一些基础知识并推荐了一些视频。 旋转矩阵 单元所需的线代基础知识https://blog.csdn.net/Johaden/article/details/141023668 一、旋转矩阵 1.点、向量、坐标系 在数学中&…...

计算机毕业设计选题推荐-二手图书交易系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

4.MySQL数据类型

目录 数据类型 ​编辑数值类型 tinyint类型 bit类型 float类型 decimal类型 字符串类型 char类型 varchar varchar和char的区别 日期和时间类型 数据类型 数值类型 说明一下&#xff1a;MySQL本身是不支持bool类型的&#xff0c;当把一个数据设置成bool类型时&#x…...

快递查询新纪元:一键批量获取多家快递物流详情

跨快递平台批量查询神器&#xff1a;一站式解决信息追踪难题——固乔快递查询助手 在电商行业日益繁荣的今天&#xff0c;快递服务已经成为连接买卖双方不可或缺的一环。然而&#xff0c;随着合作的快递公司日益增多&#xff0c;如何高效地管理和追踪不同平台的快递信息&#…...

docker部署redis和mongoDB

docker部署mongoDB redismongoDB redis # --requirepass指定redis连接时的密码 # --appendonly yes 开启reids的AOF功能 docker run --name redis -p 6379:6379 -d redis:5.0.14 redis-server --requirepass 1234 --appendonly yes# 以/etc/redis/redis.conf的配置信息启动red…...

了解LVS,配置LVS

项目一、LVS 1.集群Cluster Cluster: 集群是为了解决某个特定问题将堕胎计算机组合起来形成的单个系统 LB&#xff1a;负载均衡 HA&#xff1a;高可用 HPC&#xff1a;高性能计算 2.分布式 分布式是将一个请求分成三个部分&#xff0c;按照功能拆分&#xff0c;使用微服…...

目标检测综述文章解读——Object Detection in 20 Years: A Survey

论文&#xff1a;Object Detection in 20 Years: A Survey 作者&#xff1a;Zhengxia Zou, Keyan Chen, Zhenwei Shi, Yuhong Guo, Jieping Ye 链接&#xff1a;https://arxiv.org/abs/1905.05055 这是一篇关于目标检测综述性文章&#xff0c;自2019年5月第一次提交后&#xff…...

Android make_vbmeta_image的参数值定义

网上生成vbmeta_system.img的命令,分析下这些参数的赋值,key的路径 out/host/linux-x86/bin/avbtool make_vbmeta_image --algorithm SHA256_RSA2048 --key device/mediatek/system/common/key/rsa2048/oem_prvk.pem --padding_size 4096 --rollback_index 0 --...

代码规范 —— 并发编程规范

优质博文&#xff1a;IT-BLOG-CN 【1】【强制】获取单例对象需要保证线程安全&#xff0c;其中的方法也要保证线程安全。 说明&#xff1a; 资源驱动类、工具类、单例工厂类都需要注意。 【2】【强制】创建线程或线程池时请指定有意义的线程名称&#xff0c;方便出错时回溯。…...

仪器仪表控制:pymeasure常用模块以及API

下面是对 pymeasure.experiment 模块中各类和方法的详细介绍&#xff0c;包括它们的功能和用法。 pymeasure.experiment 模块详细介绍 Experiment 类 Experiment 类是 Pymeasure 中用于定义和管理实验的核心类。它包含实验的设置、执行和数据记录等功能。 构造函数 class …...

如何理解openfoam案例里面的blockMesh文件里面的simpleGrading

总结&#xff1a; simpleGrading参数分为xyz三个方向。如果你想使得网格在某个方向上更密集&#xff0c;可以在simpleGrading中将该方向的渐变率设置为小于 1 .更稀疏则设置大于1. 一、案例 比如我这个爆炸案例&#xff1a; 对应的blockMeshDIct文件如下&#xff1a; // 定…...

算法竞赛的制胜法宝:被严重低估的位运算究竟有什么用?

大家好&#xff0c;我是干货哥。今天咱们来聊聊一个让很多人都忽略的神技——位运算。等等&#xff0c;你是不是已经准备关掉这篇文章了&#xff1f;你以为位运算只是计算机底层的鸡肋操作&#xff1f;你以为这些不过是编程语言里最基础、最无趣的东西&#xff1f;但真的是这样…...

Qt QTableWidget 去除序号列

ui->tableWidget->verticalHeader()->setHidden(true);//垂直序列号&#xff08;表左侧&#xff09;ui.tableWidget->horizontalHeader()->setHidden(true);//水平序列号&#xff08;表上方&#xff09;删除后效果图&#xff1a;...