Spark集群运行架构及运行过程是怎么样的
Admin 2022-06-20 群英技术资讯 272 次浏览
Spark是基于内存计算的大数据并行计算框架,比MapReduce计算框架具有更高的实时性,同时具有高效容错性和可伸缩性,在学习Spark操作之前,首先介绍Spark运行架构,如图2-11所示。
在上图中,Spark应用在集群上运行时,包括了多个独立的进程,这些进程之间通过驱动程序(Driver Program)中的SparkContext对象进行协调,SparkContext对象能够与多种集群资源管理器(Cluster Manager)通信,一旦与集群资源管理器连接,Spark会为该应用在各个集群节点上申请执行器(Executor), 用 于 执 行 计 算 任 务 和 存 储 数 据。Spark将应用程序代码发送给所申请到的执行器,SparkContext对象将分割出的任务(Task)发送给各个执行器去运行。
需要注意的是,每个Spark应用程序都有其对应的多个执行器进程。执行器进程在整北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-400015个应用程序生命周期内,都保持运行状态,并以多线程方式执行任务。这样做的好处是,执行器进程可以隔离每个Spark应用。从调度角度来看,每个驱动器可以独立调度本应用程序的内部任务。从执行器角度来看,不同Spark应用对应的任务将会在不同的JVM中运行。然而这样的架构也有缺点,多个Spark应用程序之间无法共享数据,除非把数据写到外部存储结构中。
Spark对底层的集群管理器一无所知,只要Spark能够申请到执行器进程,能与之通信即可。这种实现方式可以使Spark比较容易的在多种集群管理器上运行,例如Mesos、Yarn。
驱动器程序在整个生命周期内必须监听并接受其对应的各个执行器的连接请求,因此驱动器程序必须能够被所有Worker节点访问到。
因为集群上的任务是由驱动器来调度的,所以驱动器应该和Worker节点距离近一些,最好在同一个本地局域网中,如果需要远程对集群发起请求,最好还是在驱动器节点上启动RPC服务响应这些远程请求,同时把驱动器本身放在离集群Worker节点比较近的机器上。
通过上一小节了解到,Spark运行架构主要由SparkContext、Cluster Manager和Worker组成,其中Cluster Manager负责整个集群的统一资源管理,Worker节点中的Executor是应用执行的主要进程,内部含有多个Task线程以及内存空间,下面通过图2-12深入了解Spark运行基本流程。图2-12Spark运行基本流程图
(1)当一个Spark应用被提交时,根据提交参数在相应位置创建Driver进程,Driver进程根据配置参数信息初始化SparkContext对象,即Spark运行环境,由SparkContext负责和Cluster Manager的通信以及资源的申请、任务的分配和监控等。SparkContext启动后,创建DAG Scheduler(将DAG图分解成Stage)和Task Scheduler(提交和监控Task)两个调度模块。
(2)Driver进程根据配置参数向Cluster Manager申请资源(主要是用来执行的Executor),Cluster Manager接收到应用(Application)的注册请求后,会使用自己的资源调度算法,在Spark集群的Worker节点上,通知Worker为应用启动多个Executor。
(3)Executor创建后,会向Cluster Manager进行资源及状态的反馈,便于Cluster Manager对Executor进行状态监控,如果监控到Executor失败,则会立刻重新创建。
(4)Executor会向SparkContext反向注册申请Task。
(5)Task Scheduler将Task发送给Worker进程中的Executor运行并提供应用程序代码。
(6)当程序执行完毕后写入数据,Driver向Cluster Manager注销申请的资源。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
Json模块本质上认为就是一个有规律的字符串。在功能使用上,可以进行交换格式、解析字符串以及转换对象与字符串
Python内置函数-super()函数。super() 函数是用于调用父类(超类)的一个方法。
在日常工作中,PPT制作是常见的工作,如果制作创意类PPT,则无法通过自动化的形式生成,因为创意本身具有随机性,而自动化解决的是重复性工作,两者有所冲突。python-pptx是python处理PPT
所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的使用包含两个步骤 :
这篇文章主要为大家介绍了python神经网络Densenet模型复现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008