Spark基础概念
Spark: 分布式计算引擎框架概述
1. Spark 基于 MapReduce (MR) 开发
- Spark 是一种强大的分布式计算框架,最初受到 Hadoop MapReduce 的启发。与 Hadoop 不同的是,Spark 专注于内存计算和优化处理流程,提高了计算性能和效率。
2. 分布式概念:
单机模式示意图
- 单机模式:在单个节点上运行的单进程系统。这种方式适合开发和测试。
- 伪分布式模式:在单个节点上模拟多个进程进行并行处理。这是分布式系统的简化版本,用于开发和测试。
分布式模式示意图
- 分布式模式:系统由多个节点组成,每个节点可以运行多个进程,具有真正的并行处理能力。分布式计算可以大大提高处理大量数据时的效率和速度。
3. 计算的本质:
- 计算是指执行特定操作的过程。分布式计算的核心在于将数据切分成小块,由多个节点并行处理,减少单个节点的负载和计算时间。
- 分布式存储:将大数据分布在多个节点上进行存储。
- 分布式消息传输:节点之间通过消息传输共享数据,确保计算结果的一致性。
4. 分布式集群的架构:
- Spark 集群中心化:Spark 集群中的资源管理和调度通常由中心化的组件(如 Spark 的 Master 节点或 YARN)管理,负责分配任务和协调节点之间的计算。
集群去中心化架构示意图
- Kafka 去中心化:与 Spark 的中心化管理不同,Kafka 是一种去中心化的消息传输系统,多个节点可以平等地参与数据传输和处理,没有单一的控制节点。
4. 框架与系统的区别:
- 框架:框架是一个不完整的计算程序,它提供了核心功能的实现,但不包括特定的业务逻辑。开发人员可以基于框架开发特定的业务应用程序。Spark 是一个典型的计算框架。
- 系统:一个完整的系统是包含所有功能的计算程序,具备从核心功能到业务逻辑的完整实现。
Spark 基础概念
Spark宏观工作示意图
1. 开发语言:
- MapReduce (MR):最早的 Hadoop MapReduce 使用 Java 编写。虽然 Java 具有广泛的使用范围,但它在处理大规模数据时显得不够灵活。
- Spark:Spark 采用了 Scala 作为主要的开发语言。Scala 具有函数式编程的特性,特别适合进行大量的数据处理。除了 Scala,Spark 也支持 Java、Python 和 R 等语言。
2. 处理方式:
MapReduce工作示意图
- Hadoop:Hadoop 最早出现时,主要基于磁盘的外存计算(即 MapReduce),每次处理完数据后都会将结果写入磁盘,因此处理效率较低。
Spark工作示意图
- Spark:Spark 通过优化计算过程,基于内存进行计算,极大提高了处理速度。Spark 可以将数据加载到内存中进行操作,减少了对磁盘 I/O 的依赖,从而加快了大规模数据的处理效率。
补充:
Spark 与 Hadoop 的关系:Spark 是对 Hadoop MapReduce 的优化和提升,专注于内存计算,大大提升了处理速度和可扩展性。尽管 Spark 通常用于替代 Hadoop MapReduce,但它仍然可以在 Hadoop 集群上运行,利用 HDFS(Hadoop Distributed File System)进行分布式存储。
分布式存储与计算的结合:Spark 中的数据被切分为多个分片(partition),并分布在集群的不同节点上。每个节点可以独立处理其分配到的数据分片,这种并行计算的方式极大地提高了数据处理效率。
核心组件:
- Spark Core:提供分布式任务调度和内存管理等核心功能。
- Spark SQL:支持结构化数据查询,允许使用 SQL 语法查询大数据。
- Spark Streaming:支持实时数据处理,适合处理流数据。
- MLlib:提供分布式机器学习算法的实现。
- GraphX:支持图计算,适合处理社交网络等图数据结构。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 David
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果