Redian新闻
>
开源ClickHouse是如何成为极致弹性的云原生数据仓库的?

开源ClickHouse是如何成为极致弹性的云原生数据仓库的?

科技

大数据领域对ClickHouse可谓非常的熟悉了。这个最初由俄罗斯的Yandex公司开发并开源的数据仓库,以单表查询快闻名于世,一改传统Hadoop技术栈笨,重,慢”的特点。很多时候,ClickHouse的性能相对于Hadoop技术栈,性能有百倍的提升。


ClickHouse的查询性能快,不仅仅在老东家Yandex得到了证实,更是征服了世界各地大量的互联网公司,成为了它们数据分析的不二选择。


然而开源版的ClickHouse要想用好并不是很容易。很多企业用ClickHouse不但没有见到它传说中的极速,反而因为对ClickHouse颇高的使用门槛而屡屡遇到问题。


开源版的ClickHouse主要有几个问题:


首先,开源版的ClickHouse采用了标准的计算存储一体的Shared-nothing结构,而非云原生服务常用的计算存储分离结构。这就使得ClickHouse非常难做到计算和存储独立按需扩展。


其次,ClickHouse并不具备数据均衡功能,这就导致了数据均衡需要通过业务层来处理。ClickHouse基本上没弹性。


再次,开源的ClickHouse对元数据的处理,并没有集中的元数据管理,而是每个节点都有自己的元数据。集体扩容以后,新的节点不会同步元数据信息,需要人工介入,运维成本非常高。


最后,开源的ClickHouse在新加入节点以后也不会自动平衡数据的负载,新加入的节点需要人工介入,人为增加写入新节点的数据比例,等差不多数据负载平衡以后再人工介入改回来。


这些都使得开源版的ClickHouse非常的难用。很多用户一开始的时候,完全无法达到ClickHouse能够达到的极致性能,相反的,这些客户反而掉进了一个又一个的坑里。


而这其中最大的一个痛点就是新加入的节点如何对数据进行再平衡,这通常需要人工介入,非常的麻烦。2022年6月28日,在腾讯Techo Day技术开放日上,ClickHouse的全托管基础版带来了用户指导下系统自动数据重分布功能。


具体来说,系统允许通过白屏化的操作,让用户选择不同策略,异步的把数据打散到所有的新老节点上。系统提供了按part  resharding 两种不同方式,分别应对只关注数据大小和sharding key对齐两种不同层面的再平衡系统也支持用户随时查看重分布任务的进展情况,用户可以根据业务实际情况进行流量控制,加速,减慢或者取消重分布任务


用户可以随时直观查看重分布任务的进度、平均速度、剩余大小等信息,根据业务情况实时做流量控制,加快、减慢重分布的速度,甚至取消任务。


而本次发布会的重头戏是发布了云原生弹性版的ClickHouse,带来的是架构方面的全方位升级。


具体来说,开源的ClickHouse是经典Share-nothing,每一台server同时存数据,也作为计算资源。ClickHouse也不存在全局的元数据,元数据分散在每台server上,不同节点之间元数据需要同步的时候,采用ZooKeeper来同步。


这些都造成了ClickHouse如果不做架构改动,就很难成为极致弹性,存储计算分离的云原生数据仓库。腾讯云CDW-ClickHouse为此对架构做了很多改造。


首先是存储的改造,CDW-ClickHouse引入了专门的存储资源层,自研了基于云存储的表引擎。自研的表引擎提供了统一的抽象视图,引入了桶的概念。


其次,在这个基础上存储节点和计算节点实现了存储计算分离。CDW-ClickHouse引入了专门的计算层。计算层和存储层的对接变成了每个计算节点具体映射到哪些桶。


最后,也是最重要的,CDW-ClickHouse引入了元数据服务层这个开源ClickHouse没有的东西。


元数据服务层是CDW-ClickHouse包括两个部分:元数据持久化存储和ClickHouse-Admin服务。元数据持久化存储里存的是全局的元数据。ClickHouse-Admin是一个无状态服务,可以水平扩展。


元数据服务层非常的重要,飞总需要仔细拆解开来讲一下。


元数据在这个服务层里,包括的东西比较多,其中有开源的ClickHouse里分布在各个节点上的Schema信息,也有一些新的东西,它们是数据分布表和配置信息。


