欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。

欢迎跳转到本文的原文链接:https://honeypps.com/mq/kafka-and-spark-integration-4-running-structure/


在分布式环境下,Spark集群采用的是主从架构。如下图所示,在一个Spark集群中,有一个节点负责中央协调,调度各个分布式工作节点,这个中央协调节点被称为驱动器(Driver)节点,与之对应的工作节点被称为执行器(Executor)节点。驱动器节点可以和大量的执行器节点进行通信,它们也都作为独立的进程运行。驱动器节点和所有的执行器节点一起被称为一个Spark应用(Application)。

Spark应用通过一个叫做集群管理器(Cluster Manager)的外部服务在集群中的机器上启动。Spark自带的集群管理器被称为独立集群管理器。Spark也能运行在YARN、Mesos、Kubernetes这类开源集群管理器上。

Spark驱动器节点是执行你程序中的main()方法的进程。它执行用户编写的用来创建SparkContext、创建RDD,以及进行RDD的转换操作和行动操作的代码。其实,当你启动spark-shell时,你就启动了一个Spark驱动程序。驱动程序一旦停止,Spark应用也就结束了。

驱动器程序在Spark应用中有两个职责:把用户程序转为任务以及为执行器节点调度任务。

Spark驱动器程序负责把用户程序转为多个物理执行的单元,这些单元也被称为任务(Task)。任务是Spark中最小的工作单元,用户程序通常要启动成百上千的独立任务。从上层来看,所有的Spark程序都遵循同样的结构:程序从输入数据创建一系列RDD,再使用转换操作派生出新的RDD,最后使用行动操作收集或存储结果RDD中的数据。Spark程序其实是隐式地创建出了一个由操作组成的逻辑上的有向无环图(Directed Acyclic Graph,简称DAG)。当驱动器程序运行时,它会把这个逻辑图转为物理执行计划。

有了物理执行计划之后,Spark驱动器程序必须在各执行器进程间协调任务的调度。执行器进程启动后,会向驱动器进程注册自己。因此,驱动器进程始终对应用中所有的执行器节点有完整的记录。每个执行器节点代表一个能够处理任务和存储RDD数据的进程。

Spark驱动器程序会根据当前的执行器节点集合,尝试把所有任务基于数据所在位置分配给合适的执行器进程。当任务执行时,执行器进程会把缓存数据存储起来,而驱动器进程同样会跟踪这些缓存数据的位置,并且利用这些位置信息来调度以后的任务,以尽量减少数据的网络传输。

Spark执行器节点是一种工作进程,负责在Spark作业中运行任务,任务间相互独立。Spark应用启动时,执行器节点就被同步启动,并且始终伴随着整个Spark应用的生命周期而存在。如果有执行器节点发生了异常或崩溃,Spark应用也可以继续执行。执行器进程有两大作用:第一,它们负责运行组成Spark应用的任务,并将结果返回给驱动器进程;第二,它们通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储。RDD是直接缓存在执行器进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

Spark依赖于集群管理器来启动执行器节点,而在某些特殊的情况下,也依赖集群管理器来启动驱动器节点。集群管理器是Spark中的可插拔式组件,这样既可选择Spark自带的独立集群管理,也可以选择前面所提及的YARN、Mesos之类的外部集群管理器。

不论你使用的是哪一种集群管理器,你都可以使用Spark提供的统一脚本spark-submit将你的应用提交到那种集群管理器上。通过不同的配置选项,spark-submit可以连接到相应的集群管理器上,并控制应用所使用的资源数量。在使用某些特定集群管理器时,spark-submit也可以将驱动器节点运行在集群内部(比如一个YARN的工作节点)。但对于其他的集群管理器,驱动器节点只能被运行在本地机器上。

