MPP架构和分布式架构的区别

前言:对大数据的数据处理需求,当前技术方向上存在两个不同的发展路线,MPP和分布式处理。两者数据处理的基本思路都是一样的,分布式并行处理再合并结果;但由于二者在处理架构上的差异,最终产品在应用需求性能侧重也有所不同。

一、分布式架构和MPP架构分析

       两种技术都是通过对大量普通机器的的一同使用,而达到了大数据处理的需求;只是二者在管理任务执行时,对磁盘、内存和CPU的使用方式不同,而造成了最终在应用上的特性差异。

1.1分布式架构分析

       从分布式架构路线发展的技术有Hadoop、Hive、Tez、Spark、Flink等;核心思想基本都是从HDFS+Yarn+MapReduce这套数据处理方案中延展出来的;

分布式处理在技术架构上有什么特点呢 ?

以MapReduce的技术架构为例,如何使用多台机器节点,做分布式数据处理:

       首先是数据存储方面,每个机器都有自己的磁盘,数据可以存储到每个节点的磁盘上,但是对数据和磁盘存在的关系映射缺少管理;传统单机使用Raid(磁盘矩阵)将多块磁盘合成一块,HDFS的设计思想扩展到集群节点的所有磁盘,将所有节点的所有磁盘做了一个类似的大Raid,将所有的存储资源整合到一起管理,数据存储到HDFS时,会使用所有的磁盘资源保障存储数据的安全、稳定和容错;

     然后是运行资源这块,yarn使用NodeManger将每个节点运行时资源管理起来,使用ResourceManager统筹所有计算资源,当任务运行时,将内存和CPU资源自定义分配给运行任务;

       最后是数据处理任务,MapReduce调用yarn分配的资源,将数据从HDFS上按分片(split)读到内存,按照分配的内存和CPU数量,按照MapReduce的任务分成多个小任务,将Map阶段多个计算任务处理落盘Reduce再读盘将结果合并,输出分布式计算的最终结果。

MapReduce的数据处理的分布式架构如下:

       后续按照分布式数据处理路线发展的技术,就是按照内存磁盘的使用效率、计算逻辑的处理性能以及使用简便性上做的优化,存储上从存储格式、压缩效率上优化;计算上优化内存磁盘的交互,与shuffle的管理;CPU上使用单机线程的计算方式,没有太大区别。

1.2 MPP架构分析

1.2.1 MPP介绍

MPP (Massively Parallel Processing),意思是大规模并行处理。

这个架构有几个基本特性:

  • 支持数据处理并行执行;
  • 资源私有,每个节点都有独立的磁盘和内存资源;
  • 分布式计算,在私有内存中计算完后,直接写入私有的物理磁盘;
  • Shared Nothing,每个节点资源都是独立的,不存在分布式架构统筹资源的概念;

MPP的数据处理的架构如下:

总结下来就是,MPP + Shared Nothing的分布式架构;

单节点将磁盘和内存分为多个私有部分,集群将每个节点的内存和磁盘当作私有资源,将CPU资源公用,然后靠CPU并行处理和私有资源处理,加快数据处理速率。

1.2.2 MPP架构发展历史

MPP路线的发展路线:从单机MPP到大数据领域的MPP应用;

单机MPP中间件:最开始PostgreSQL、Teradata部署在单机节点上;将磁盘上的数据集和内存分成多个私有资源,然后通过多CPU核并行计算的方式,加快一个数据集数据的计算速率,最后由控制线程汇聚结果;

集群MPP:后来大数据领域引入了MPP技术思想,并做了架构上的调整,将单机上划分小的数据集和内存,扩大到私有节点独自的磁盘和内存资源;

其中的先驱就是Greenplum,基于PostgreSQL研发了集群版本的MPP;在应用过程中依然有不如意的部分,后续又有多个技术团队,分别基于不同应用需求,研发了如impala、TITB、ClickHouse、Doris、StarRocks等大数据场景的MPP数据库。

二、分布式架构和MPP架构的应用

2.1 数据处理场景有哪些应用需求

       大数据全生命周期包括,数据集成,数据处理,数据存储,数据分析,数据展示;对于分布式和MPP,相似的应用需求在数据处理和数据分析

       分布式处理需要经历读数据,处理数据,shuffle落盘,读数据处理,合并前阶段计算,结果数据落盘这五个阶段,大量的落盘读内存和shuffle操作,导致分布式处理的操作在秒级别;

       MPP处理,只需要在每个节点将数据读到内存,在内存并行计算后,将计算结果汇总到管理节点,将结果计算汇总输出就行,整个过程从读到处理展示结果可以到亚秒级;

