大数据面试题:Spark的任务执行流程

news2024/11/18 12:21:43

面试题来源:

《大数据面试题 V4.0》

大数据面试题V3.0,523道题,679页,46w字

可回答:1)Spark的工作流程?2)Spark的调度流程;3)Spark的任务调度原理;4)Spark的任务提交和执行流程;5)Spark任务调度到yarn上面,流程;6)Spark job提交过程讲一下?7)Spark On YARN流程,Client与Cluster模式;8)spark执行机制

参考答案:

运行流程以SparkContext为程序运行的总入口,在SparkContext的初始化过程中,Spark会分别创建DAGScheduler作业调度和TaskScheduler任务调度两级调度模块。

  • 作业调度模块是基于任务阶段的高层调度模块,它为每个Spark作业计算具有依赖关系的多个调度阶段(通常根据shuffle来划分),然后为每个阶段构建出一组具体的任务(通常会考虑数据的本地性等),然后以TaskSets(任务组) 的形式提交给任务调度模块来具体执行。

  • 任务调度模块则负责具体启动任务、监控和汇报任务运行情况。

image-20220202131305586

详细的运行流程:

1)程序提交后,Driver端的SparkSubmit进程和Master进行通信,构建Application的运行环境,创建并启动SparkContext,SparkContext向资源管理器(可以是Standalone、Mesos或YARN)注册并申请运行Executor资源;

 val conf = new SparkConf()
 conf.setAppName("test")
 conf.setMaster("local")
 val sc = new SparkContext(conf)

2)资源管理器分配Executor资源并启动StandaloneExecutorBackend(Standalone模式下),Executor运行情况将随着心跳发送到资源管理器上;

3)SparkContext构建成DAG图,将DAG图分解成Stage,并把Taskset发送给TaskScheduler。Executor向SparkContext申请Task,Task Scheduler将Task发放给Executor运行,同时SparkContext将应用程序代码发放给Executor;(Driver开始执行main函数,Spark查询为懒执行,当执行到Action算子时开始反向推算,根据宽依赖进行Stage的划分,随后每一个Stage对应一个Taskset,Taskset中有多个Task,查找可用资源Executor进行调度)

4)Task在Executor上运行,运行完释放所有资源。

综上:

  • Spark应用被提交–>SparkContext向资源管理器注册并申请资源–>启动Executor

  • RDD–>构建DAG–>DAGScheduler划分Stage形成TaskSet–>TaskScheduler提交Task–>Worker上的Executor执行Task

 Spark运行架构特点:

  • 每个Application获取专属的Executor进程,该进程在Application期间一直驻留,并以多线程方式运行Tasks。这种Application隔离机制有其优势的,无论是从调度角度看(每个Driver调度它自己的任务),还是从运行角度看(来自不同Application的Task运行在不同的JVM中)。当然,这也意味着Spark Application不能跨应用程序共享数据,除非将数据写入到外部存储系统。

  • Spark与资源管理器无关,只要能够获取Executor进程,并能保持相互通信就可以了。

  • 提交SparkContext的Client应该靠近Worker节点(运行Executor的节点),最好是在同一个Rack里,因为Spark Application运行过程中SparkContext和Executor之间有大量的信息交换;如果想在远程集群中运行,最好使用RPC将SparkContext提交给集群,不要远离Worker运行SparkContext。

  • Task采用了数据本地性和推测执行的优化机制

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

插入排序优化——超越归并排序的超级算法

插入排序及优化 插入排序算法算法讲解数据模拟代码 优化思路一、二分查找二、copy函数 优化后代码算法的用途题目:数星星(POJ2352 star)输入输出格式输入格式:输出格式 输入输出样例输入样例输出样例 题目讲解步骤如下AC 代码 插入…

GPDB-疑难杂症-PlaceHolderVar

GPDB-疑难杂症-PlaceHolderVar 从GPDB5升级到GPDB6时,遇到以往可以执行的SQL不能执行了。报错:PlaceHolderVar found where not expected!语法不兼容了? postgres# CREATE TABLE t1( id1 int) WITH (appendonlytrue, compresstypenone, b…

@Repeatable的作用以及具体如何使用

文章目录 1. 前言2. 先说结论3. 案例演示 1. 前言 最近无意看到某些注解上有Repeatable,出于比较好奇,因此稍微研究并写下此文章。 2. 先说结论 Repeatable的作用:使被他注释的注解可以在同一个地方重复使用。 具体使用如下: T…

shell脚本文本 三剑客AWK

TOC 一.AWK工具介绍 AWK是一种处理文本文件的语言,是一个强大的文本分析工具可以在无交互的模式下实现复杂的文本操作相较于sed常作用于一整行的处理,awk则比较倾向于一行当中分成数个字段来处理,因为awk相当适合小型的文本数据 1.1AWK命令…

听GPT 讲Prometheus源代码--discovery

Prometheus是一个开源的系统监控和警报工具包,以下是Prometheus源代码中一些主要的文件夹及其作用: cmd/:这个目录包含了Prometheus主要的命令行工具,如prometheus/,promtool/等。每个子目录都代表一个可执行的命令行应…

Unsafe upfileupload

文章目录 client checkMIME Typegetimagesize 文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按…

高德地图开发者平台Python应用实践:快速入门周边商业环境信息查询

