前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开源ClickHouse是如何成为极致弹性的云原生数据仓库的?

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

作者头像
用户1564362
发布2022-06-29 16:56:44
1.9K0
发布2022-06-29 16:56:44
举报
文章被收录于专栏:飞总聊IT

大数据领域对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已经成为了存储计算分离,极致弹性的云原生数据仓库,非常的方便客户们按需使用和部署。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 飞总聊IT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档