2.2 应用场景分析

       从一个任务周期的视角去看,MPP仿佛优于分布式架构的性能;但是从一个任务的生命周期跳出来从架构的视角去看。

       分布式每次计算需要大量准备,但是它把资源,磁盘和计算逻辑都单独解耦出来,对于灵活性和可移植性上有天然的优势,可以在分布式架构中做各种MPP架构无法处理自定义存写算的操作。

       MPP架构将功能包装到管理进程,能提供什么功能,只有先开发包装再使用;好在是大数据的应用需求场景基本是固定的,所以这种可能,有技术团队可以把90%的功能都集成到MPP数据库管理功能中;解决自定义包装的问题和扩展节点、磁盘存储等突破磁盘存储限制,但是MPP架构在数据处理的时候,本身对CPU和内存的使用方案,导致难以做到分布式弹性的资源隔离,多个并发任务读写操作的时候,同样的节点,分布式处理的稳定性和并行任务处理数优于MPP架构技术产品。

2.3 应用总结

       大数据技术栈目前依然没有哪一种技术能覆盖所有应用场景,依然有可用性和性能等问题,对于分布式架构和MPP架构两条路线发展的数据处理技术能力,特性上各有优势。

从大数据需求的各个模块来看:

  • 分布式框架在做大数据基础存储和处理阶段更有优势,如:数据集成,数据开发,预计算,安全,洞察等;
  • MPP架构在数据应用层更有优势,如:统计、单点查询等。

       技术的应用不能统一而论,技术的应用和成本、熟悉度、简易性等各种非技术架构原因也会影响技术的选择,但总体来说两种架构本身不一样,虽然解决的应用场景有重叠,发展到后期,依然有合并的可能,将彼此最优秀的特性合并到一个系统中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/323745.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python学习】Python学习19- 异常处理

目录 【Python学习】Python学习19- 异常处理 前言python标准异常异常处理带异常类型语法不带异常类型语法使用except而带多种异常类型try-finally 语句触发异常 参考 文章所属专区 Python学习 前言 本章节主要说明Python的异常处理。 python标准异常 BaseException 所有异常…

RabbitMQ详解(值得珍藏)

1. 基本概念 RabbitMQ是一款开源,使用Erlang编写的,基于AMQP协议的消息中间件; 提到RabbitMQ,就不得不提AMQP协议。AMQP协议是具有现代特征的二进制协议。是一个提供统一消息服务的应用层标准高级消息队列协议,是应用…

远程控制软件安全吗?一文看懂ToDesk、RayLink、TeamViewer、Splashtop相关安全机制_raylink todesk

目录 一、前言 二、远程控制中的安全威胁 三、国内外远控软件安全机制 【ToDesk】 【RayLink】 【Teamviewer】 【Splashtop】 四、安全远控预防 一、前言 近期,远程控制话题再一次引起关注。 据相关新闻报道,不少不法分子利用远程控制软件实施…

两周掌握Vue3(五):自定义指令、路由、ajax

文章目录 一、自定义指令1.创建和使用自定义指令2.钩子函数3.使用参数 二、路由1.创建一个router实例2.在components目录中创建组件3.将路由实例挂载到应用4.使用路由 三、Ajax 代码仓库:跳转 当前分支:05 一、自定义指令 自定义指令是Vue.js框架提供的…

Unity中URP下的SimpleLit顶点着色器

文章目录 前言顶点着色器1、GPU Instance 相关2、顶点输入数据相关3、雾效混合因子4、对 uv 进行 Tilling 和 Offset 的应用 及 把顶点的坐标信息传给输出结构体5、把法线相关的结果,传给输出结构体6、光照贴图相关7、额外灯相关计算8、阴影相关 前言 在上一篇文章…

Ubuntu下,Flutter安装及在VScode中的配置

1、安装flutter 在自己指定的目录下,新建文件夹,并将源码git clone到本地 $ mkdir flutter $ cd flutter$ git clone -b master https://github.com/flutter/flutter.git2、给flutter添加环境变量 #编辑配置文件 $ vi ~/.bashrc #在末尾加入以下内容&…

指针及其应用

