Client
ClientMRService
RMAppManager
ApplicationAttemptEventDispatcher
RMAppAttempt ->
RMAppAttemptEvent
ApplicationMasterService
AMLivenessMonitor
SchedulerEventDispatcher
ResourceScheduler ->
SchedulerEventType
】ApplicationEventDispatcher
RMApp -> RMAppEvent
】ApplicationMasterLauncher
NodeEventDispatcher
RMNode ->
RMNodeEvent
1 submitApplication
2 RMAppManagerSubmitEvent
3 RMAppEvent.START
11 ScheduleEvent .
NodeUpdate
NodeStatusUpdater
10 heartbeat
NodeManager
18 registerApplicationMaster
ContainerAllocator
4 RMAppAttemptEvent-START
AsyncDispatcher
5 registerAppAttempt
6 SchedulerEvent.APPADDED
7 RMAppAttemptEvent.APP_ACCEPTED
8 RMAppEvent.APP_ACCEPTED
9 Allocate-container-for-AM
14 AMLauncherEvent.LAUNCH
RMContainer
12 assignContainers
13 RMAppAttemptEvent
CONTAINER_ALLOCATED
15 startContainer for AM
16 RMAppAttemptEvent.LAUNCHED
17 register
19 RMAppAttemptEvent-REGISTERED
20 RMAppEvent.ATTEMPT_REG
NMLinenessMonitor
ApplicationMaster
RMAppAttemptEvent
RMAppEvent
RMNodeEventSchedulerEventType
AMLauncherEvent
本图来自:董的博客,博客网址:dongxicheng.org
本图来自:董的博客,博客网址:dongxicheng.org本图来自:董的博客,博客网址:dongxicheng.org
NEW
SUBMITTED
START
ACCEPTED
APP_ACCEPTED
RUNNING
ATTEMPT_REGISTERED
FINISHED
ATTEMPT_FINISHED
YARN Application State Machine
[location]
org.apache.hadoop.yarn.server.resourcemanager.rmapp/
RMAppImpl.java
YARN Application Attempt
State Machine
CONTAINER_ACQUIRED
Fifo
scheduler
APP_ADDED
<
>
client
NEW
ALLOCATED
START
ACQUIRED
ACQUIRED
RUNNING
LAUNCHED
COMPLETED
FINISHED
YARN Container State Machine
[location]
org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt/
RMAppAttemptImpl.java
allocate
NEW
SUBMITTED
START
SCHEDULED
APP_ACCEPTED
ALLOCATED
CONTAINER_ALLOCATED
LAUNCHED
LAUNCHED
RUNNING
REGISTERED
FINISHED
UNREGISTERED
[location]
org.apache.hadoop.yarn.server.resourcemanager.rmcontainer/
RMContainerImpl.java
Application
Master
Launcher
AMLauncher
NodeManager
startC
ontainer
n
o
d
eH
eartB
eat#
n
o
d
eU
p
d
ate
reg
isterA
p
p
licatio
n
M
aster
AM container container
<>
ResourceManager
<>
<>
NodeManager NodeManager NodeManager
<> Four protocals in YARN:
(1) MRClientProtocal: Client <---> ResourceManager/ApplicationMaster
(2) AMRMProtocol: ApplicationMaster <---> ResourceManager
(3) ContainerManager :ApplicationMaster <---> NodeManager
(4) LocalizationProtocol:NodeManager <----> Containers
本图来自:董的博客,博客网址:dongxicheng.org
本图来自:董的博客,博客网址:dongxicheng.org