Spark的通用运行流程与Spark YARN Cluster 模式的运行流程

Spark的通用运行流程

在这里插入图片描述

  1. 集群启动后Worker节点会向Master节点心跳汇报资源
  2. Client向Driver提交APP,根据不同的运行模式在不同的地方创建Driver。
  3. Driver以粗粒度的方式向Master注册应用并申请资源(在Application执行之前,将所有的资源申请完毕,当资源申请成功后,才会进行任务的调度,当所有的Task执行完成后,才会释放这部分资源。)(资源有Executer的CPU Core和Mem)
  4. Master根据SparkContext的资源申请情况以及Worker心跳周期内报告的信息决定在哪个Worker上分配资源,也就是Executer。
  5. Worker节点创建Executer进程,Executer向Driver反向注册。
  6. 资源满足后(Executer注册完毕)SparkContext解析代码,创建RDD,构建DAG,并提交给DAGScheduler分解成Stage(当碰到行动算子时,会催生job,每一个job有一个或多个Stage),然后Stage提交给TaskScheduler,TaskScheduler负责将Task分配给相应的Worker,最后提交Executer执行。
  7. 每个Executer会有一个线程池,Executer通过启动多个线程(Task)来对RDD的Partition进行并行计算,并向SparkContext报告,直到Task完成。
  8. 所有Task完成后,SparkContext向Master注销,释放资源。

Spark YARN Cluster 模式的运行流程

在这里插入图片描述

  • 第一个阶段是把Spark的Driver作为一个ApplicationMaster在YARN集群中启动
  • 第二个阶段是由ApplicationMaster创建应用程序,然后为他向ResourceManager申请资源,并启动Executer来运行Task,同时监控他的整个过程,直到运行完成。
  1. 在YARN Cluster模式下,Driver运行在ApplicationMaster中。程序启动后会和ResourceManager通讯申请启动ApplicationMaster;
  2. ResourceManager收到请求后,通过ResourceScheduler选择一台NodeManager分配一个Container,在Container中开启ApplicationMaster进程;同时在ApplicationMaster中初始化Driver;
  3. ApplicationMaster向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后他将采用轮询的方式通过RPC协议为各个任务申请资源,并监控他们运行状态直到运行结束;
  4. 一旦ApplicationMaster申请到资源(也就是Container)后,便与对应的NodeManager通信,在NodeManager的Container中启动CoarseGrainedExecutorBackend,CoarseGrainedExecutorBackend启动后会向Driver中的SparkContext反向注册并申请Task。
  5. Applicat给ionMaster中的SparkContext分配Task给CoarseGrainedExecutorBackend执行,CoarseGrainedExecutorBackend运行Task并向ApplicationMaster汇报运行的状态和进度,方便ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。
  6. 应用程序运行完成后,ApplicationMaster向ResourceManager申请注销并关闭自己。该模式下只能通过YARN查看日志。

YARN的Client提交和Cluster提交的区别

  1. Client模式:
    • 在Client模式下,驱动程序(Spark应用的主程序)运行在提交作业的客户端机器上,而不是集群中。
    • 驱动程序与集群中的资源不直接交互,而是依赖于客户机的机器资源,包括CPU,内存和网络带宽等。
    • 客户端负责与ResourceManager通信以请求容器来运行ApplicationMaster和Executor,并且客户端还会负责监控Spark应用发运行状态。
    • 由于驱动程序运行在客户端机器上,因此跟容易地监控和调试作业,开发人员可以直接查看驱动程序的日志和输出。
  2. Cluster模式:
    1. 在Cluster模式下,驱动程序运行在集群中,由ResourceManager分配资源,作业提交后,ResourceManager会启动一个ApplicationManager来管理作业的执行,并分配资源给各个Executor
    2. 客户机仅用于提交作业,一旦作业提交成功后,客户机的角色就结束了。整个作业运行过程由集群负责,包括资源分配和任务的调度。
    3. 由于作业的执行不依赖于客户端机器的资源,而是利用整个集群的资源,因此Cluster模式适合用于生产环境中的大规模数据处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/207805.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[操作系统]进程和线程

