Spark详细介绍

本文详细介绍了Spark的基本模块,包括RDD、Task、Job、Stage和Partition等,并深入讨论了Spark的模块设计,如Spark Core、Spark SQL、Spark Streaming、GraphX和MLlib。此外,文章还阐述了Spark的编程模型,DAG调度以及基本架构,强调了Cluster Manager、Worker和Executor的角色。Spark的计算过程主要是RDD的迭代计算,其并行性由分区数量决定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Spark基本模块

  1. RDD (Resillient Distributed Dataset):弹性分布式数据集
  2. Task:具体执行的任务。Task(ShuffleMapTask & ReduceTask)
  3. Job:用户提交的作业。Job(one or more Task)
  4. Stage:Job分成的阶段。Job(one or more Stage)
  5. Partition:数据分区。RDD(one or more Partition)
  6. NarrowDependency:窄依赖,即子RDD依赖于父RDD中固定的Partition。NarrowDepenency(OneToOneDependency & RangeDependency)
  7. ShuffleDependency:宽依赖(shuffle依赖),即子RDD依赖于父RDD中所有Partition
  8. DAG(Directed Acycle Graph):有向无环图,用于反应各个RDD之间的依赖关系

2.Spark模块设计

2-1 Spark Core
Spark的核心功能模块,包括:

SparkContext的初始化(Driver Application通过SparkContext提交)、部署模式、存储体系、任务提交与执行、计算引擎

2-2 Spark SQL:提供SQL处理能力

2-3 Spark Streaming:提供流式处理能力
支持:

Kafka、Flume、Twitter、MQTT、ZeroMQ、Kinesis和简单的TCP套接字等数据源,还提供窗口操作

Spark Streaming详细介绍http://blog.youkuaiyun.com/Wee_Mita/article/details/70882318

2-4 GraphX:提供图计算处理能力,支持分布式

Pregel提供的API可以解决图计算中的常见问题

2-5 MLlib:提供机器学习相关的算法,一致的API接口大大降低了用户学习的成本
提供:

基础统计、分类、回归、决策树、随机森林、朴素贝叶斯、保序回归、协同过滤、聚类、维数缩减、特征提取与转型、频繁模式挖掘、语言模型标记语言、管道等

3.Spark模型设计

Spark编程模型
这里写图片描述

1. 使用SparkContext提供的API(textFile、sequenceFile、runJob、stop)编写Driver Application程序【SQLContext、HiveContext、StreamingContext对SparkContext进行封装,并提供了SQL、Hive、流式计算相关的API】
PS:SparkContext隐藏了网络通信,分布式部署,消息通信,存储能力,计算能力,缓存,测量系统,文件服务,Web服务等

2. SparkContext提交的用户应用程序
2-1 使用BlockManager和BroadcastManager将任务的Hadoop配置进行广播
2-2 由DAGScheduler将任务转换为RDD并组织成DAG
2-3 DAG被划分为不同的Stage
2-4 TaskScheduler借助ActorSystem将任务提交给集群管理器(Cluster Manager)

3. Cluster Manager给任务分配资源(即将具体任务分配到Worker上)
3-1 Worker创建Executor来处理任务的运行
PS:Standalone、YARN、Mesos、EC2可以作为Spark的Cluster Manager

RDD计算模型
这里写图片描述

  1. RDD可以看成做是对各种数据计算模型的统一抽象,Spark的计算过程主要是RDD的迭代计算过程。
  2. RDD的迭代计算过程非常类似于管道,分区数量取决于partition数量的设定。
  3. 每个分区的数据只会在一个Task中计算,所以分区可以在多个机器节点的Executor上并行执行。

4.Spark基本架构图

这里写图片描述

  • Cluster Manager:Spark的集群管理器,主要负责资源的分配与管理

    集群管理器分配的资源属于一级分配,它将各个Worker上的内存、CPU等资源分配给应用程序,但并不负责对Executor的资源分配

  • Worker:Spark的工作节点

    对Spark应用程序来说,由集群管理器分配得到资源的Worker节点主要负责以下工作:创建Executor,将资源和任务进一步分配给Executor,同步资源信息给Cluster Manager

  • Executor:自行计算任务的一线进程

    主要负责任务的执行以及与Worker、Driver App的通信

  • Driver App:客户端驱动程序,也可以理解为客户端应用程序

    用于将任务程序转换为RDD和DAG,并与Cluster Manager 进行通信和调度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值