0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于MPP架构的介绍与批处理架构异同点及OLAP引擎详解

电子工程师 来源:维科网 作者:园陌 2021-04-14 11:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

面试官:说下你知道的MPP架构的计算引擎?

这个问题不少小伙伴在面试时都遇到过,因为对MPP这个概念了解较少,不少人都卡壳了,但是我们常用的大数据计算引擎有很多都是MPP架构的,像我们熟悉的Impala、ClickHouse、Druid、Doris等都是MPP架构。

采用MPP架构的很多OLAP引擎号称:亿级秒开。

本文分为三部分讲解,第一部分详解MPP架构,第二部分剖析MPP架构与批处理架构的异同点,第三部分是采用MPP架构的OLAP引擎介绍。

一、MPP架构

MPP是系统架构角度的一种服务器分类方法。

目前商用的服务器分类大体有三种:

SMP(对称多处理器结构)NUMA(非一致存储访问结构)MPP(大规模并行处理结构)

我们今天的主角是 MPP,因为随着分布式、并行化技术成熟应用,MPP引擎逐渐表现出强大的高吞吐、低时延计算能力,有很多采用MPP架构的引擎都能达到“亿级秒开”。

先了解下这三种结构:

1. SMP

即对称多处理器结构,就是指服务器的多个CPU对称工作,无主次或从属关系。SMP服务器的主要特征是共享,系统中的所有资源(如CPU、内存、I/O等)都是共享的。也正是由于这种特征,导致了SMP服务器的主要问题,即扩展能力非常有限。

2. NUMA

即非一致存储访问结构。这种结构就是为了解决SMP扩展能力不足的问题,利用NUMA技术,可以把几十个CPU组合在一台服务器内。NUMA的基本特征是拥有多个CPU模块,节点之间可以通过互联模块进行连接和信息交互,所以,每个CPU可以访问整个系统的内存(这是与MPP系统的重要区别)。但是访问的速度是不一样的,因为CPU访问本地内存的速度远远高于系统内其他节点的内存速度,这也是非一致存储访问NUMA的由来。

这种结构也有一定的缺陷,由于访问异地内存的时延远远超过访问本地内存,因此,当CPU数量增加时,系统性能无法线性增加。

3. MPP

即大规模并行处理结构。MPP的系统扩展和NUMA不同,MPP是由多台SMP服务器通过一定的节点互联网络进行连接,协同工作,完成相同的任务,从用户的角度来看是一个服务器系统。每个节点只访问自己的资源,所以是一种完全无共享(Share Nothing)结构。

MPP结构扩展能力最强,理论可以无限扩展。由于MPP是多台SPM服务器连接的,每个节点的CPU不能访问另一个节点内存,所以也不存在异地访问的问题。

MPP架构图:

2021040610133620.jpg

MPP架构

每个节点内的CPU不能访问另一个节点的内存,节点之间的信息交互是通过节点互联网络实现的,这个过程称为数据重分配。

但是MPP服务器需要一种复杂的机制来调度和平衡各个节点的负载和并行处理过程。目前,一些基于MPP技术的服务器往往通过系统级软件(如数据库)来屏蔽这种复杂性。举个例子,Teradata就是基于MPP技术的一个关系数据库软件(这是最早采用MPP架构的数据库),基于此数据库来开发应用时,不管后台服务器由多少节点组成,开发人员面对的都是同一个数据库系统,而无需考虑如何调度其中某几个节点的负载。

MPP架构特征:

任务并行执行;数据分布式存储(本地化);分布式计算;高并发,单个节点并发能力大于300用户;横向扩展,支持集群节点的扩容;Shared Nothing(完全无共享)架构。

NUMA和MPP区别:

二者有许多相似之处,首先NUMA和MPP都是由多个节点组成的;其次每个节点都有自己的CPU,内存,I/O等;都可以都过节点互联机制进行信息交互。

那它们的区别是什么呢,首先是节点互联机制不同,NUMA的节点互联是在同一台物理服务器内部实现的,MPP的节点互联是在不同的SMP服务器外部通过I/O实现的。

其次是内存访问机制不同,在NUMA服务器内部,任何一个CPU都可以访问整个系统的内存,但异地内存访问的性能远远低于本地内存访问,因此,在开发应用程序时应该尽量避免异地内存访问。而在MPP服务器中,每个节点只访问本地内存,不存在异地内存访问问题。

二、批处理架构和MPP架构

批处理架构(如 MapReduce)与MPP架构的异同点,以及它们各自的优缺点是什么呢?

相同点:

批处理架构与MPP架构都是分布式并行处理,将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果。

不同点:

批处理架构和MPP架构的不同点可以举例来说:我们执行一个任务,首先这个任务会被分成多个task执行,对于MapReduce来说,这些tasks被随机的分配在空闲的Executor上;而对于MPP架构的引擎来说,每个处理数据的task被绑定到持有该数据切片的指定Executor上。

正是由于以上的不同,使得两种架构有各自优势也有各自缺陷:

批处理的优势:

对于批处理架构来说,如果某个Executor执行过慢,那么这个Executor会慢慢分配到更少的task执行,批处理架构有个推测执行策略,推测出某个Executor执行过慢或者有故障,则在接下来分配task时就会较少的分配给它或者直接不分配,这样就不会因为某个节点出现问题而导致集群的性能受限。

批处理的缺陷:

任何事情都是有代价的,对于批处理而言,它的优势也造成了它的缺点,会将中间结果写入到磁盘中,这严重限制了处理数据的性能。

MPP的优势:

MPP架构不需要将中间数据写入磁盘,因为一个单一的Executor只处理一个单一的task,因此可以简单直接将数据stream到下一个执行阶段。这个过程称为pipelining,它提供了很大的性能提升。

MPP的缺陷:

对于MPP架构来说,因为task和Executor是绑定的,如果某个Executor执行过慢或故障,将会导致整个集群的性能就会受限于这个故障节点的执行速度(所谓木桶的短板效应),所以MPP架构的最大缺陷就是——短板效应。另一点,集群中的节点越多,则某个节点出现问题的概率越大,而一旦有节点出现问题,对于MPP架构来说,将导致整个集群性能受限,所以一般实际生产中MPP架构的集群节点不易过多。

举个例子来说下两种架构的数据落盘:要实现两个大表的join操作,对于批处理而言,如Spark将会写磁盘三次(第一次写入:表1根据join key进行shuffle;第二次写入:表2根据join key进行shuffle;第三次写入:Hash表写入磁盘), 而MPP只需要一次写入(Hash表写入)。这是因为MPP将mapper和reducer同时运行,而MapReduce将它们分成有依赖关系的tasks(DAG),这些task是异步执行的,因此必须通过写入中间数据共享内存来解决数据的依赖。

批处理架构和MPP架构融合:

两个架构的优势和缺陷都很明显,并且它们有互补关系,如果我们能将二者结合起来使用,是不是就能发挥各自最大的优势。目前批处理和MPP也确实正在逐渐走向融合,也已经有了一些设计方案,技术成熟后,可能会风靡大数据领域,我们拭目以待!

三、 MPP架构的OLAP引擎

采用MPP架构的OLAP引擎有很多,下面只选择常见的几个引擎对比下,可为公司的技术选型提供参考。

采用MPP架构的OLAP引擎分为两类,一类是自身不存储数据,只负责计算的引擎;一类是自身既存储数据,也负责计算的引擎。

1)只负责计算,不负责存储的引擎

1. Impala

Apache Impala是采用MPP架构的查询引擎,本身不存储任何数据,直接使用内存进行计算,兼顾数据仓库,具有实时,批处理,多并发等优点。

提供了类SQL(类Hsql)语法,在多用户场景下也能拥有较高的响应速度和吞吐量。它是由Java和C++实现的,Java提供的查询交互的接口和实现,C++实现了查询引擎部分。

Impala支持共享Hive Metastore,但没有再使用缓慢的 Hive+MapReduce 批处理,而是通过使用与商用并行关系数据库中类似的分布式查询引擎(由 Query Planner、Query Coordinator 和 Query Exec Engine 三部分组成),可以直接从 HDFS 或 HBase 中用 SELECT、JOIN 和统计函数查询数据,从而大大降低了延迟。

Impala经常搭配存储引擎Kudu一起提供服务,这么做最大的优势是查询比较快,并且支持数据的Update和Delete。

2. Presto

Presto是一个分布式的采用MPP架构的查询引擎,本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。Presto是一个OLAP的工具,擅长对海量数据进行复杂的分析;但是对于OLTP场景,并不是Presto所擅长,所以不要把Presto当做数据库来使用。

Presto是一个低延迟高并发的内存计算引擎。需要从其他数据源获取数据来进行运算分析,它可以连接多种数据源,包括Hive、RDBMS(Mysql、Oracle、Tidb等)、Kafka、MongoDB、Redis等。

2)既负责计算,又负责存储的引擎

1. ClickHouse

ClickHouse是近年来备受关注的开源列式数据库,主要用于数据分析(OLAP)领域。

