天天看点

spark 容错HA(五)spark 容错HA

spark 容错HA

1. Executor 异常

spark在各种运行模式中的集群管理器会为任务分配运行资源,在运行资源中启动Executor,由Executor是负责执行任务的,最终会把任务运行状态发送给Driver。

spark 容错HA(五)spark 容错HA

首先看Executor启动过程:

1)Master给APP分配资源

2)在Worker中启动ExecutorRunner

3)ExecutorRunner会启动一个线程向Driver发送注册Executor消息

4)注册成功,则启动Executor。

当Executor出现异常时:

1)Worker接收到ExecutorStateChanged消息,在Worker中根据Executor状态进行信息更新,同时把Executor状态信息发送给Master。

2)Master接收到Executor状态变化消息后,如果发现Executor出现异常退出,则尝试获取可用的Worker节点并启动Executor,这个Worker很可能不能之前运行失败的Worker节点。系统会进行10次该尝试,如果超过10次,则标记为应用运行失败并移除该应用。次数限定 为了避免提交的应用程序存在BUG,而反复提交,挤占资源。

2. Worker异常

Spark standalone模式是采用Master/Slave的结构,其中slave是由Worker来担任,在运行时会发送心跳给Master,让Master知道Worker的实时状态,另一方面Master也会检测Worker是否会超时,因为在集群运行过程中。

spark 容错HA(五)spark 容错HA

1)Master是如何感知到Worker超时的,在Master接收Worker心跳的同时,在其启动方式中启动检测Worker超时的线程 。也就是说检测线程和心跳线程并不是同一个。

2)当Worker出现超时时,Master调用timeOutWorkers方法进行处理,在处理时根据Worker运行的是Executor和Driver分别进行处理。

a) 如果是Executor,Master先先把Worker上Executor异常的信息发送给Driver,告知Executor已经丢失,同时把这些Executor从其应用程序列表中删除。并按照Executor异常处理。

b) 如果是Driver,则判断是否设置重启,如果设置,则重启,否则删除该应用程序。

3. Master异常

以standalone模式部署时,Master结束,基本就代表集群瘫痪,但是在多节点的集群,一般会选择HA模式,启动2个或者多个Master进程,一个是主Master,其他为Standby Master,当Master出现异常时,StandbyMaster将会选主,确定一个接管的Master,这部分功能是由ZOOKEEPER来完成的,HA模式写spark依赖zk,通过zk来进行选主。

spark 容错HA(五)spark 容错HA

继续阅读