MPP架构和Batch架构

MPP架构和Batch架构

在最早数据分析时代,我们用单机数据库系统来解决数据存储和分析需求,当数据量逐渐增加,就需要在架构上扩容,很自然首先就是通过增加计算资源(CPU、Memory)来提高分析性能,这就是常说的纵向扩展

这个架构下,所有CPU都是共享磁盘和Memory,即资源都共享(Shared Everthing)。

很显然,这个架构是不可持续的,由于所有资源都共享,很容易产生竞争。为了解决这个问题,那就尽量少的共享。那就有shard disk/shard memory的架构,但很快也会得到的结论就是共享资源的竞争会阻碍扩展性。

于是就有了Shared Nothing的架构,于是就有了分布式系统。

数据库架构

数据库构架设计中主要有Shared Everthting、Shared Nothing、和Shared Disk:

  • Shared Everthting

    • 一般是针对单个主机,完全透明共享CPU/MEMORY/IO,并行处理能力是最差的,典型的代表SQLServer
  • Shared Disk

    • 各个处理单元使用自己的私有 CPU和Memory,共享磁盘系统。典型的代表Oracle Rac, 它是数据共享,可通过增加节点来提高并行处理的能力,扩展能力较好。其类似于SMP(对称多处理)模式,但是当存储器接口达到饱和的时候,增加节点并不能获得更高的性能 。
  • Shared Nothing

    • 各个处理单元都有自己私有的CPU/内存/硬盘等,不存在共享资源,类似于MPP(大规模并行处理)模式,各处理单元之间通过协议通信,并行处理和扩展能力更好。典型代表hadoop ,各节点相互独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转。

我们常说的 Sharding 其实就是Share Nothing架构,它是把某个表从物理存储上被水平分割,并分配给多台服务器(或多个实例),每台服务器可以独立工作,具备共同的schema,比如MySQL Proxy和Google的各种架构,只需增加服务器数就可以增加处理能力和容量。

MPP 架构

Batch 架构

MPP 架构和 Batch 架构对比

MPP Hadoop
平台开放 封闭式和专有的。对于某些技术,甚至文档下载对于非客户是不可能的 完全开源,供应商和社区资源可在互联网上免费获得
硬件选项 许多解决方案都是专用的,您不能在自己的集群上部署软件。所有的解决方案都需要特定的企业级硬件,如快速磁盘、具有大量ECC内存的服务器、10GbE/Infiniband等。 任何硬件都可以工作,供应商提供了一些配置指南。大多数建议是在DAS中使用廉价的商品硬件
可伸缩性(节点) 平均10个节点最多100-200个 平均100个节点,几千个是最大值
可伸缩性(用户数据) 平均十兆字节PB是最大值 平均是几百TB最大是几十PB
查询延迟 10-20毫秒 10-20秒
查询平均运行时 5-7秒 10-15分钟
查询最大运行时 1-2小时 1-2周
查询优化 复杂的企业查询优化器引擎作为最有价值的企业秘密之一保存 没有优化器或功能非常有限的优化器,有时甚至不是基于成本的
查询调试和分析 代表查询执行计划和查询执行统计信息,解释性错误消息 OOM问题和Java堆转储分析,集群组件上的GC暂停,每个任务的独立日志给您很多有趣的时间
技术价格 每个节点几万到几十万美元 每个节点免费或高达数千美元
终端用户的可访问性 简单友好的SQL界面和简单可解释的数据库内功能 SQL并不完全符合ANSI,用户应该关心执行逻辑、底层数据布局。函数通常需要用Java编写、编译并放在集群上
目标最终用户受众 商业分析师 Java开发人员和经验丰富的DBA
单作业冗余 低,MPP节点失败时作业失败 High,只有当管理作业的节点执行作业时,作业才会失败
目标系统 通用DWH和分析系统 专用数据处理引擎
供应商锁定 典型案例 通常由技术滥用引起的罕见病例
最小推荐收藏大小 任何 千兆字节
最大并发 数以百计的查询 多达10-20的工作
技术延展性 仅使用供应商提供的工具 与任何全新的开源工具混合(Spark,Samza,Tachyon等)
DBA技能水平要求 平均RDBMS DBA 一流的Java和RDBMS背景
解决方案实施复杂性 适度的

MPP架构和Batch架构结合

总结

SQL - NoSQL - NewSQL Capabilities

作者

Benjamin

发布于

2021-05-01

更新于

2021-09-27

许可协议

评论