Spark概述
1.什么是Spark
Spark 是一个开源的大数据处理框架,旨在提供快速、通用、可扩展的数据处理能力。它最初由加州大学伯克利分校的AMPLab 开发,并于 2010 年开源。Spark 的设计目标是解决 Hadoop MapReduce 中的一些性能瓶颈,并提供更丰富的数据处理功能。
2.Spark与Hadoop框架对比
1.处理模型
- Hadoop 使用基于磁盘的存储和批处理模型。其主要框架是 MapReduce,它适合于批处理任务,但在处理迭代算法和实时数据时效率较低。
- Spark 则支持更广泛的处理模型,包括批处理、交互式查询、实时流处理和机器学习等。它的核心是弹性分布式数据集(
RDD
),允许数据在内存中缓存和重复使用,从而提高了处理速度。
2.性能
-
由于 Spark 使用内存计算,因此通常比 Hadoop MapReduce 更快。尤其是对于迭代算法和交互式查询等工作负载,Spark 的性能优势更为显著。
-
在处理大规模数据时,Spark 在性能上通常更具竞争力,特别是在需要迭代处理或交互式查询时。
-
Hadoop使用磁盘来存储中间结果,而Spark则将这些结果存储在内存中。因为Spark利用内存来加速数据处理,所以在处理速度方面,它通常比Hadoop要快得多。
3.API 和编程模型
- Hadoop 提供了较为低级的编程接口,主要是基于 Java 的 MapReduce API。虽然也有其他编程框架和接口,如 Apache Pig 和 Apache Hive,但它们都是构建在 MapReduce 之上的。
- Spark 提供了更丰富和高级的编程接口,支持多种编程语言,包括 Scala、Java、Python 和 R 等。Spark 的 API 更加灵活,易于使用,同时还提供了许多内置的库,如 Spark SQL、Spark Streaming、MLlib 和 GraphX 等。
4. 适用场景
- Hadoop 更适合于需要大规模批处理的场景,尤其是对于需要可靠性和稳定性的工作负载。
- Spark 则更适合于需要低延迟和高性能的工作负载,特别是对于迭代算法、交互式查询和实时流处理等场景。
Hadoop 和 Spark 在处理大数据时各有优势,选择使用哪个框架取决于具体的需求和场景。
3.Spark内置模块
Hadoop拥有非常完善的生态系统,包括HDFS、MapReduce、Hive、Pig等组件,可以满足各种不同的大数据处理需求。
Spark的生态系统虽然不如Hadoop完善,但是也有很多重要的组件,如Spark SQL、Spark Streaming、MLlib和GraphX等。
Spark Core
:
- 实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed DataSet,简称RDD)的API定义。
Spark SQL
:
- 是Spark用来操作结构化数据的程序包。通过Spark SQL,我们可以使用 SQL或者Apache Hive版本的HQL来查询数据。Spark SQL支持多种数据源,比如Hive表、Parquet以及JSON等。
Spark Streaming
:
- **是Spark提供的对实时数据进行流式计算的组件。**提供了用来操作数据流的API,并且与Spark Core中的 RDD API高度对应。
Spark MLlib
:
- 提供常见的机器学习功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据 导入等额外的支持功能。
Spark GraphX
:
- 主要用于图形并行计算和图挖掘系统的组件。
集群管理器
:
- Spark设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计算。
- 为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器(Cluster Manager)上运行,包括Hadoop YARN、Apache Mesos,以及Spark自带的一个简易调度器,叫作独立调度器。