阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Spark集群的运行流程

555次阅读
没有评论

共计 3845 个字符,预计需要花费 10 分钟才能阅读完成。

一、Spark on Standalone

1.spark 集群启动后,Worker 向 Master 注册信息

Spark 集群的运行流程

2.spark-submit 命令提交程序后,driver 和 application 也会向 Master 注册信息

Spark 集群的运行流程

Spark 集群的运行流程

3. 创建 SparkContext 对象:主要的对象包含 DAGScheduler 和 TaskScheduler

4.Driver 把 Application 信息注册给 Master 后,Master 会根据 App 信息去 Worker 节点启动 Executor

5.Executor 内部会创建运行 task 的线程池,然后把启动的 Executor 反向注册给 Dirver

6.DAGScheduler:负责把 Spark 作业转换成 Stage 的 DAG(Directed Acyclic Graph 有向无环图),根据宽窄依赖切分 Stage,然后把 Stage 封装成 TaskSet 的形式发送个 TaskScheduler;

  同时 DAGScheduler 还会处理由于 Shuffle 数据丢失导致的失败;

7.TaskScheduler:维护所有 TaskSet,分发 Task 给各个节点的 Executor(根据数据本地化策略分发 Task),监控 task 的运行状态,负责重试失败的 task;

8. 所有 task 运行完成后,SparkContext 向 Master 注销,释放资源;

注:job 的失败不会重试

Spark 集群的运行流程

二、Spark on Yarn

yarn 是一种统一的资源管理机制,可以通过队列的方式,管理运行多套计算框架。Spark on Yarn 模式根据 Dirver 在集群中的位置分为两种模式

一种是 Yarn-Client 模式,另一种是 Yarn-Cluster 模式

yarn 框架的基本运行流程图

Spark 集群的运行流程

ResourceManager:负责将集群的资源分配给各个应用使用,而资源分配和调度的基本单位是 Container,其中封装了集群资源(CPU、内存、磁盘等),每个任务只能在 Container 中运行,并且只使用 Container 中的资源;

NodeManager:是一个个计算节点,负责启动 Application 所需的 Container,并监控资源的使用情况汇报给 ResourceManager

ApplicationMaster:主要负责向 ResourceManager 申请 Application 的资源,获取 Container 并跟踪这些 Container 的运行状态和执行进度,执行完后通知 ResourceManager 注销 ApplicationMaster,ApplicationMaster 也是运行在 Container 中;

(1)client

 yarn-client 模式,Dirver 运行在本地的客户端上。

Spark 集群的运行流程

1.client 向 ResouceManager 申请启动 ApplicationMaster,同时在 SparkContext 初始化中创建 DAGScheduler 和 TaskScheduler

2.ResouceManager 收到请求后,在一台 NodeManager 中启动第一个 Container 运行 ApplicationMaster

3.Dirver 中的 SparkContext 初始化完成后与 ApplicationMaster 建立通讯,ApplicationMaster 向 ResourceManager 申请 Application 的资源

4. 一旦 ApplicationMaster 申请到资源,便与之对应的 NodeManager 通讯,启动 Executor,并把 Executor 信息反向注册给 Dirver

5.Dirver 分发 task,并监控 Executor 的运行状态,负责重试失败的 task

6. 运行完成后,Client 的 SparkContext 向 ResourceManager 申请注销并关闭自己

(2)cluster

yarn-cluster 模式中,当用户向 yarn 提交应用程序后,yarn 将分为两阶段运行该应用程序:

第一个阶段是把 Spark 的 Dirver 作为一个 ApplicationMaster 在 yarn 中启动;

第二个阶段是 ApplicationMaster 向 ResourceManager 申请资源,并启动 Executor 来运行 task,同时监控 task 整个运行流程并重试失败的 task;

 Spark 集群的运行流程

Yarn-client 和 Yarn-cluster 的区别:

yarn-cluster 模式下,Dirver 运行在 ApplicationMaster 中,负责申请资源并监控 task 运行状态和重试失败的 task,当用户提交了作业之后就可以关掉 client,作业会继续在 yarn 中运行;

yarn-client 模式下,Dirver 运行在本地客户端,client 不能离开。

Dirver 与集群间的通信主要有以下几点:

1. 注册 Dirver 信息

2. 根据宽窄依赖切分 stage

3. 注册 Application 信息

4. 分发 task

5. 监听 task 的运行状态

6. 重试失败的 task

7. 重试失败的 stage

 Spark 的数据本地化机制有以下 5 种:

1、PROCESS_LOCAL 进程本地化
2、NODE_LOCAL 节点本地化
3、NO_PREF        读取的数据在数据库中
4、RACK_LOCAL  机架本地化
5、ANY   跨机架
如何选择数据本地化的级别?
TaskScheduler 发送的 task 在 Executor 上无法执行时,TaskScheduler 会降低数据本地化的级别,再次发送,如果还是无法执行,再降低一次数据本地化的级别,再次发送,直至可以执行。

默认每次等待 3s,重试 5 次,之后降一级本地化级别。

如何提高数据本地化的级别?
task 执行的等待时间延长,从原来的 3s 提高到 6s
提高数据本地化的级别要注意,不要本末倒置
spark.locality.wait 默认 3s
spark.locality.process 等待进程本地化的时间,默认与 spark.locality.wait 相等
spark.locality.node
spark.locality.rack

Spark shuffle 阶段的数据传输

MapOutputTrackerWorker(从):在 spark 集群的每个 worker 中,负责将本地的 map output block 信息发送给 master 中的 MapOutputTrackerMaster

MapOutputTrackerMaster(主):在 spark 集群的 master 中,负责记录各个 worker 节点的 map output block 信息

BlockManager:每个 Executor 中的 BlockManager 实例化的时候都会向 Dirver 中的 BlockManagerMaster 注册信息,而 BlockManagerMaster 会创建 BlockManagerInfo 来管理元数据信息

BlockManagerMaster:在 DAGScheduler 对象中,管理元数据信息

BlockManagerSlaveEndpoint:在 Executor 端,负责接收 BlockManagerMaster 发送过来的信息

BlockTransferService:传输各个节点的 block

MemoryStore、DiskStore

更多 Spark 相关教程见以下内容

CentOS 7.0 下安装并配置 Spark  http://www.linuxidc.com/Linux/2015-08/122284.htm

Ubuntu 系统搭建单机 Spark 注意事项  http://www.linuxidc.com/Linux/2017-10/147220.htm

Spark1.0.0 部署指南 http://www.linuxidc.com/Linux/2014-07/104304.htm

Spark2.0 安装配置文档  http://www.linuxidc.com/Linux/2016-09/135352.htm

Spark 1.5、Hadoop 2.7 集群环境搭建  http://www.linuxidc.com/Linux/2016-09/135067.htm

Spark 官方文档 – 中文翻译  http://www.linuxidc.com/Linux/2016-04/130621.htm

在 Ubuntu 17.10 上安装 Apache Spark  http://www.linuxidc.com/Linux/2017-12/149853.htm

CentOS 6.2(64 位)下安装 Spark0.8.0 详细记录 http://www.linuxidc.com/Linux/2014-06/102583.htm

Spark-2.2.0 安装和部署详解  http://www.linuxidc.com/Linux/2017-08/146215.htm

Spark2.0.2 Hadoop2.6.4 全分布式配置详解 http://www.linuxidc.com/Linux/2016-11/137367.htm

Ubuntu 14.04 LTS 安装 Spark 1.6.0(伪分布式)http://www.linuxidc.com/Linux/2016-03/129068.htm

Spark 的详细介绍:请点这里
Spark 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2018-02/150886.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3845字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7994313
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...