1.4 Spark分布式架构与单机多核架构的异同
我们通常所说的分布式系统主要指的是分布式软件系统,它是在通信网络互连的多处理机的架构上执行任务的软件系统,包括分布式操作系统、分布式程序设计语言、分布式文件系统和分布式数据库系统等。Spark是分布式软件系统中的分布式计算框架,基于Spark可以编写分布式计算程序和软件。为了整体宏观把握和理解分布式系统,可以将一个集群视为一台计算机。分布式计算框架的最终目的是方便用户编程,最后达到像原来编写单机程序一样编写分布式程序。但是分布式编程与编写单机程序还是存在不同点的。由于分布式架构和单机的架构有所不同,存在内存和磁盘的共享问题,这也是我们在书写和优化程序的过程中需要注意的地方。分布式架构与单机架构的对比如图1-6所示。
1)在单机多核环境下,多CPU共享内存和磁盘。当系统所需的计算和存储资源不够,需要扩展CPU和存储时,单机多核系统显得力不从心。
2)大规模分布式并行处理系统是由许多松耦合的处理单元组成的,要注意的是,这里指的是处理单元而非处理器。每个单元内的CPU都有自己私有的资源,如总线、内存、硬盘等。这种结构最大的特点在于不共享资源。在不共享资源(Share Nothing)的分布式架构下,节点可以实现无限扩展,即计算能力和存储的扩展性可以成倍增长。
在分布式运算下,数据尽量本地运算,减少网络I/O开销。由于大规模分布式系统要在不同处理单元之间传送信息,在网络传输少时,系统可以充分发挥资源的优势,达到高效率。也就是说,如果操作相互之间没有什么关系,处理单元之间需要进行的通信比较少,则采用分布式系统更好。因此,分布式系统在决策支持(DSS)和数据挖掘(Data Mining)方面具有优势。
Spark正是基于大规模分布式并行架构开发,因此能够按需进行计算能力与存储能力的扩展,在应对大数据挑战时显得游刃有余,同时保证容错性,让用户放心地进行大数据分析。
图1-6 分布式体系结构与单机体系结构的对比