事件驱动机制

以RM举例。所有组件和服务是通过中央调度器组织到一起。不同组件通过事件交互,实现了高效的异步并行系统。

YARN HA 机制

RM不会保存分配给AM的资源信息和NM上资源使用信息。这些通过心跳上传。

RMStateStore

存储三类信息
ApplicationState:ApplicationSubmissionContext(应用提交描述信息)、submitTime(提交时间)、user(拥有者)。
ApplicationAttemptState:attemptId、masterContainer、安全Token(Credentials类型)。
RMDTSecretManagerState(安全令牌信息):delegationTokenState、masterKeyState、dtSequenceNumber。

存储过程:
提交任务时,RM会在响应前把ApplicationSubmissionContext保存RMStateStore。低频所以同步提交。
RMAppAttempt创建时,保存ApplicationAttemptState。异步提交。
应用结束,删除信息,异步进行。

恢复过程:
RM重启把数据读入内存,恢复RMApp和RMAppAttempt。
//TODO 需要深入探索
重启后,NM向RM心跳,RM发现列表不存在此NM要求其重启,上面所有容器都没了。
AM向RM心跳,RM会向AM发送RemoteException异常。

虚拟内存

Yarn中的虚拟内存概念和操作系统的虚拟内存概念一致

用户实现应用

要实现Client和ApplicationMaster这两个组件。

参考资料

ResourceManager HA 配置
https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-common/yarn-default.xml