首页 > 编程知识 正文

mpp数据库是关系型还是非关系型,什么是mpp

时间:2023-05-05 10:39:45 阅读:12972 作者:2621

MPP架构、典型OLAP引擎分析1、MPP架构1、SMP2、NUMA3、MPP2、批处理架构和MPP架构3以及MPP架构的OLAP引擎1 )只负责计算,而压力

一、MPP体系结构

MPP是从系统体系结构的角度来看服务器的分类方法。

目前,商用服务器的分类大致有3种。

对称多处理器配置(SMP )

非一致存储访问结构(NUMA )

大规模并行处理机构(MPP ) )

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

1、SMP,即多处理器结构,是指服务器上的多个CPU对称工作,没有主要的和从属的。 SMP服务器的主要特点是共享,共享系统中的所有资源,包括CPU、内存和I/O。 由于这种特点,SMP服务器的主要问题—扩展能力非常有限。

2、NUMA,即非一致性存储访问结构。 该机制可以使用NUMA技术在一台服务器上组合使用几十个CPU,以解决SMP扩展能力不足的问题。

NUMA的基本特征是具有多个CPU模块,节点之间可以通过互连模块进行连接和信息交换。 因此,每个CPU都可以访问整个系统的内存。 这是与MPP系统的重要区别。 但是访问速度不同。 这也是非一致性存储访问NUMA的原因,因为CPU访问本地内存的速度远远快于系统中其他节点的内存速度。

这种结构也有缺点,因为异地存储器的访问时间远远超过本地存储器的访问时间,所以随着CPU数量的增加,不能线性地提高系统的性能。

3、MPP即大规模并行处理结构。 MPP的系统扩展与NUMA不同,MPP在用户看来是一个服务器系统,其中多个SMP服务器通过一定节点互连网络连接、协同工作并执行相同的任务。 “共享”(Share Nothing )结构,因为每个节点只访问其资源。

MPP结构扩展能力最好,理论可以无限扩展。 由于MPP连接到多个SPM服务器,每个节点上的CPU无法访问其他节点上的内存,因此也没有异地访问问题。

MPP模式映射:

每个节点中的CPU无法访问另一个节点上的内存。 节点之间的信息交换通过称为数据重新分配的节点互连网络进行。

但是,MPP服务器需要复杂的机制来调度和平衡每个节点的负载和并行处理过程。

目前,一些基于MPP技术的服务器可以通过系统级软件(如数据库)来阻止这种复杂性。 例如,Teradata是一个基于MPP技术的关系数据库软件。 这是第一个采用MPP体系结构的数据库。 在基于此数据库开发APP应用程序时,无论后台服务器由多个节点组成,开发人员都将面对同一个数据库系统,而不管如何调度其中几个节点的负载。

MPP体系结构的特点:

并行执行任务;

数据分布式存储(本地化);

分布式计算;

并发性强,单节点并发性超过300个用户;

向外扩展,支持群集节点扩展;

共享注释(完全不共享)体系结构。

NUMA和MPP的区别:

两者有很多相似之处,首先NUMA和MPP都由多个节点组成; 其次,每个节点都有自己的CPU、存储器、I/O等。它们都可以通过节点之间的互连机制进行信息交换。

那个区别是什么呢? 首先,NUMA节点互连在同一物理服务器内部实现,而MPP节点互连在不同SMP服务器外部通过I/O实现。

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

二、批处理体系结构和MPP体系结构批处理体系结构(如MapReduce )和MPP体系结构的区别,它们的优缺点是什么?

同一点:

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

不同之处:

例如,批处理体系结构和MPP体系结构之间的区别在于,当执行一个任务时,它首先分多个任务执行,而对MapReduce来说,这些任务是随机分配给空闲的执行程序的。 在MPP架构的引擎中,每个处理数据的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架构的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、wydxd

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

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

wydxd3 的主要架构:DT(Data Transfer)负责数据导入、DS(Data Seacher)模块负责数据查询、DM(Data Master)模块负责集群元数据管理,数据则存储在 Armor 分布式 Key-Value 引擎中。wydxd3 依赖 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)常用的引擎对比

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。