1.定义 指针:也是一个变量,存放所指变量的地址,根据变量定义的不同,指针指向的类型也不同 注意:*是与前面类型一体的 int main(void) {int* p; //等价于int *p;//为了区分变量,C语言中一般将*放置于变量…

Flink(十三)【Flink SQL(上)】

前言 最近在假期实训,但是实在水的不行,三天要学完SSM,实在一言难尽,浪费那时间干什么呢。SSM 之前学了一半,等后面忙完了,再去好好重学一遍,毕竟这玩意真是面试必会的东西。 今天开始学习 Flin…

数据结构学习 jz30 包含 min 函数的栈

关键词:排序 题目:最小栈 方法一:在记录这个数的同时,记录目前的最小值。看了提示才写出来的。 方法二:辅助栈。辅助栈保持非严格递减。看了k神的答案。 方法一: 一开始没想到怎么存最小,看…

从零实现一套低代码(保姆级教程)【后端服务】 --- 【16】初始化后端项目

摘要 在前面的实现过程中,我们的低代码平台,在前端已经有一定的构建页面的能力了。 但是对于我们实现一个平台,肯定要支持用户对页面进行保存等功能,包括后面我们运行时的设计,都要依赖于后端的能力 所以&#xff0c…

运维必存的20个常见的故障排查、修复大全

你们好,我的网工朋友。 “稳定是偶然,异常才是常态”。这句话用来形容运维的工作再合适不过了 对于运维来说,工作最常遇到的就是不稳定性带来的各种故障,经常围绕发现故障、响应故障、定位故障、恢复故障这四大步骤打转。 为此…

一篇文章带你搞懂多线程面试相关的一些问题

目录 1.Callable接口 1.1使用Callable接口来创建线程 1.1相关面试题: 介绍下 Callable 是什么 2.JUC常见的类(java.util,concurrent) 2.1ReentrantLock ReentrantLock和sychronized的区别 3.信号量 4.CountDownLatch 5.线程安全的集合类 5.1多线…

Flink-容错机制

Flink中的容错机制 流式数据连续不断地到来,无休无止;所以流处理程序也是持续运行的,并没有一个明确的结束退出时间。机器运行程序,996 起来当然比人要容易得多,不过希望“永远运行”也是不切实际的。因为各种硬件软件…

ioDraw在线图表工具 - 轻松制作专业图表,只需3步!

还在花大量时间手动画图表?还在为图表样式而烦恼?ioDraw为你提供一站式解决方案!ioDraw在线图表工具实现了AI自动生成图表,让你轻松制作专业图表,只需3步! 1. 录入数据 只需将你的数据告诉ioDraw AI助手&…

alibaba.item_get API:电商行业中的数据驱动决策支持

alibaba.item_get API 是阿里巴巴提供的一个用于获取商品详情的接口。在电商行业中,数据驱动的决策支持是非常重要的,而这个 API 可以帮助你获取到商品的各种详细信息,从而为你的决策提供支持。 具体来说,通过使用 alibaba.item_…

【Oracle】期末复习题

目录 一. 单选题(共164 题) 二. 多选题(共14 题) 三. 填空题(共4 题) 四. 分析题(共五题) 一)考生子系统 三)考试存储方案 四)铁路12306 …

条款24:若所有参数皆需类型转换,请为此采用非成员函数

设计一个表示有理数的类时,允许从整数隐式转换为有理数是有用的: class Rational { public:Rational(int numerator 0, // 该构造函数没有explicit限制;int denominator 1); int numerator() const; int denominator() const; const Rational opera…

CAS的超~详细介绍

什么是CAS CAS全称Compare and swap,是一种比较特殊的CPU指令. 字面意思:"比较并交换", 一个CAS涉及到以下操作: 我们假设内存中的原数据为V,旧的预期值A,需要修改的新值B. 1.比较A和V是否相等(比较) 2.如果相等,将B写入V.(交换) 3.返回操作是否成功. 伪代码 下面…

基于位的权限系统

基于位的权限系统是一种利用二进制位运算进行权限管理的技术。在这种系统中,不同的权限被编码为2的幂次方 (例如1、2、4、8等),每个权限对应一个独立的二进制位(可想而知运算速度是非常快的)。通过将这些权限值组合在一起形成一个…

day13 滑动窗口最大值 前K个高频元素

题目1:239 滑动窗口最大值 题目链接:239 滑动窗口最大值 题意 长度为K的滑动窗口从整数数组的最左侧移动到最右侧,每次只移动1位,求滑动窗口中的最大值 不能使用优先级队列,如果使用大顶堆,最终要pop的…