:分布式代码执行分析
Posted 黑马程序员官方
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了:分布式代码执行分析相关的知识,希望对你有一定的参考价值。
Spark是大数据体系的明星产品,是一款高性能的分布式内存迭代计算框架,可以处理海量规模的数据。下面就带大家来学习今天的内容!
往期内容:
- Spark基础入门-第一章:Spark 框架概述
- Spark基础入门-第二章:Spark环境搭建-Local
- Spark基础入门-第三章:Spark环境搭建-StandAlone
- Spark基础入门-第四章:Spark环境搭建-StandAlone-HA
- Spark基础入门-第五章:环境搭建-Spark on YARN
- Spark基础入门-第六章:PySpark库
- Spark基础入门-第七章:本机开发环境搭建
一、Spark集群角色回顾(YARN)
当Spark Application运行在集群上时,主要有四个部分组成,如下示意图:
1)、 Master(ResourceManager): 集群大管家, 整个 集群的资源管理和分配;
2)、 Worker(NodeManager): 单个机器的管家,负责 在单个服务器上提供运行容器,管理当前机器的资源;
3)、 Driver: 单个Spark任务的管理者,管理Executor 的任务执行和任务分解分配, 类似YARN的 ApplicationMaster;
4)、 Executor: 具体干活的进程, Spark的工作任务 (Task)都由Executor来负责执行;
二、分布式代码执行分析
Spark Application应用程序运行时,无论client还是cluster部署模式DeployMode,当Driver Program和Executors 启动完成以后,就要开始执行应用程序中MAIN函数的代码,以词频统计WordCount程序为例剖析讲解。
第一、构建SparkContex对象和关闭SparkContext资源,都是在Driver Program中执行,上图中①和③都是,如 下图所示:
第二、上图中②的加载数据【A】、处理数据【B】和输出数据【C】代码,都在Executors上执行,从WEB UI监控 页面可以看到此Job ( RDD#action触发一个Job)对应DAG图,如下所示:
所以对于刚刚的WordCount代码,简单分析后得知:
- SparkContext对象的构建 以及 Spark程序的退出, 由 Driver 负责执行
- 具体的数据处理步骤, 由Executor在执行.
其实简单来说就是:
- 非数据处理的部分由Driver工作
- 数据处理的部分(干活)由Executor工作
要知道: Executor不仅仅是一个, 视集群规模,Executor的数量可以是很多的。那么在这里一定要有一个概念: 代码中的数据处理部分,是由非常多的服务器(Executor)执行的,这也是分布式代码执行的概念。
三、Python On Spark 执行原理
PySpark宗旨是在不破坏Spark已有的运行时架构,在Spark架构外层包装一层Python API,借助Py4j实现Python和 Java的交互,进而实现通过Python编写Spark应用程序,其运行时架构如下图所示。
[扩展阅读]Python的OS模块
os模块的用途很多,主要有2种用途
1. 获取系统的各种环境变量
2. 在代码中临时指定环境变量, 如
import os
os.environ[‘JAVA_HOME’] = /xxx/xxx/xxx
既可以在当前Python代码中临时修改环境变量
以上是关于:分布式代码执行分析的主要内容,如果未能解决你的问题,请参考以下文章
CVE-2021-25646Apache Druid 远程代码执行漏洞复现
Android 插件化VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )(代码片段