高德地图开发平台提供了丰富的API接口,可以方便地进行地图数据的开发和分析。在商业分析数据采集中,使用高德地图开发平台的周边查询功能可以快速获取周边商圈、小区等信息,为商业决策提供数据支持。 针对您的需求,我建议采用以下…

stream.map return

出现以下告警信息 Statement lambda can be replaced with expression lambda less... (CtrlF1) This inspection reports lambda expressions with code block bodies when expression-style bodies can be used 将 List<StudentDetailDto> studentDetailDtoList link…

防丢器Airtag国产版

Airtag是什么&#xff1f; AirTag是苹果公司设计的一款定位神奇&#xff0c;它通过一款纽扣电池进行供电&#xff0c;即可实现长达1-2年的关键物品的定位、查找的功能。 按照苹果公司自己的话说—— 您“丢三落四这门绝技&#xff0c;要‍失‍传‍了”。 AirTag 可帮你轻松追…

Objectarx 2021使用vs2019生成报错 /RTCc rejects conformant code

error C2338: /RTCc rejects conformant code错误解决 使用VS2019/VS2022生成项目报错 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C1189 #error: /RTCc rejects conformant code, so it is not supported by the C Standard Library. Either remove this compiler opti…

网络安全---webshell实践

一、首先环境配置 1.上传文件并解压 2.进入目录下 为了方便解释&#xff0c;我们只用两个节点&#xff0c;启动之后&#xff0c;大家可以看到有 3 个容器&#xff08;可想像成有 3 台服务器就成&#xff09;。 二、使用蚁剑去连接 因为两台节点都在相同的位置存在 ant.jsp&…

vue2.6升级vue2.7(panjiachen升级指南)vue-cli5多页面应用升级的坑

vue2.7升级指南 vue2.7升级指南 之前的架子使用的是 panjiachen&#xff0c;使用的是 vue2.6.14&#xff0c;现在升级为 vue2.7.x 升级vue/cli vue upgrade 这里推荐使用 vue upgrade 命令自动升级 # 确保安装全局 vue/cli $ npm install -g vue/cli $ vue upgradeWARN Th…

Vue 2 自定义指令

Vue 2自定义指令 Vue自定义指令允许我们在DOM元素上添加自己想要的行为来扩展Vue的功能。 一个自定义指令需要一个名称和一个定义对象。在定义对象中&#xff0c;你可以使用一些钩子函数来控制指令的行为&#xff1a; bind&#xff1a;在指令被绑定到元素上时使用&#xff0…

基于IMX6ULLmini的linux裸机开发系列七:中断处理流程

中断上下文 cpu通过内核寄存器来运行指令并进行数据的读写处理的&#xff0c;它在进入中断前一个时刻的具体值&#xff0c;称为中断上下文 中断上下文是指CPU在进入中断之前保存的寄存器状态和其他相关信息。当CPU接收到中断请求时&#xff0c;它会保存当前正在执行的指令的状…

广州华锐互动:3D数字孪生开发编辑器助力企业高效开发数字孪生应用

3D数字孪生开发编辑器是一种新兴的技术&#xff0c;它可以帮助企业更好地管理和维护其物联网设备。这些工具可以帮助企业实现对设备的实时监控、故障排除和优化&#xff0c;从而提高生产效率和降低成本。 数字孪生系统是一种将物理世界与数字世界相结合的技术&#xff0c;它可以…

Python web实战之细说 Django 的单元测试

关键词&#xff1a; Python Web 开发、Django、单元测试、测试驱动开发、TDD、测试框架、持续集成、自动化测试 大家好&#xff0c;今天&#xff0c;我将带领大家进入 Python Web 开发的新世界&#xff0c;深入探讨 Django 的单元测试。通过本文的实战案例和详细讲解&#xff…

【C#学习笔记】C#特性的继承,封装,多态

文章目录 封装访问修饰符静态类和静态方法静态构造函数 继承继承原则sealed修饰符里氏替换原则继承中的构造函数 多态接口接口的实例化 抽象类和抽象方法抽象类和接口的异同 虚方法同名方法new覆盖的父类方法继承的同名方法 运行时的多态性编译时的多态性 照理继承封装多态应该…

Chapter 14: Using Web Services | Python for Everybody 讲义笔记_En

文章目录 Python for Everybody课程简介Python and Web ServicesUsing Web ServiceseXtensible Markup Language - XMLParsing XMLJavaScript Object Notation - JSONParsing JSONApplication Programming InterfacesSecurity and API usageGlossary Python for Everybody Expl…

all in one之安装docker、青龙和青龙卸载更新(第三章)

安装docker和青龙 ubuntu安装docker 参考教程0 参考教程1 参考教程2 apt-get install docker-ce docker-ce-cli containerd.io更改docker国内源 一、国内加速地址 Docker中国区官方镜像 https://registry.docker-cn.com网易 http://hub-mirror.c.163.comustc https://d…

Monitor.Analog采集软件详细设计说明

Monitor.Analog模拟量采集软件概要设计&#xff1a; 1. 引言&#xff1a; 模拟量采集软件的目标是实现对模拟量信号的采集、处理和展示。该软件旨在提供一个用户友好的界面&#xff0c;允许用户配置采集参数、实时监测模拟量信号&#xff0c;并提供数据分析和导出功能。 2. 功能…