火山引擎:ClickHouse增强计划之“资源隔离”

什么?部署ClickHouse的服务器CPU利用率100%了? 灵活运用clickhouse的query_log定位生产环境的故障,快速解决问题 阅读详情

相信大家都对大名鼎鼎的ClickHouse有一定的了解了,它强大的数据分析性能让人印象深刻。但在字节大量生产使用中,发现了ClickHouse依然存在了一定的限制。例如:

  • 缺少完整的upsert和delete操作

  • 多表关联查询能力弱

  • 集群规模较大时可用性下降(对字节尤其如此)

  • 没有资源隔离能力

因此,我们决定将ClickHouse能力进行全方位加强,打造一款更强大的数据分析平台。后面我们将从五个方面来和大家分享,本篇将详细介绍我们是如何为ClickHouse增强资源隔离能力的。

广告业务遇到的资源管控问题

ClickHouse的资源管控能力不够完善,在 insert、select 并发高的场景下会导致执行失败,影响用户体验。这是因为社区版ClickHouse目前仅提供依据不同用户的最大内存控制,在超过阈值时会杀死执行的 query。

在字节的广告业务中,需要区分不同查询的优先级;对查询性能抖动的容忍度较低;同时也需要支持adhoc能力;查询类型广泛、资源占用可能会较多。

ClickHouse提供的粗粒度并发控制不能满足需求;

  1. 无法灵活控制并发,导致查询迅速占满集群资源,部分后来的高优查询持续pending,导致报错。

  2. 无法给特定业务预留cpu资源,出现大查询占满cpu,而后来的查询执行时间大幅增加。

ByteHouse的解决方案:Resource Group

在这种情况下,字节在ByteHouse(字节基于ClickHouse能力增强的版本)中开发了资源管理的组件:Resource Group。

基本思路是将并发、内存、CPU等资源拆分给不同的资源组,同时通过资源组的父子关系实现不同资源组共享部分资源的能力。当用户的查询提交给引擎,依照定义的规则选定相应的资源组,然后评估该资源组以及父资源组是否能够执行该查询,如是则直接执行,否则进入该资源组的等待队列,等待资源释放。

e863f6ea5e19d76454ec7aa49f58cece.png

并发控制

max_concurrent_queries 配置项控制一个资源组能够同时运行的查询上限。当资源组并发达到上限,或者该资源组的父资源组并发达到上限,引擎会把查询放入该资源组的等待队列。当该资源组有一个查询结束,引擎会执行该资源组等待队列中最早的查询;如果此时该资源组等待队列为空,则会触发父资源组的资源释放,进一步触发该父资源组的其他子资源组的等待队列查询执行,实现并发quota在一个父资源组之间的共享。

内存控制

每一个资源组可以配置一个软性的内存上限,当资源组中的查询使用内存超过这个软性限制之后,新查询将会进入等待队列。和并发控制类似,内存也会判断父资源组的限制,并使用类似的逻辑实现内存在一个父资源组之间的共享。

由于目前还没有一个准确的查询占用内存预估的模型,当前采取的策略是预估+实际内存矫正的模式,当一个新查询进入时,引擎会按照预估内存评估是否可以执行,在开始执行之后则是利用查询现有的memory_tracker在下一轮判断之前矫正预估值。

此软性的内存限制不同于原生ClickHouse的硬性内存限制,并不会杀死已经在执行的查询,而是用于控制新查询的可执行判断,因此可以配合使用。

CPU控制

ByteHouse使用cgroups提供的cpu controller实现资源组的CPU控制。Cpu controler通过使用 CFS 调度器将CPU资源按照相同的时间分片进行分配,以实现不同group按照预定义的cpu shares占用相应的CPU资源。

在ByteHouse内部,我们实现了一个新的线程池类,在该类中给查询分配线程资源时,会依据当前Context中记录的资源组信息分配关联到相应cgroup的线程。

由于采用的CFS调度器,我们可以很容易的得到以下结论:

  1. 当所有资源组都有查询在执行时,每个资源组可以使用的CPU比例为 cpu_shares / sum(cpu_shares)

  2. 当只有一个资源组有查询在执行时,该资源组可以使用的CPU比例为 100%

因此每个资源组可以使用的CPU资源比例范围就是 [cpu_shares/sum(cpu_shares), 100%],通过这个功能我们也就实现了两个预期效果:

  1. 保证了每个资源可以使用的CPU资源下限

  2. 保证了在任何workload情况下服务器CPU资源的总体利用率