它自包含了存储和计算能力,完全自主实现了高可用,而且支持完整的SQL语法包括JOIN等,技术上有着明显优势。相比于hadoop体系,以数据库的方式来做大数据处理更加简单易用,学习成本低且灵活度高。当前社区仍旧在迅猛发展中,并且在国内社区也非常火热,各个大厂纷纷跟进大规模使用。

ClickHouse在计算层做了非常细致的工作,竭尽所能榨干硬件能力,提升查询速度。它实现了单机多核并行、分布式计算、向量化执行与SIMD指令、代码生成等多种重要技术。

ClickHouse从OLAP场景需求出发,定制开发了一套全新的高效列式存储引擎,并且实现了数据有序存储、主键索引、稀疏索引、数据Sharding、数据Partitioning、TTL、主备复制等丰富功能。以上功能共同为ClickHouse极速的分析性能奠定了基础。

2. Doris

Doris是百度主导的,根据Google Mesa论文和Impala项目改写的一个大数据分析引擎,是一个海量分布式 KV 存储系统,其设计目标是支持中等规模高可用可伸缩的 KV 存储集群。

Doris可以实现海量存储,线性伸缩、平滑扩容,自动容错、故障转移,高并发,且运维成本低。部署规模,建议部署4-100+台服务器。

Doris3 的主要架构:DT(Data Transfer)负责数据导入、DS(Data Seacher)模块负责数据查询、DM(Data Master)模块负责集群元数据管理,数据则存储在 Armor 分布式 Key-Value 引擎中。Doris3 依赖 ZooKeeper 存储元数据,从而其他模块依赖 ZooKeeper 做到了无状态,进而整个系统能够做到无故障单点。

3. Druid

Druid是一个开源、分布式、面向列式存储的实时分析数据存储系统。

Druid的关键特性如下:

亚秒级的OLAP查询分析:采用了列式存储、倒排索引、位图索引等关键技术;在亚秒级别内完成海量数据的过滤、聚合以及多维分析等操作;实时流数据分析:Druid提供了实时流数据分析,以及高效实时写入;实时数据在亚秒级内的可视化;丰富的数据分析功能:Druid提供了友好的可视化界面;SQL查询语言;高可用性与高可拓展性:Druid工作节点功能单一,不相互依赖;Druid集群在管理、容错、灾备、扩容都很容易;

4. TiDB

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持OLTP与OLAP的融合型分布式数据库产品。

TiDB 兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP 、OLAP 、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。

5. Greenplum

Greenplum 是在开源的 PostgreSQL 的基础上采用了MPP架构的性能非常强大的关系型分布式数据库。为了兼容Hadoop生态,又推出了HAWQ,分析引擎保留了Greenplum的高性能引擎,下层存储不再采用本地硬盘而改用HDFS,规避本地硬盘可靠性差的问题,同时融入Hadoop生态。

3)常用的引擎对比

一张图总结下常用的OLAP引擎对比:

常见OLAP引擎对比

20210406101337601.jpg

