1.2 常见的大数据计算系统
本节以4种常见的系统为例来介绍大数据计算系统:Apache开源的分布式大数据框架——Hadoop、Spark,它们对于大数据的批处理计算和分布式计算具有重要的推动作用;开源框架Storm,它在实时分布式流计算方面表现突出;GraphX,是常见的分布式图计算框架。
1.2.1 批处理计算框架Hadoop
Apache Hadoop是一款用于可靠的、可扩展的分布式计算的开源软件。它允许使用简单的编程模型跨计算机集群分布式地处理大型数据集。它旨在将工作范围从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储。框架本身不依靠硬件来提供高可用性,而是用于检测和处理应用程序层的故障,从而在计算机集群之上提供高可用性的服务。第2章将介绍Hadoop的配置和程序设计,第3章介绍Hadoop中的分布式文件系统HDFS的配置和程序设计,第7章和第8章分别介绍Hadoop和HDFS的原理。第12~14章将以Hadoop为例介绍大数据计算系统的监控、运维与调优。
1.2.2 分布式计算框架Spark
Apache Spark是用于大规模数据处理的分布式计算框架。它最引人注意的地方就是能以更快的速度运行工作负载。Spark使用先进的有向无环图(Directed Acyclic Graph,DAG)调度程序,查询优化器和物理执行引擎,实现批处理和流数据的高性能。根据Spark的官方数据,Spark在内存中运行程序的速度比Hadoop MapReduce快100倍左右,比在磁盘上运行程序的速度快10倍左右。Hadoop和Spark的运行速度比较如图1-5所示。
图1-5 Hadoop和Spark的运行速度比较
第4章将介绍Spark的配置和程序设计,Spark的原理将在第9章中介绍。
1.2.3 流计算系统Storm
Apache Storm是一个免费的开源实时分布式流计算系统。Storm可以轻松、可靠地处理无限数据流。Storm可以与任何编程语言共用。
Storm集成了目前已有的队列和数据库技术。Storm拓扑接收数据流并以任意复杂的方式处理这些流,然后在计算的每个阶段之间重新划分流。第5章将介绍Storm的配置和程序设计,Storm的原理将在第10章中介绍。
1.2.4 分布式图计算框架GraphX
GraphX是Spark中用于图并行计算的新框架。在较高的层次上,GraphX通过引入一个新的Graph抽象来扩展Spark RDD(一个有向的多重图),将其属性附加到每个顶点和边。为了支持图计算,GraphX公开了一组基本运算符(如subgraph、joinVertices和aggregateMessages)以及Pregel API的优化变体。此外,GraphX包含大量图算法和构建器,以简化图分析任务。第6章将介绍GraphX的应用,第11章将介绍GraphX的原理。
1.2.5 大数据计算系统的对比
Hadoop、Spark和Storm的区别与应用场景如下:
❑ Hadoop是基于磁盘处理的大数据框架,其计算组件MapReduce也基于磁盘计算,采用Map和Reduce编程模型对大数据进行批处理。故Hadoop在大数据的计算过程中对机器要求低,有较好的效果。
❑ Spark也是批处理计算系统,采用DAG模型,基于内存进行计算,在大数据的交互和迭代计算上优于Hadoop,但它受服务器内存与CPU的限制。
❑ Storm采用流式处理,省去了批处理收集数据的时间,可处理源源不断进入系统的数据,适合流式处理实时计算的业务场景。