Spark的设计目的是克服MapReduce模型缺陷,能在多场景处理大规模数据。它的计算
模型是基于内存的抽象数据类型RDD.适用于批处理,迭代式计算模型。
Spark体系结构包括Spark SQL,Spark Streaming,MLlib,GraphX.
Core库中包括:
- Spark Context
- 抽象数据集RDD
- 调度器Scheduler
- Shuffle
- Serializer等
Hadoop
因其设计之初没有考虑到效率,导致在迭代计算问题时效率很低,主要原因归结于其MapReduce计算模型太单一且计算过程中的Shuffle过程对本地磁盘的I/O消耗太大,不能适应复杂需求。其次,Hadoop面对SQL交互式查询场景,实时流处理场景时力不从心,不得不与第三方框架相结合,从而导致在不同类型业务在衔接过程中因涉及不同的数据格式,因而在共享和转换数据过程中消耗大量资源。
Spark
作为基于内存计算大数据平台以其高速、多场景适用的特点脱颖而出.
设计目的是全栈式解决批处理、结构化数据查询、流计算等场景,此外还体现在对存储层(HDFS、cassandra)和资源管理层(Mesos、YARN)的支持。
Spark的核心RDD抽象数据集能在不同的应用中使用,大大减少了数据转换的消耗和运维管理的资源占用。