Resource Group带来的效果提升

Resource Group能够显著的提升查询体验,为优先业务的查询提供保障,并且减小查询返回时间的方差。与此同时,也能够为集群稳定性带来提升,不会因为OOM杀死执行中的查询,以及防止一个服务出现故障而拖垮整个集群。

ByteHouse的Resource Group主要有以下优点:

  • 能够在CPU、内存、并发控制等全方位的提供资源隔离的能力

  • 可以限制低优先级查询带来的影响

  • 降低写入语句可能带来的不良影响

在上文提到的广告业务中,使用ByteHouse替换ClickHouse后,查询时间明显缩短,体验明显改善。

9f390ce8a34327ffff75a9f4b327a33d.png

应用前:

ff09c0a524d722debdd0e9f2b3f9c756.png

应用后:

9b34cc32a22be60a80c2135d62d61a86.png

可以看到上线前用户每天的查询平均耗时在2.3s到14.1s之间抖动,十分剧烈,用户的使用体验很差。上线后每天的查询平均耗时则在0.4s到1.7s之之间抖动,较好的保证了该优先业务的查询资源,并且显著缩短的平均查询返回时间。

这是本次ClickHouse增强计划系列文章的最后一篇啦,除了这五篇文章提到的能力,ByteHouse还有有一个与ClickHouse使用不同执行引擎的版本,能够实现全面的存算分离,是真正的云原生数据仓库!后续我们也将为大家带来专题介绍。

ByteHouse已经全面对外服务,并且提供各种版本以满足不同类型用户的需求。在ByteHouse官网上提交试用信息即可免费试用!欢迎大家试用。

5575f291fb9beb02c9eec7df671ad2c8.png

扫码即可免费试用

另外,也欢迎大家扫描下方二维码加入ByteHouse & ClickHouse交流群,交流关于ByteHouse和ClickHouse的使用经验,有问题也可以咨询群中技术专家。

b482c4540132feeb467df3dae351a1fa.png

Clickhouse-CPU内存资源优化配置 阅读详情

相关推荐

移动端抓包实战指南:从HTTPS解密到QUIC协议与证书绑定破解

HTTPS作为保障网络通信安全的核心协议,其工作原理基于TLS/SSL加密与证书信任链验证。在移动应用开发与测试中,抓包是调试接口、分析性能、排查问题的关键技术手段。然而,随着移动端安全性的提升,传统的代理抓包方法常因证书绑定、HTTP/3/QUIC协议等挑战而失效。这要求开发者掌握分层诊断思维,协同使用代理工具、协议分析工具及底层流量捕获工具。例如,面对证书绑定导致的流量不可见,需借助Wireshark进行协议层分析;针对基于UDP的QUIC协议,则需使用支持该协议的抓包工具或临时禁用特性。本文聚焦移动端

weixin_27722377的博客 297

clickhouse常见问题之Too many simultaneous queries

解决clickhouse当前查询数过多的问题

普普通通程序猿的博客 1万+

使用MID360在室内快速定位

在预构建的点云地图中实现实时3D全球定位。通过融合FAST-LIO的低频全局定位(约0.5~0.2Hz)和高频里程计,整个系统的计算效率很高。消除里程计的累计误差初始定位可以通过RVIZ的粗略手动估计或来自另一个传感器/算法的姿势来提供。

CTwinkle的博客 1162

Clickhouse系列一:Clickhosue资源隔离

目前的版本Clickhouse对于资源管理不是一个细粒度的,通过上面的痛点问题也能够看到。如果想做细粒度的资源控制,还是需要一个全局的资源管理进行处理。

qq_35667076的博客 1637

如何在Android上使用OpenCV进行摄像头标定

如何在Android上使用OpenCV进行摄像头标定,我们这里使用官方一个例程,其实并不难,只是网上的资料少了而已。相机标定是计算机视觉工作的前提,为了确定相机矩阵和畸变参数。

花草的博客 3440

VINS-Fusion实战:从零搭建无人机视觉惯性导航系统(附ROS配置指南)

本文提供了一份详尽的VINS-Fusion实战指南,涵盖从硬件选型、传感器标定到ROS节点配置与参数调优的全过程。重点解析了如何将VINS-Fusion视觉惯性里程计系统与PX4飞控深度集成,并实现室外GPS融合,旨在帮助开发者从零搭建稳定、高精度的无人机视觉惯性导航系统。

lll78的博客 865

docker的资源限制参数设置错误,导致的clickhouse性能瓶颈