在集群上运行spark应用的详细过程为:1. 用户通过spark-submit脚本提交应用。2. spark-submit脚本启动驱动器程序,调用用户定义的main()方法。3. 驱动器程序与集群管理器通信,申请资源以启动执行器节点。4. 集群管理器为驱动器程序启动执行器节点。5. 驱动器进行执行用户应用中的操作。根据程序中所定义的对RDD的转换操作和行动操作,驱动器节点把工作以任务的形式发送到执行器进行。6. 任务在执行器程序中进行计算并保存结果。7. 如果驱动器程序的main()方法退出,或者调用了SparkContext.stop(),驱动器程序会终止执行器进程,并且通过集群管理器释放资源。

欢迎跳转到本文的原文链接:https://honeypps.com/mq/kafka-and-spark-integration-4-running-structure/


欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。


[Kafka与Spark集成系列四] Spark运行结构相关推荐

  1. Kafka与Spark集成系列二Spark的安装及简单应用

    原 [Kafka与Spark集成系列二] Spark的安装及简单应用https://blog.csdn.net/u013256816/article/details/82082019版权声明:本文为博 ...

  2. [Kafka与Spark集成系列一] Spark入门

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  3. [Kafka与Spark集成系列二] Spark的安装及简单应用

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  4. [Kafka与Spark集成系列三] Spark编程模型

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  5. Spark Shuffle系列-----1. Spark Shuffle与任务调度之间的关系

    本文转自http://blog.csdn.net/u012684933/article/details/49074185,所有权力归原作者所有,仅供学习. Spark根据RDD间的依赖关系是否是Shu ...

  6. sparkstreaming监听hdfs目录_大数据系列之Spark Streaming接入Kafka数据

    Spark Streaming官方提供Receiver-based和Direct Approach两种方法接入Kafka数据,本文简单介绍两种方式的pyspark实现. 1.Spark Streami ...

  7. Spark入门实战系列--4.Spark运行架构

    注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1. Spark运行架构 1.1 术语定义 lApplication:Spark Applic ...

  8. Spark系列之Spark应用程序运行机制

    声明:         文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除.感谢.转载请注明出处,感谢. By luoye ...

  9. 学习笔记Kafka(七)—— Kafka 与Spark集成 —— 原理介绍与开发环境配置、实战

    一.环境 1.1.Hadoop环境 1.2.Spark环境 1.3.Spark Streaming 1.4.Add Maven Dependencies & 开发流程 Add Scala Fr ...

最新文章

  1. Linux 设置 Swap 空间
  2. python_day26__02__文件的传送
  3. 计算机网络怎么删除,怎么删除网络协议
  4. Spotlight监控工具使用
  5. Wave-Share -无服务器,点对点,通过声音共享本地文件
  6. mysql事务传播属性_Spring事务传播属性和隔离级别详细介绍
  7. 不会Python开发的运维终将被淘汰?
  8. Laravel核心解读 -- Response
  9. 利润表模板excel_年薪60w财务总监:工作八年,这10个Excel必备财务系统,效率翻倍...
  10. wind river -diab
  11. uib-datepicker-popup使用
  12. 今天开始学Convex Optimization:第3章 Convex Sets and Convex functions
  13. c#模拟看板控件_C#TIPTOP电子看板
  14. cocos2d 传送门
  15. 激光测距仪传感器,基于EFM32控制器开发设计_方案
  16. RSA非对称加密(以Android和java为例)
  17. 如何用java开发一个网站?
  18. 计算机更新系统d盘东西还在吗,重装系统其他盘的东西还在吗_重做系统其它盘东西会丢失吗-win7之家...
  19. c226打印机驱动安装_教您电脑怎么安装打印机驱动
  20. android手机刷机的作用,安卓手机几种刷机模式作用及分区介绍

热门文章

  1. JAVA数据类型及字符编码
  2. UCloud想吃科创板的“第一个螃蟹”
  3. 上币至iamToken
  4. ios 获取视频截图
  5. gradient渐变IE兼容处理
  6. StringFarmat控制字符串居中显示
  7. display:inline-block的深入理解
  8. [MySQL优化案例]系列 -- 试用TCMalloc
  9. CodeForces - 364A Matrix(思维+数学)
  10. HDU多校2 - 6774 String Distance(序列自动机优化lcs)