欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 中间件--ClickHouse-9--MPP架构(分布式计算架构)

中间件--ClickHouse-9--MPP架构(分布式计算架构)

2025/4/23 11:18:34 来源:https://blog.csdn.net/qq_34207422/article/details/147324897  浏览:    关键词:中间件--ClickHouse-9--MPP架构(分布式计算架构)

1、MPP 架构基础概念

MPP(Massively Parallel Processing 大规模并行处理) 是一种分布式计算架构,专门设计用来高效处理大规模数据集。在这种架构下*,数据库被分割成多个部分,每个部分可以在不同的服务器节点上并行处理*。这意味着,当执行一个查询时,它可以被分解为许多小的任务,并且这些任务可以同时在多个节点上运行,从而极大地提高查询性能和系统的整体吞吐量。

MPP(大规模并行处理)是一种分布式计算架构,其核心特点是:
(1)、共享无(Share-Nothing):每个节点独立存储和计算,节点间通过网络通信,无共享资源(如内存或磁盘)。
(2)、分布式并行计算:数据分片存储在多个节点上,查询时各节点并行处理自己的数据分片,最终合并结果。
(3)、高扩展性:通过增加节点数线性提升计算和存储能力

ClickHouse的MPP架构是其高性能查询的核心支撑,尤其适用于OLAP场景(如大数据分析、实时报表等)。

2、ClickHouse 的 MPP 架构设计

(1)、核心组件

ClickHouse的MPP架构主要由以下组件构成:
在这里插入图片描述
说明:

  • 协调节点
    协调节点(Coordinator)也称为查询发起节点,是客户端连接并提交查询请求的地方。这个节点负责解析查询、制定执行计划,并将执行任务分配给相关的数据节点。此外,它还负责收集来自各个数据节点的中间结果,并对它们进行整合以生成最终的查询结果返回给客户端。

  • 数据节点
    实际存储数据并执行由协调节点分配的任务的节点。每个数据节点都包含一部分完整的数据集,并能够独立地执行查询任务。这种设计使得查询可以并行执行,从而提高查询性能。

(2)、ClickHouse中的分片机制

在ClickHouse中,数据通常会根据一定的规则被分割成多个部分,每部分被称为一个“分片”。分片可以跨多个服务器部署,这有助于扩展系统容量以及提升查询处理速度。

  • 每个分片都可以配置为独立运行,即所有副本都是平等的,没有明确的领导者或跟随者之分。
  • 在某些高可用性配置中,可能会采用类似主备(Primary-Secondary)的复制方案,其中有一个主要副本(可以视为leader)负责写操作,而其他副本同步该主要副本的数据。然而,读操作可以从任意副本执行,以此提供负载均衡和故障转移能力。
  • 在ClickHouse中,分片并不严格遵循leader-follower结构,而是依赖于具体的配置和需求。这种灵活性允许用户根据自己的应用场景选择最合适的部署方式。对于需要高可用性的场景,可以通过设置多副本和适当的复制策略来实现。而对于追求极致性能的应用,则可以考虑通过增加分片数量来横向扩展系统。

(3)、数据分片与分布

  • 分片策略:
    数据按规则(如哈希、范围)分发到不同分片,常见策略包括:
    • 哈希分片:cityHash64(column) 将数据均匀分布到分片。
    • 范围分片:按时间或数值范围划分数据(如按年分区)。
  • 副本机制:
    每个分片有多个副本(如 3 副本),通过 ZooKeeper 管理元数据和故障转移。

3、查询执行流程

以下是 ClickHouse 分布式查询的典型执行流程:

(1)、查询解析与优化

  • 协调节点(Coordinator)解析 SQL,生成逻辑执行计划。
  • 根据分布式表的元数据,确定参与计算的分片。

(2)、分布式执行

  • 协调节点将查询计划分发到各个分片节点。
  • 分片节点并行计算:每个节点独立处理本地数据,执行扫描、过滤、聚合等操作。
  • 数据交换(Data Shuffling):若需要跨分片聚合(如 GLOBAL IN PROGRESS),数据通过网络传输。

(3)、结果合并

  • 协调节点收集各分片的中间结果,进行最终聚合或排序。
  • 返回最终结果给客户端。

(4)、核心特性

在这里插入图片描述

4、MPP 架构的优势

