Spark角色介绍和任务提交过程

一、角色介绍

Spark 架构使用了分布式计算中 master-slave 模型, master 是集群中含有 master 进程的节点, slave 是集群中含有 worker 进程的节点。
◆ Driver Program :运行main 函数并且新建 SparkContext 的程序。
◆ Application :基于 Spark 的应用程序,包含了 driver 程序和集群上的 executor 。
◆ Cluster Manager :指的是在集群上获取资源外部服务。目前有三种类型
(1)Standalone: spark 原生的资源管理,由 Master 负责资源的分配
(2)Apache Mesos: 与 hadoop MR 兼容性良好的一种资源调度框架
(3)Hadoop Yarn: 主要是指 Yarn 中的 ResourceManager
◆ Worker Node: 集群中任何可以运行 Application 代码的节点,在 Standalone Standalone 模式中指的是通过 slaves 文件配置的 Worker 节点,在 Spark on Yarn 模式下就是 NodeManager 节点
◆ Executor :是在一个 worker node 上为某应用启动的 一个进程,该进程负责 运行任务,并且负责将数据存在内存或者磁盘上。每个应用都有各自独立的 executor 。
◆ Task :被送到某个 executor上的工作单元

二、spark的运行过程

Spark任务的调度流程:
1, 执行语句,操作RDD时生成有向无环图(DAG);
2,有向无环图(DAG)交给DAGScheduler,DAGScheduler将任务划分成不同的阶段(stage),一个stage有很多个分区,每一个分区就是一个task,形成一个TaskSet
3,TaskSet 交给TaskScheduler,TaskScheduler会对TaskSet进行遍历取出每一个Task。通过clustermanager加载task,并且重新加载失败的或者奇怪的task
4,将任务提交给Worker ,开启线程分配任务执行所需要的资源。

任务的提交过程需要注意:
1,在spark的任务中,RDD action操作之后首先将结果发送到Driver节点上就是main函数的 SparkContext 的程序
在实际的开发场景中,数据量会很大,如果使用了action之后会将Driver内存使用殆尽导致OOM的异常,解决的方式,直接将数据进行落地saveAsTextFile而不使用action
2,不能够在map中创建Spark
map中的操作是有几个分片就将结果分成几份,这样的话会将spark分别创建在不同的节点上,违背了数据的一致性

补充
如果是从hdfs中读取数据,每个split对应一个block块,每个块对应每个RDD中的分区,所以如果从hdfs中读取数据的话,spark并行度是由block块决定。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值