首页 技术 正文
技术 2022年11月6日
0 收藏 412 点赞 573 浏览 1600 个字

Spark 使用主从架构,有一个中心协调器和许多分布式worker。

中心协调器被称为driver。Driver 和被称为executor 的大量分布式worker 通信

Driver 运行在它自己的Java 进程,而每个executor 是单独的Java 进程。Driver

和它的所有executor 一起被称为Spark 应用。

Spark 应用运行在一组使用被称为集群管理器的外部服务的机器上。注意,Spark

打包了一个内置的集群管理器,叫做Standalong 集群管理器。Spark 也可以工作
于Hadoop YARN 和Apache Mesos 这两个开源的集群管理器。

  • Driver

Driver 是你的程序的main() 方法所在的进程。该进程运行用户代码创建

SparkContext,创建RDD,执行变换和动作。当运行一个Spark Shell,你就创
建了一个driver 程序 。一旦driver 终止,整个应用就结束了。
当driver 运行时,它有两个职责:

  • 转换用户程序到任务

Spark 的driver 有责任转换用户程序到被称为任务的物理执行单元。从上层看,

所有的Spark 程序都遵循同样的结构:它们从输入创建RDD,通便变换从这些RDD

得到新的RDD,然后执行动作来采集数据或保存数据。Spark

程序隐含创建了操作的逻辑合理的有向无环图(DAG)。当driver 运行时,它

转换该图到物理执行计划。

Spark 执行多种优化,比如“流水线”映射转换合并,并转换执行图到一组

stage。每个stage 又由一组task 组成。Task 则被捆绑在一起准备被发送到集

群。Task 是Spark 处理中的最小单元。典型的用户程序要执行成百上千个单

独的任务。

  • 调度task 到executor

有了物理执行计划,driver 必须协调各独立任务到executor 中。当excutor 启

动后,它们会将自己注册到driver,所以driver 随时都能看到完整的executor

视图。每个executor 表现为能执行任务和保存RDD 数据的进程。
Spark Driver 会寻找当前的executor 组,然后基于数据分布尝试调度每个task
到合适的位置。当任务执行时,可能会对正缓存的数据有副作用。Driver 也
要记录缓存数据的位置并用来调度将来访问这些数据的任务。
Driver 从web 接口暴露出了这些Spark 应用的运行信息,默认端口是4040。
例如,在本地模式,可用的UI 是http://localhost:4040。

  • Executors

Spark Executor 是worker 进程,其职责是运行给定的Spark 作业中的单个任务。

Executor 在Spark 应用开始的时候被启动一次,一般会在应用的整个生命周期都

运行。虽然executor 出错了Spark 也可以继续。Executor 有两个任务。一个是运
行构成应用的任务并返回结果到driver。第二个是通过每个executor 中都存在的
被称为块管理器(Block Manager)的服务为用户程序中缓存的RDD 提供内存存
储。因为RDD 被直接缓存在execturo 中,任务可以和数据在一起运行。

  •       Spark 应用在集群运行时的准确步骤

1. 用户用spark-submit 提交了一个应用。
2. spark-submit 启动driver 程序,并调用用户指定的main()方法。
3. driver 程序联系集群管理器请求资源来启动各executor。
4. 集群管理器代表driver 程序启动各executor。
5. Driver 进程运行整个用户应用。程序中基于RDD 的变换和动作,driver 程序
以task 的形式发送到各executor。
6. Task 在executor 进程运行来计算和保存结果。
7. 如果driver 的main()方法退出或者调用了SparkContext.stop(),就会终止
executor 的运行并释放从集群管理器分配的资源。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,996
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,510
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,353
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,137
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,770
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,848