(1)、高性能查询

  • 并行计算:数据分片并行处理,线性提升计算能力。
  • 向量化执行:通过 SIMD 指令并行处理数据块(如 4-8 行同时计算)。
  • 列式存储:减少 I/O,加速过滤和聚合操作。

(2)、水平扩展

  • 弹性扩容:通过增加分片或副本,线性提升存储和计算能力。
  • 动态分片:支持在线添加节点,无需停机。

(3)、高可用性

  • 副本容错:副本节点故障时自动切换,保证服务连续性。
  • 数据冗余:副本存储相同数据,避免单点故障。

(4)、低延迟

  • 分布式计算:减少单节点负载,避免资源争用。
  • 本地计算:数据存储与计算在同一节点,减少网络延迟。

5、MPP 架构的典型应用场景

(1)、大数据分析

  • 场景:分析 PB 级日志数据(如用户行为、点击流)。
  • 示例:
  -- 查询过去一年各地区的销售额SELECT region, SUM(sales) FROM distributed_sales_table WHERE date BETWEEN '2023-01-01' AND '2023-12-31' GROUP BY region;
  • 优势:分片并行计算,秒级返回结果。

(2)、实时报表

  • 场景:实时生成业务报表(如广告投放效果、用户活跃度)。
  • 示例:
  -- 实时统计当前小时的用户登录次数SELECT COUNT(*) FROM distributed_login_events WHERE event_time >= NOW() - INTERVAL 1 HOUR;

(3)、复杂聚合查询

  • 场景:多维度聚合(如按时间、地域、产品分类统计)。
  • 示例:
  -- 按天、地区、产品分类统计销售额SELECT date, region, product_category, SUM(sales) FROM distributed_sales GROUP BY date, region, product_category;

6、MPP 架构的实现细节

(1)、分布式表(Distributed Table)

  • 定义:通过 Distributed 引擎创建逻辑表,指向分片的本地表。
    sql示例:
  CREATE TABLE distributed_table (id UInt64,name String,create_time DateTime) ENGINE = Distributed('cluster_name', 'local_database', 'local_table', rand());
- 参数说明:  - cluster_name:集群名称。  - local_database:本地数据库名。  - local_table:本地表名。  - rand():分片键(如随机分片)。

(2)、分片与副本配置

  • 分片配置示例:
    sql示例:
  -- 创建分片和副本(通过 ZooKeeper 管理)CREATE CLUSTER company_cluster LOCAL(shard 1,'192.168.1.100:9000')AS company_replica1;CREATE CLUSTER company_cluster shard 1(replica 1,'192.168.1.100:9000');

(3)、查询优化技巧

  • 分区裁剪(Partition Pruning):
    通过 PARTITION BY 定义分区,查询时自动过滤无关分区。
    sql示例:
  CREATE TABLE sales (id UInt64,amount Float64,create_time DateTime) ENGINE = MergeTree()PARTITION BY toYYYYMM(create_time)ORDER BY id;
  • 预聚合(Aggregation Pushdown):
    在分片内完成部分聚合,减少数据传输量。
    sql示例:
  SELECT region, SUM(sales) FROM distributed_sales GROUP BY region SETTINGS distributed_aggregation = 1;

7、MPP 架构的局限性

(1)、复杂 JOIN 的限制

  • 跨分片的 JOIN 需要全表数据传输,可能产生性能瓶颈。
  • 建议通过预处理或物化视图优化。

(2)、数据一致性延迟

  • 分布式事务仅保证最终一致性,不支持跨分片 ACID 事务。

(3)、配置复杂度

  • 需要合理设计分片键,避免数据倾斜(如哈希分片键选择不当)。

8、总结

ClickHouse 的 MPP 架构 通过分布式并行计算、列式存储和向量化执行,实现了 “亿级数据秒级响应” 的性能。其核心优势在于:

  • 高性能:适合海量数据的分析型查询。
  • 高扩展:通过分片和副本轻松扩展存储和计算能力。
  • 易用性:通过 SQL 接口和分布式表透明化分布式计算。

在实际应用中,合理设计分片策略、利用分区裁剪和预聚合,可以最大化 MPP 架构的性能优势。对于需要处理 PB 级数据的 OLAP 场景(如日志分析、实时报表),ClickHouse 是一个极具竞争力的选择。

逆风翻盘,Dare To Be!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词