编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SMP
    SMP
    +关注

    关注

    0

    文章

    82

    浏览量

    20993
  • OLAP
    +关注

    关注

    0

    文章

    24

    浏览量

    10539
  • MPP
    MPP
    +关注

    关注

    0

    文章

    26

    浏览量

    11909
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    从“人机交互”到“数字预演”:详解 HMI、SCADA 与虚拟调试的闭环架构

    从“人机交互”到“数字预演”:详解 HMI、SCADA 与虚拟调试的闭环架构
    的头像 发表于 03-05 11:36 453次阅读
    从“人机交互”到“数字预演”:<b class='flag-5'>详解</b> HMI、SCADA 与虚拟调试的闭环<b class='flag-5'>架构</b>

    TAS3103A数字音频处理器:特性、架构与应用详解

    TAS3103A数字音频处理器:特性、架构与应用详解 引言 在当今数字化音频处理领域,一款高性能、可配置的音频处理器至关重要。德州仪器(Te
    的头像 发表于 02-27 16:25 367次阅读

    RK3588 平台 MPP 编译 + VPU 格式测试

    ~     一、什么是  MPP ?     瑞芯微  Media Process Platform ( MPP )是针对  RK  芯片的通用媒体处理平台,它封装了芯片底层复杂逻辑,提供统一的音视频编解码
    的头像 发表于 12-25 11:33 2615次阅读
    RK3588 平台 <b class='flag-5'>MPP</b> 编译 + VPU 格式测试

    嵌入式软件分层架构设计原则

    嵌入式软件分层架构的设计原则如下: 模块化和可扩展性:每一层应当保持松耦合,这样当硬件变化或某些功能扩展时,只需要修改对应的层次,而不影响整体架构。 硬件无关性:上层代码应当尽量避免直接依赖硬件
    发表于 11-28 07:05

    芯源MCU架构是不是基本都是ARM架构?还有其他的架构吗?

    芯源MCU架构是不是基本都是ARM架构?还有其他的架构吗?
    发表于 11-20 06:21

    modbus消息帧的模块化架构介绍

    MODBUS消息帧的模块化架构 1. 地址字段:通信寻址的核心 Modbus RTU协议采用单字节(8位)地址字段,支持1-247个从站设备(0保留为广播地址)。 广播机制:地址0的报文会被所有从站
    发表于 11-17 08:15

    新能源汽车高压架构详解

    应读者建议,讲一下高压电气架构,花了一点时间做了一些图,便于直观理解,分析一下高压架构的发展历程和趋势。
    的头像 发表于 09-02 15:01 3469次阅读
    新能源汽车高压<b class='flag-5'>架构</b><b class='flag-5'>详解</b>

    光纤图像处理卡设计原理图:520-基于ZU15EG 适配AWR2243的雷达验证底板 XCZU15EG架构高速信号处理

    高速信号处理, FPGA光纤, 光纤图像处理, XCZU15EG架构
    的头像 发表于 08-28 10:39 846次阅读
    光纤图像<b class='flag-5'>处理</b>卡设计原理图:520-基于ZU15EG 适配AWR2243的雷达验证底板 XCZU15EG<b class='flag-5'>架构</b>高速信号<b class='flag-5'>处理</b>板

    探索CPU架构的奥秘,揭秘高性能计算的隐形引擎

    本文转自:绿算技术CPU的内部工作原理:指令周期的精密舞蹈CPU,这颗无形的“心脏”,默默地驱动着每一台智能设备的脉动。它不仅是数据的处理中心,更是智慧与效率的源泉。今天与大家一同潜入CPU架构
    的头像 发表于 08-13 11:58 1034次阅读
    探索CPU<b class='flag-5'>架构</b>的奥秘,揭秘高性能计算的隐形<b class='flag-5'>引擎</b>

    GNSS模拟器核心架构如何实现?技术主管深度解读设计原理

    本文聚焦GNSS模拟器技术领域的核心难点,包括系统组成与核心引擎,GNSS频段基础,控制模式与架构理念
    的头像 发表于 07-29 14:58 772次阅读
    GNSS模拟器核心<b class='flag-5'>架构</b>如何实现?技术主管深度解读设计原理

    Nginx架构拆分集群详解

    单台服务器运行整个 LNMP 架构会导致网站访问缓慢,当系统内存被吃满时,很容易导致系统出现oom,从而kill掉MySQL数据库,为了避免这种情况的发生,我们可以将数据库服务拆分到独立的服务器上部署。
    的头像 发表于 06-28 16:03 1778次阅读
    Nginx<b class='flag-5'>架构</b>拆分集群<b class='flag-5'>详解</b>

    详解欧盟RoHS与中国RoHS的异同点

    管控范围1.欧盟RoHS欧盟RoHS指令的管控范围广泛,涵盖了直流电1500伏、交流电1000伏以下的电子电气产品,但部分产品有豁免条款。这意味着几乎所有常见的电子产品,如家用电器(冰箱、空调、洗衣机等)、电脑及其配件、通讯设备、照明设备等,都必须遵循欧盟RoHS的规定。这一广泛的管控范围旨在从源头上减少有害物质对环境和人体健康的潜在危害,确保电子电气产品在
    的头像 发表于 06-27 18:41 1298次阅读
    <b class='flag-5'>详解</b>欧盟RoHS与中国RoHS的<b class='flag-5'>异同点</b>

    多节点并行处理架构

    多节点并行处理架构(如MPP架构)通过分布式计算和存储实现高性能数据处理,其核心设计及典型应用如下: 一、核心
    的头像 发表于 06-12 08:18 814次阅读
    多节点并行<b class='flag-5'>处理</b><b class='flag-5'>架构</b>

    知识分享 | 评估模型架构——如何实现?

    确保良好的模型架构对于开发安全和可靠的软件非常重要。本文为您介绍MES Model Examiner® (MXAM)如何优化模型架构,简化复杂度管理步骤,并最终提升软件质量。
    的头像 发表于 06-05 11:46 816次阅读
    知识分享 | 评估模型<b class='flag-5'>架构</b>——如何实现?

    GPU架构深度解析

    GPU架构深度解析从图形处理到通用计算的进化之路图形处理单元(GPU),作为现代计算机中不可或缺的一部分,已经从最初的图形渲染专用处理器,发展成为强大的并行计算
    的头像 发表于 05-30 10:36 2100次阅读
    GPU<b class='flag-5'>架构</b>深度解析