当前位置: 首页 > news >正文

Spark任务提交流程

1. yarn-client

在这里插入图片描述

  1. Driver在任务提交的本地机器上运行,Driver启动后会和ResourceManager通讯,申请启动ApplicationMaster;

  2. 随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster的功能相当于一个ExecutorLaucher(加载器),只负责向ResourceManager申请Executor内存;

  3. ResourceManager接到ApplicationMaster的资源申请后会分配Container,然后ApplicationMaster在资源分配指定的NodeManager上启动Executor进程;

  4. Executor进程启动后向ResourceManager发送心跳,向Driver反向注册,Executor全部注册完成后,Driver开始执行main函数

  5. 之后执行到action算子时,触发一个job,并根据宽依赖开始划分Stage,每个stage生成对应的TaskSet,之后将Task分发到各个Executor上执行,执行完毕释放资源。

以运行词频统计WordCount为例,提交命令如下:

[xiaokang@hadoop01 ~]$ /opt/software/spark-3.0.1/bin/spark-submit\
--master yarn \ #运行yarn
--deploy-mode client \ #部署模式client
--driver-memory 512m \ #为driver分配的内存大小
--executor-memory 512m \ #每个executor的内存大小
--executor-cores 1 \ #每个executor 1核
--num-executors 2 \ #集群的executor个数
--queue default \
--class cn.itcast.spark.start.SparkSubmit \ 
hdfs://node01:8020/spark/apps/spark-day02_2.11-1.0.0.jar \
/datas/wordcount.data \
/datas/swcy-client

2. yarn-cluster

在这里插入图片描述

  1. 任务提交后会和ResourceManager通讯,申请启动ApplicationMaster;

  2. 随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster就是Driver;

  3. Driver启动后向ResourceManager申请Executor内存,ResourceManager接到ApplicationMaster的资源申请后会分配Container,然后在合适的NodeManager上启动Executor进程;

  4. Executor进程启动后会向ResourceManager发送心跳,向Driver反向注册;

  5. Executor全部注册完成后,Driver开始执行main函数,之后执行到Action算子时,触发一个job,并根据宽依赖开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行。

以运行词频统计WordCount为例,提交命令如下:

[xiaokang@hadoop01 ~]$ /opt/software/spark-3.0.1/bin/spark-submit \
--master yarn \
--deploy-mode cluster \
--driver-momery 512m \
--executor-memory 512m \
--executor-cores 1 \
--num-executors 2 \
--queue default \
--class cn.itcast.spark.start.SparkSubmit \ 
hdfs://node01:8020/spark/apps/spark-day02_2.11-1.0.0.jar \
/datas/wordcount.data \ 
/datas/swcy-cluster

3. YARN-client与YARN-cluster的不同之处

  1. YARN-client模式,Driver运行在本地机器上;
    YARN-cluster模式,Driver运行在YARN集群的某个NodeManager节点上;

  2. YARN-client模式会导致本地机器负责Spark任务的调度,所以网卡流量会激增;
    YARN-cluster模式没有流量激增的问题;

  3. YARN-client的Driver运行在本地,通常来说本地机器和YARN集群不在同一个机房,所以说性能不会很好;
    YARN-cluster模式下,Driver和YARN集群运你在同一个机房内,性能上来说会好一点。

http://www.lryc.cn/news/65120.html

相关文章:

  • python相对路径与绝对路径
  • SPSS如何进行基本统计分析之案例实训?
  • Python项目实战篇——常用验证码标注和识别(需求分析和实现思路)
  • MySQL基础(六)多表查询
  • 零死角玩转stm32中级篇3-SPI总线
  • 顺序表功能实现(入手版详解)
  • Java 中的线程是什么,如何创建和管理线程-下(十三)
  • 为什么我的Windows 10 便签不支持更改字体?
  • 野火STM32电机系列(六)Cubemx配置ADC规则和注入通道
  • 预制菜,巨头们的新赛场
  • 英语语法第一章之英语语法综述
  • ChatGPT被淘汰了?Auto-GPT到底有多强
  • unity NGUI使用方法
  • 软件测试技术(五)软件测试流程
  • Redis缓存穿透和雪崩
  • 【C++】set和map的使用
  • 大学生学java编程的就业前景怎么样?我来聊聊自己的见解
  • JavaScript全解析——canvas 入门(上)
  • vue 插槽的用法
  • 【C++复习2】C++编译器的工作原理
  • 回调函数_回顾
  • 今天面了个字节跳动拿35K出来的,真是砂纸擦屁股,给我露了一手啊
  • 8. 数据结构与算法
  • Springboot +Flowable,任务认领和回退(一)
  • 机器学习 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络模型答疑
  • 卷首语:我决定从零开始,用C++手写自己的键值数据库
  • 【Vue】收集表单数据 过滤器
  • Linux线程:死锁
  • thinkphp+vue+html超市零食品美食推荐系统零食购物商城网站7v281
  • 思考外语学习的底层逻辑(以英语、法语为例)