我是靠谱客的博主 孝顺荔枝,最近开发中收集的这篇文章主要介绍Spark系列(三)Spark的工作机制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

什么时候才能回归到看论文,写感想的日子呀~刚刚交完房租的我血槽已空。看了师妹关于Spark报告的PPT,好怀念学生时代开组会的时光啊,虽然我已经离开学校不长不短两个月,但我还是非常认真的翻阅了,并作为大自然的搬运工来搬运知识了。

Spark的执行模式

1、Local,本地执行,通过多线程来实现并行计算。
2、本地伪集群运行模式,用单机模拟集群,有多个进程。
3、Standalone,spark做资源调度,任务的调度和计算。部署繁琐。

4、Yarn, Mesos,通用的统一资源管理机制,可以在上面运行多种计算框架。

着重介绍比较广泛应用集群管理器Yarn

YARN 是在 Hadoop 2.0中引入的集群管理器,它可以让多种数据处理框架运行在一个共享的资源池上,并且通常安装在与 Hadoop 文件系统(简称 HDFS)相同的物理节点上。

第一步是找到你的 Hadoop 的配置目录,并把它设为环境变量HADOOP_CONF_DIR。这个目录包含 yarn-site.xml 和其他配置文件;如果你把 Hadoop 装到 HADOOP_HOME 中,那么这个目录通常位于HADOOP_HOME/conf 中,否则可能位于系统目录 /etc/hadoop/conf中。然后用如下方式提交你的应用:
export HADOOP_CONF_DIR="..." 
spark-submit --master yarn yourapp

有两种将应用连接到集群的模式:客户端模式以及集群模式。在客户端模式下应用的驱动器程序运行在提交应用的机器上(比如你的笔记本电脑),而在集群模式下,驱动器程序也运行在一个 YARN 容器内部。这就涉及了应用的两种提交方式。

应用的提交方式

Driver运行在客户端,即为客户端模式


Driver运行在集群上,是集群中的某一个Worker,即集群模式


执行流程

基于上图我们将详细介绍资源的调度和任务的分配,主要从Application的调度-Job调度-Stage调度来说明

Application的调度

多用户需要共享集群资源时,可以依据集群管理者的配置,分配资源

YARN:配置每个应用分配的executor数量,每个executor占用的的内存大小和CPU核数

Job的调度
Job的调度符合FIFO, 调度池里面是很多任务集,任务集有两个ID ,JOBID 和stageID,ID小的先执行。 JOB: FIFO

stage:  DAGScheduler

Stage的调度

Stage的DAG以最后执行的 Stage为根进行广度优先遍历,遍历到最开始执行的Stage执行。DAGScheduler中还维持了几个重要的Key-Value集 :

waitingStages中记录仍有未执行的父Stage,防止过早执行;

runningStages中保存正在执行的Stage,防止重复执行;

failedStages中保存执行失败的Stage,需要重新执行。

DONE




最后

以上就是孝顺荔枝为你收集整理的Spark系列(三)Spark的工作机制的全部内容,希望文章能够帮你解决Spark系列(三)Spark的工作机制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部