spark standalone深入学习-核心概念\启动过程\服务down掉说明

本文介绍了Apache Spark的核心组件及其职责,包括master、worker、executor等,同时解析了Application、Job、Stage、Task的概念及它们之间的关系,并阐述了Spark的启动流程与故障恢复机制。
摘要由CSDN通过智能技术生成

核心概念:

master:在独立集群中,master就是集群的管理者,负责给worker分配资源,并实时监控worker,客户端向服务端提交作业,实际是交给master。
driver: 运行application的main函数并创建sparkcontext,sparkcontext负责资源的申请,任务的分配和监控等。当executor运行结束时,driver会关闭sparkcontext.
在spark-shell环境中提交作业或执行run-example实例时,driver运行在master节点,使用spark summit进行任务提交或者使用idea/eclipse等工具开发时,driver运行在
本地客户端。
worker: 负责监控自己节点内存、cpu等资源情况,并报告master;接受master指令启动driver\executor
executor: 具体任务的执行线程,每个任务一个executor
Application:开发的spark程序,包含driver功能的代码和分布在多个节点运行的executor代码。
Job:一个application可产生多个job,其Job由spark action触发产生,每个job包含多个task组成的并行计算
Stage:每个job可拆分成多个task,一个taskset称为stage。Stage的划分和调度是由DAGScheduler负责的。Stage分为Result Stage和Shuffle Map Stage;
Task:Application的运行基本单位,Executor上的工作单元。其调度和 管理又TaskScheduler负责。
RDD:Spark基本计算单元,是Spark最核心的东西。表示已被分区、被序列化、不可变的、有容错机制的、能被并行操作的数据集合。
DAGScheduler:根据Job构建基于Stage的DAG,划分Stage依据是RDD之间的依赖关系。
TaskScheduler:将TaskSet提交给Worker运行,每个Worker运行了什么Task于此处分配。同时还负责监控、汇报任务运行情况等。
spark standalone启动过程:
1、首先启动master\worker节点
worker启动后触发maste的registerworker事件,进行注册:将worker节点的CPU、内存、IP、address等基本信息记录到master缓存中(hashmap),注册成功后,将持久化已注册的worker信息。
2、提交application
运行spark-shell时,会由Driver端的DAGScheduler向Master发送RegisterApplication请求。根据此请求信息会创建ApplicationInfo对象,将Application加入到Master的缓存apps中,这个结构是HashSet。
如果worker已经注册,发送lanchExecutor指令给相应的Worker。
3、Worker收到lanchExecutor后,会由ExecutorRunner启动Excutor进程,启动的Executor进程会根据启动时的入参,将自己注册到Drive中的ScheduleBackend。
4、ScheduleBackend收到Excutor的注册信息后,会将提交到的Spark Job分解为多个具体的Task,然后通过LaunchTask指令将这些Task分散到各个Executor上运行。
Standalone部署方式下某一节点出现问题时,系统如何处理?
出现问题的节点可能发生的情况有三种:
(1)Master崩掉了:这个坏掉了,就真的没法完了。单点故障的问题。
有两种解决办法:第一种基于文件系统的故障恢复,适合Master进程本身挂掉,那直接重启就Ok了。
第二种是基于ZookerKeep的HA方式。此方式被许多的分布式框架使用。
(2)某一Worker崩掉了:
若是所有的Worker挂掉,则整个集群就不可用;
Worker退出之前,会将管控的所有Executor进程kill;由于Worker挂掉,不能向master玩心跳了,根据超时处理会知道Worker挂了,然后Master将相应的情况汇报给Driver。Driver会根据master的信息和没有收到Executor的StatusUpdate确定这个Worker挂了,则Driver会将这个注册的Executor移除。
(3)某Worker的Excutor崩掉了:

Excutor的作为一个独立的进程在运行,由ExcutorRunner线程启动,并收到ExcutorRunner的监控,当Excutor挂了,ExcutorRunner会注意到异常情况,将ExecutorStateChanged汇报给Master,master会再次发送lanchExecutor指令给相应的Worker启动相应的Excutor。


参考内容: http://www.cnblogs.com/shexinwei/p/4823051.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值