Schema信息比较好理解。在CDW-ClickHouse里,元数据持久化存储里存的就是全局的真相,所以DDL也被ClickHouse-Admin服务给接管了。这样做的好处,不仅仅维护了全局的真相,而且也去掉了ZooKeeper。


每个计算节点启动的时候只需要从ClickHouse-Admin服务那里获取最新的元数据信息就可以了。


数据分配表实际上就是存储节点被拆解成桶以后,每个计算节点到底对应哪些桶的一个配置。这个信息在开源的ClickHouse里是没有的。


它一方面是存储计算分离的基础,另外一方面,也是弹性扩容的基础。比如说,扩容加入一个新的节点,在CDW-ClickHouse里可以首先从ClickHouse-Admin服务那里获取Schema信息,其次,还可以让ClickHouse-Admin修改数据分配表,不需要拷贝数据就完成数据重平衡。


配置信息包括了计算节点的配置,共享存储配置,以及计算分组配置。计算分组配置是CDW-ClickHouse里的一个新概念。简单来说,计算组是一组计算节点。


CDW-ClickHouse,集群支持配置多个计算组,每个组可以有若干台计算节点。它们可以共享存储。类似多个独立的ClickHouse计算集群。这对业务按需资源编排是很有利的。


总结一下,CDW-ClickHouse自底向上分为三层,存储资源层,计算层,元数据服务层。通过实现存储计算分离,元数据全局管理,CDW-ClickHouse实现了计算和存储的弹性扩展,解决了新加入节点需要人工介入,复制元数据的问题,也解决了新节点数据平衡的问题。


经过这一系列的改造,开源的ClickHouse已经成为了存储计算分离,极致弹性的云原生数据仓库,非常的方便客户们按需使用和部署。

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
如何从头建设一座原生数字化工厂?西门子这样回答云原生数仓如何破解大规模集群的关联查询性能问题?CK01# ClickHouse术语及知识点梳理只有5天时间,且GT同时备考...顶着巨大压力的我是如何成功分手的?Chinese Cities Loosen Housing Policies for Three-Child Families如何使用原生 NTFS 驱动替代旧版 FUSE NTFS 驱动 | Linux 中国CPU利用率从10%提升至60%:中型企业云原生成本优化实战指南云原生时代,中间件应该如何“进化”?[模型] 骨折三作——1:12 Kawasaki KH400(1979)Custom周四探访的意外惊喜CK02# ClickHouse分布式表读写原理梳理Chinese Band Uses Lockdown Metaphors as Tour TitlesGrafana:SpaceX 的数据监测利器,云原生领域的 TableauClubhouse:使用空间音频提升对话质量Disabled Man in Chinese Countryside Inspires Disillusioned Youth震撼!!!大佬们对ClickHouse的讨论,值得深思。。。广西农民范君过去5年,PolarDB云原生数据库是如何进行性能优化的?Open House揭秘|这周五来参观USC最好玩的公寓!大话三国67:典韦是如何成为曹操心腹的?曹操又是怎么把自己搞丢的?我学语文教语文的一生(52)文革是老百姓革走资派和私字命HTC推出Vive Flow商用版本;Khronos Group成立新组织以统一元宇宙标准,微软、高通、索尼等公司加入以“升舱”之名,谈谈云原生数据仓库AnalyticDB的核心技术The Keg Steakhouse热门菜品排行榜出炉!测测你是几星顾客!Chinese Courts See Rise in Emojis Used as Evidence in Lawsuits五年时间,这款IP手游是如何成为玩家心目中的武侠文化代表?CK03# ClickHouse日志存储设计点梳理云原生数据库公司「拓数派」完成新一轮战略融资,估值已达准独角兽级别|36氪首发房贷是刚性的,房价是弹性的阿里云易立:云原生如何破解企业降本提效难题?Open House预告|远离网红滤镜,1133Hope凭何成为Downtown下一个卷王?感谢中国【吃饭, Airbnb兑换类别延期至9月末过期】“Pay Yourself Back”:Chase UR固定比例兑换介绍采访了定义开源的那个人,他说:RMS有自闭症,开源不能单一仓库
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。