【代码】docker的资源限制参数设置错误,导致的clickhouse性能瓶颈。

闫玉林的博客 1374

【GameFramework框架】7-2、GameFramework框架是否“过度设计”?

框架是否过度设计,这个问题其实我被问到很多次了。不仅仅是新手刚接触就觉得“过度设计”的评价,有些熟练的开发者也会有这种感觉。那么,这篇文章就来探究一下,为什么框架会让人感觉“过度设计”,以及框架如何设计,还有,如何让框架适应自己的节奏。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2118

如何在ClickHouse中实现资源隔离?火山引擎实践经验分享

相信大家都对大名鼎鼎的ClickHouse有一定的了解了,它强大的数据分析性能让人印象深刻。但在字节大量生产使用中,发现了ClickHouse依然存在了一定的限制。例如:缺少完整的upsert和delete操作多表关联查询能力弱集群规模较大时可用性下降(对字节尤其如此)没有资源隔离能力因此,我们决定将ClickHouse能力进行全方位加强,打造一款更强大的数据分析平台。后面我们将从五个方面来和大家...

过往记忆大数据 815

18、未来医疗信息学中的太赫兹天线技术

本文探讨了太赫兹天线技术在医疗信息学中的关键作用,重点分析了分裂环谐振器和纳米结构光导天线(PCA)的设计与性能提升方法,介绍了相干与非相干太赫兹检测技术,并通过等效电路模型和数值模拟深入解析PCA工作机理。文章还展示了太赫兹技术在无创血糖监测、肿瘤检测等医疗诊断中的实验应用,总结了其非侵入性、高分辨率成像和多参数分析等优势,同时指出信号检测难、成本高和技术复杂等挑战。未来趋势包括设备小型化、效率提升及与人工智能融合,拓展至药物研发、皮肤与神经疾病诊断等领域,展现出变革医疗健康的巨大潜力。

milk8的博客 146

SAP S4 HANA:按单生产(MTO)场景中的COGS分割

本文介绍了SAP S/4HANA中提供的各种选项,以在销售订单/商品是按订单生产(以下称为MTO)生产流程中的成本对象时,在基于帐户的COPA环境中报告COGS分割信息。

adam915的博客 1191

火山引擎:ClickHouse增强计划之“Upsert”

相信大家都对大名鼎鼎的ClickHouse有一定的了解了,它强大的数据分析性能让人印象深刻。但在字节大量生产使用中,发现了ClickHouse依然存在了一定的局限。例如:• 缺少完整的upsert和delete操作• 多表关联查询能力弱• 集群规模较大时可用性下降(对字节尤其如此)• 没有资源隔离能力因此,我们决定将ClickHouse能力进行全方位加强,打造一款更强大的数据分析平台。后面我们将从...

芋艿V 437

Arduino、ESP32驱动BMP390L数字大气压传感器(压力传感器)

BMP390L是一款博世新研发的工业级专用数字气压传感器,具有极高的温度稳定性、低漂移、低功耗。

不脱发的程序猿 2007

火山引擎:ClickHouse增强计划之“多表关联查询”

相信大家都对大名鼎鼎的ClickHouse有一定的了解了,它强大的数据分析性能让人印象深刻。但在字节大量生产使用中,发现了ClickHouse依然存在了一定的限制。例如:缺少完整的upsert和delete操作多表关联查询能力弱集群规模较大时可用性下降(对字节尤其如此)没有资源隔离能力因此,我们决定将ClickHouse能力进行全方位加强,打造一款更强大的数据分析平台。后面我们将从五个方面来和大家...

过往记忆大数据 592

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

性能提升5倍!火山引擎如何为 ClickHouse 实现资源隔离?

当该资源组有一个查询结束,引擎会执行该资源组等待队列中最早的查询;如果此时该资源组等待队列为空,则会触发父资源组的资源释放,进一步触发该父资源组的其他子资源组的等待队列查询执行,实现并发 Quota 在一个父资源组之间的共享。基本思路是将并发、内存、CPU 等资源拆分给不同的资源组,同时通过资源组的父子关系实现不同资源组共享部分资源的能力。当用户的查询提交给引擎,依照定义的规则选定相应的资源组,然后评估该资源组以及父资源组是否能够执行该查询,如是则直接执行,否则进入该资源组的等待队列,等待资源释放。

大数据研习社 635

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

火山引擎 ByteHouse:只需 2 个方法,增强 ClickHouse 数据导入能力

