同样都可以处理大规模数据的MPP数据库架构与Hadoop体系架构属于不同的技术体系,二者没有直接的相关性,却常常被放在一起进行比较。特别是在企业数据仓库建设中,MPP架构与Hadoop架构代表两类典型的技术路线选型,事实上,在2015年左右甚至有人认为基于Hadoop体系的数仓将彻底取代基于MPP数据库的数仓。
1. 设计思路对比
两类系统运行的硬件架构是相同的,都是普通服务器组成的集群,但从资源管理角度来说,它们并行化软件实现的设计思路却是相反的。
MPP架构相当于对单机的各类资源进行垂直综合管理,再将多个单机系统横向连接进行集成,可以说是先垂直后水平。
Hadoop架构相当于将所有机器的存储资源与计算资源抽象出来,分开管理,再进行组件级的垂直集成,可以说是先水平后垂直。
MPP与Hadoop架构对比如图1所示。
▲图1 MPP与Hadoop架构对比
具体分析如下:
MPP架构是将许多单机数据库通过网络连接起来,相当于将一个个垂直系统横向连接,形成一个统一对外服务的分布式数据库系统,每个节点由一个单机数据库系统独立管理和操作该节点所在物理机上的所有资源(CPU、内存、磁盘、网络),节点内系统的各组件间的相互调用不需要通过控制节点,即对控制节点来说,每个节点的内部运行过程相对透明。
Hadoop架构是将不同的资源管理与功能进行分层抽象设计,每层形成一类组件,实现一定程度的解耦,包括存储资源管理、计算资源管理、通用并行计算框架、各类分析功能等,在每层内进行跨节点的资源统一管理或功能并行执行,层与层之间通过接口调用,相互透明,节点内不同层的组件间的相互调用需要由控制节点掌握或通过控制节点协调,即控制节点了解每个节点内不同层组件间的互动过程。
2. 优缺点对比
MPP架构的优缺点总结如下:
- 支持标准SQL,每个节点都有丰富的事务处理和管理功能;
- 资源管理精细;
- 更适合预知数据结构模型的中等规模的固定模式数据管理;
- 集群规模调整要求较多,增减节点时通常需要停机,且有的系统只能增加不能减少;
- 延迟小,相对吞吐量一般,单节点缓慢会拖累整体性能;
表记录进行水平分割存储,方法通常包括一致性哈希(Consistent Hashing)、循环写入(Round Robin),但容易产生数据热点。
Hadoop架构的优缺点总结如下:
- 每个节点功能简单,不具备丰富的数据管理功能,不支持事务;
- 数据更新采用追加方式实现,同等数据量处理需要的资源更多;
- 可以不用预先了解数据的格式与内容;
- 扩展性好,支持集群规模更大,能动态扩容,支持扩充仅用于计算的节点;
- 延迟高、吞吐量大、容错性(Failover)好。
总体来说,Hadoop架构在数据量较低的情况下,运行速度远不及MPP架构,但数据量一旦超过某个量级,Hadoop架构在吞吐量方面将非常有优势。有些大数据数据仓库产品也采用混合架构,以融合两者的优点,例如Impala、Presto等都是基于HDFS的MPP分析引擎,仅利用HDFS实现分区容错性,放弃MapReduce计算模型,在面向OLAP场景时可实现更好的性能,降低延迟。