目录 1.什么是进程 1.1进程控制块抽象 1.2 CPU 分配 —— 进程调度(Process Scheduling) 1.3内存分配 —— 内存管理(Memory Manage) 1.4进程间通信(Inter Process Communication) 2.线程 2.1概念 2.2为什么要有线程 2.3线…

阿里巴巴国际站自养号测评方式提升星级的优势与要求

作为国际站的商家,都明白星等级这个重要指标的重要性。它像一块闪耀的招牌,不仅彰显了商家的运营能力,还体现了公司的实力。维护一个高等级的星等级,可以使商家的运营工作更加轻松,而低等级则需要花费更多的精力。提升…

TikTok Shop订单狂涨,黑五全托管品类日卖爆了

01 黑五品类日爆单 显然,TikTok Shop在美国的首个黑五大促收获了胜利的果实。 根据最新发布的数据,TikTok Shop全托管黑五六大品类日支付GMV(总交易额)和支付量双双实现大幅度增长。举其中几个具体数据来看,女装童鞋…

redis运维(十五) 集合

一 集合 ① 概念 集合的元素在redis里面的世界是member集合: setset集合当中不允许重复的元素,而且set集合当中元素是没有顺序的,不存在元素下标 ② sadd、smembers、srem ③ sismember、srandmember、spop、scard spop 命令用于移除集合中的指定 …

【Django-DRF】多年md笔记第5篇:Django-DRF的Request、Response和视图详解

本文从分析现在流行的前后端分离Web应用模式说起,然后介绍如何设计REST API,通过使用Django来实现一个REST API为例,明确后端开发REST API要做的最核心工作,然后介绍Django REST framework能帮助我们简化开发REST API的工作。 Dj…

人工智能基础部分22-几种卷积神经网络结构的介绍,并用pytorch框架搭建模型

大家好,我是微学AI,今天给大家介绍一下人工智能基础部分22-几种卷积神经网络结构的介绍,本篇文章我将给大家详细介绍VGG16、VGG19、ResNet、SENet、MobileNet这几个卷积神经网络结构,以及pytorch搭建代码,利用通用数据…

【tomcat】java.lang.Exception: Socket bind failed: [730048

项目中一些旧工程运行情况处理 问题 1、启动端口占用 2、打印编码乱码 ʮһ�� 13, 2023 9:33:26 ���� org.apache.coyote.AbstractProtocol init ����: Fa…

基于python人脸性别年龄检测系统-深度学习项目

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介简介技术组成1. OpenCV2. Dlib3. TensorFlow 和 Keras 功能流程 二、功能三、系统四. 总结 一项目简介 # Python 人脸性别年龄检测系统介绍 简介 该系统基…

Android : ListView + BaseAdapter-2简单应用

​​容器与适配器:​​​​​ http://t.csdnimg.cn/ZfAJ7 实体类 News.java package com.example.mylistviewadapter2.entity;public class News {private String title;private String content;private int img;public News(String title, String conte…

Linux中的进程程序替换

Linux中的进程程序替换 1. 替换原理2. 替换函数3. 函数解释4. 命名理解程序替换的意义 1. 替换原理 替换原理 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的…

智慧法院档案数字化解决方案

智慧法院档案数字化解决方案可以采用以下步骤: 1. 确定数字化目标:明确数字化的目标和范围,比如将所有的案件相关文件、纸质档案和材料进行数字化。 2. 确定数字化流程:制定数字化的流程和标准,比如采用哪些设备和软件…

解决requests库进行爬虫ip请求时遇到的错误的方法

目录 一、超时错误 二、连接错误 三、拒绝服务错误 四、内容编码错误 五、HTTP错误 在利用requests库进行网络爬虫的IP请求时,我们可能会遇到各种错误,如超时、连接错误、拒绝服务等等。这些错误通常是由目标网站的限制、网络问题或我们的爬虫代码中…