文章来源于 ByteHouse 产品专家在火山引擎数智平台(VeDI)主办的“数智化转型背景下的火山引擎大数据技术揭秘”线下 Meeup 的演讲,将从 ByteHouse 数据库架构演进、增强 HaKafka 引擎实现方案、增强 Materialzed MySQL 实现方案、案例实践和未来展望四个部分展开分享。

m0_60025795的博客 680

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

火山引擎ByteHouse:如何优化ClickHouse物化视图能力?

近期,火山引擎 ByteHouse 升级了基于 ClickHouse 的物化视图能力,为解决数据量爆炸式增长带来的查询速度和响应时间缓慢等问题提供了有效手段。

m0_60025795的博客 203

“吊打” ClickHouse,火山引擎数仓 SQL 查询性能 10x 提升!

相信大家都对大名鼎鼎的ClickHouse有一定的了解了,它强大的数据分析性能让人印象深刻。但在字节大量生产使用中,发现了ClickHouse依然存在了一定的限制。例如:缺少完整的upsert和delete操作多表关联查询能力弱集群规模较大时可用性下降(对字节尤其如此)没有资源隔离能力因此,我们决定将ClickHouse能力进行全方位加强,打造一款更强大的数据分析平台。后面我们将从五个方面来和大家...

芋艿V 390

火山引擎:强大的数据分析平台如何构建基于ClickHouse的查询优化器

相信大家都对大名鼎鼎的ClickHouse有一定的了解了,它强大的数据分析性能让人印象深刻。但在字节大量生产使用中,发现了ClickHouse依然存在了一定的限制。例如:缺少完整的upsert和delete操作多表关联查询能力弱集群规模较大时可用性下降(对字节尤其如此)没有资源隔离能力因此,我们决定将ClickHouse能力进行全方位加强,打造一款更强大的数据分析平台。后面我们将从五个方面来和大家...

过往记忆大数据 641

GIS、向量、文字检索... 火山引擎 ByteHouse 集成全场景分析能力

ByteHouse 在 OLAP 引擎上实现了一系列增强,能支撑宽表、星型模型、雪花模型等更复杂的分析模型,且能实现基础模型的范式化建模,具备流批一体、优化器、增强型易聚合等技术特点,已经在实时数仓、用户圈选、行为分析、广告推荐等场景中落地。最后,随着大模型的火热,ByteHouse 已支持多种向量检索算法,如 HNSW、Flat、IVFFlat、IVFPQ,并且基于 vector-centric 的思路,构建了高效的执行链路,可以支撑大规模向量检索场景,达到毫秒级的查询延迟。

m0_60025795的博客 1130

十问ByteHouse:如何基于ClickHouse玩转向量检索?

十个问题了解ByteHouse

m0_60025795的博客 314

ClickHouse为啥在字节跳动能这么火?

作者 | 蔡芳芳 采访嘉宾 | 陈星、邵祎旸、海书山 ClickHouse 开源于 2016 年,在一众大数据计算引擎里算是一个后起之秀。但凭借性能方面的突出优势,这几年 ClickHouse 在分析型数据库领域可谓风生水起。作为 ClickHouse 深度用户,字节跳动拥有国内规模最大的 ClickHouse 集群。根据官方提供的最新数据,截至 2022 年 2 ...

华章IT官方博客 925

大数据分析之ClickHouse技术选型

大数据分析之ClickHouse优质文章汇总导航,关注我,不迷路

oschina_41731918的博客 1194

B站基于ClickHouse的海量用户行为分析应用实践

数据驱动理念已被各行各业所熟知,核心环节包括数据采集、埋点规划、数据建模、数据分析和指标体系构建。在用户行为数据领域,对常见的多维数据模型进行信息提炼和模型整合,可以形成一套常见的数据分析方法来发现用户行为的内在联系,能更好洞察用户的行为习惯和行为规律,帮助企业挖掘用户数据的商业价值。

SmartSi 1222

ByteHouse:基于ClickHouse的实时数仓能力升级解读

全篇将从两个版块讲解ByteHouse的技术业务场景及实践经验。第一版块将核心介绍ByteHouse于字节内部的业务应用场景,以及使用ClickHouse打造实时数仓的经验。第二板块将集中讲解字节基于ByteHouse对金融行业实时数仓的现状的理解与思考。

m0_60025795的博客 1721
上一篇: 流程引擎的架构设计
下一篇: 性能优化的十种手段
公众号-芋道源码
博客等级 码龄10年 1629粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值