前言:

Spark的运行模式指的是Spark应用程序以怎样的方式运行,单节本地点运行还是多节点集群运行,自己进行资源调度管理还是依靠别人进行调度管理。Spark提供了多种多样,灵活多变的部署模式。

一、部署模式

这是spark官方给出的master的配置选项,也从另一个侧面说明了spark的不同部署和运行模式。

Spark部署模式总体来讲可以分为以下几种:

Local:这种模式一般用在本地IDEA中调试运行使用,在进行spark实例创建的时候指定master为local,其中local为利用本节点单核单线程运行,local[n]为n核多线程运行;

方式:./spark-shell - -master local[n] ,n代表线程数

Standalone:即独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统。从一定程度上说,该模式是其他两种的基础。目前Spark在standalone模式下是没有任何单点故障问题的,这是借助zookeeper实现的。

Yarn/Mesos:这其实可以理解为依靠第三方资源管理器来进行资源管理的部署方式:Mesos是官方推荐的一种部署模式,由于Spark开发之初就考虑到支持Mesos,因此,目前而言,Spark运行在Mesos上会比运行在YARN上更加灵活,更加自然。但是由于Hadoop生态的完善发展,大部分的企业都是将Spark作为组件引入到了Hadoop生态中,因此更多的是借助Yarn来进行资源管理。这是一种很有前景的部署模式。

Yarn部署模式下,又根据driver启动在本地(client)还是在Yarn集群内部的AM中(cluster)中分为以下两种:

1) yarn-cluster:适用于生产环境;

2) yarn-client:适用于交互、调试,希望立即看到app的输出

Kubernetes:一个开源系统,用于自动化、容器化应用程序的部署,扩展和管理。随着容器化技术的发展,如果考虑到平台上云,或者有时候为了更好的动态扩展、资源隔离的时候,可以采用容器化部署的方式。

二、运行机制

spark运行最重要的概念包括sparkcontext以及executor,SparkContext中包含了划分stage的DAGScheduler和划分task的TaskScheduler,executor具体来接收task然后创建线程池来进行运行。对于不同的模式,这里面的资源申请和任务调度稍有不同,我们用两种最常用的模式来进行分析。

standalone模式运行机制

这张图表示的是standalone模式下的运行流程。上面虽然标了1-6个步骤,但是我大体可以将其分为三个步骤:

1.资源申请:在该模式下,Client中创建了SparkContext(简称SC),SC向master注册并申请资源,master管理了多个worker节点,通过心跳可以时刻备案哪些worker有资源,然后将有空闲的worker挑选出来,创建Executor,分配给SC(Executor会向SC报道)

2.任务运行:在Executor向SC报道之后,SC就知道可以在它上面运行具体任务了,就会将任务进行分解,先分解成Stage,然后进一步分解出task,发送到Executor中执行;Executor创建线程池,来运行这些任务,并及时向SC汇报执行情况;

3.任务注销:当任务执行完毕,SC向master进行注销操作

Yarn模式运行机制

这是yarn模式下,准确的说是yarn-client模式(因为SparkContext在Client中所以为yarn-client)下的运行流程。

这张图也是标记了1-6多个步骤,我依然给分为三个阶段:

1.资源申请:Yarn模式跟Standalone模式最大的区别就是,资源不是由spark自己管理,而是依赖第三方资源管理器进行管理,因此资源申请就要更费劲一点。首先,client中创建了SparkContext(SC),为了找到能够帮它创建Executor的master,它需要先向ResourceManager(用了Yarn,RM就是新的老大)申请创建ApplicationMaster(简称AM),RM会在各个NodeManager(简单理解为节点,简称NM)中找一个空闲的container(Yarn资源管理模式下的最小的资源申请单位)来启动AM。有了AM,AM就可以向RM申请NM来为SC创建Executor啦,同样,Executor在启动之后会向SC注册并申请task;

2.任务运行:有了Executor,基本就跟Standalone模式差不多了,在Executor向SC报道之后,SC就知道可以在它上面运行具体任务了,就会将任务进行分解,先分解成Stage,然后进一步分解出task,发送到Executor中执行;Executor创建线程池,来运行这些任务,并及时向SC汇报执行情况;

3.任务注销:任务运行完成之后,client的SC向RM注销自己并关闭自己

上面讲了两种重要部署模式下的运行机制,如果是yarn-cluster会是怎样的逻辑呢,其实如果你理解了以上两种运行方式,这个也就能自己推理出来了,放一张图自己试试看(tips:只是driver从client跑到了ApplicationMaster节点了而已)。

总结:

了解了spark的部署模式及其运行机制,你就对spark的认识又有了一步质的提高,当然理论与实践还是会有差别,不同部署模式可能会出现一些不兼容的问题,我们还是需要多动手运行,从实践中掌握更多。

spark任务shell运行_Spark原理与实战之部署模式与运行机制相关推荐

  1. spark任务shell运行_Spark原理与实战(七)部署模式与运行机制

    导读:Spark的运行模式指的是Spark应用程序以怎样的方式运行,单节本地点运行还是多节点集群运行,自己进行资源调度管理还是依靠别人进行调度管理.Spark提供了多种多样,灵活多变的部署模式. 作者 ...

  2. idea创建python spark项目的步骤_Spark入门(二)--如何用Idea运行我们的Spark项目

    用Idea搭建我们的Spark环境 用IDEA搭建我们的环境有很多好处,其中最大的好处,就是我们甚至可以在工程当中直接运行.调试我们的代码,在控制台输出我们的结果.或者可以逐行跟踪代码,了解spark ...

  3. 论GTA线上科技的使用原理及GTA线上模式P2P运行原理

    在正确使用科技之前首先要了解一下游戏科技的原理以及GTA线上模式p2p网络运行原理 关于p2p我建议用心去看一下,了解之后对于你之后上手2t或者玩别的gta科技有很大的帮助如果看不懂可以看我下面说的话 ...

  4. 下运行maven命令_如何在批处理模式下运行 top 命令

    可能已经知道 top 命令的绝大部分操作,除了很少的几个操作,如果我没错的话,批处理模式就是其中之一. -- Magesh Maruthamuthu(作者) top 命令 是每个人都在使用的用于 监控 ...

  5. spark任务shell运行_大数据系列:Spark的工作原理及架构

    介绍 本Apache Spark教程将说明Apache Spark的运行时架构以及主要的Spark术语,例如Apache SparkContext,Spark shell,Apache Spark应用 ...

  6. spark sql 本地调试_Spark精华问答|Spark的三种运行模式有何区别?

    戳蓝字"CSDN云计算"关注我们哦! Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右,是hadoop的升级版本,Hadoop作为第 ...

  7. Spark详解(十一):Spark运行架构原理分析

    1. Spark 运行架构总体分析 1.1 总体介绍 Spark应用程序的运行架构基本上由三部分组成,包括SparkContext(驱动程序).ClusterManger(集群资源管理器)和Execu ...

  8. 深入理解Spark 2.1 Core (五):Standalone模式运行的原理与源码分析

    概述 前几篇博文都在介绍Spark的调度,这篇博文我们从更加宏观的调度看Spark,讲讲Spark的部署模式.Spark部署模式分以下几种: local 模式 local-cluster 模式 Sta ...

  9. Zookeeper原理及实战开发-余强-专题视频课程

    Zookeeper原理及实战开发-77788人已学习 课程介绍         hadoop大数据 zookeeper原理及实战开发的一个课程内容. 学习此课程 开发理解任何分布式应用程序的话应该都是 ...

最新文章

  1. 判定设备_盐雾腐蚀试验判定标准
  2. Python技巧之函数拆包裹
  3. Linux系统卸载Apache(阿帕奇)环境教程
  4. linux系统运行时间
  5. python如何模拟键盘输入_python实现键盘输入的实操方法
  6. AciveMQ小结|最后有视频
  7. UVA272--TEX Quotes【字符串】
  8. lingo入门(数据部分)
  9. 同样存10万元 换种方式存钱让你利息增加6倍
  10. python文件之间如何互相通信_不同的類和.py文件之間的python通信
  11. weblogic 集群配置
  12. linux中grep命令的使用
  13. 谷歌云盘超大文件快速下载方法
  14. 猿创征文|Apache ShenYu网关插件介绍
  15. 苹果手游代充灰色产业深度揭秘
  16. 猴子分桃问题的几种解法
  17. 吃透Redis系列(五):RDB和AOF持久化详细介绍
  18. 北京电信整顿“一机双号” 通信管理局要求清理原库
  19. 计算机网络双语chapter4答案,计算机网络题库chapter4
  20. 推荐一些好用的APP

热门文章

  1. SpringMVC自学日志05(结果跳转方式,数据处理 ,乱码问题)
  2. spring事务浅析
  3. mysql数据库连接配置路径_关于mysql安装后更改数据库路径方法-linux环境
  4. 在每个运行中运行多个查询_linux系统中运行级别介绍
  5. oracle数据库环境实验报告,《Oracle数据库》实验报告二
  6. vue router 路由鉴权(非动态路由)
  7. App-V轻量级应用程序虚拟化之三客户端测试
  8. android6.0权限管理工具EasyPermissionUtil
  9. Android执行时ART载入OAT文件的过程分析
  10. 小米鼠标垫功能奇异 价格也不贵