本文是对 org.apache.spark.deploy.yarn.YarnRMClient 源码进行学习的分析,spark的版本为2.11。
概述
YarnRMClient主要用来处理application master向Yarn resourceManager的注册和注销。
主要方法分析
register
该方法很简单,就是向YARN ResourceManager注册application master,该方法会在 ApplicationMaster的registerAM方法中调用。具体方法实现
此方法逻辑很简单,一眼就看明白。生成AMRMClient(用于访问ResourceManager),向ResourceManager注册applicationMaster,生成YarnAllocator。但是需要注意生成YarnAllocator的参数。
unregister
作用与register方法相反,从YARN ResourceManager中注销 application master。具体方法实现
getMaxRegAttempts
此方法就是用来定义注册application master的最大尝试次数。具体方法定义
此方法也很简单,分别从spark配置和yarn配置中读取 如果spark配置中设置了,则使用spark和yarn配置中最小那个值。没有在spark中配置,则使用yarn配置中的。
问题
哪里生成YarnRMClient对象
答案就是在ApplicationMaster的main方法中,代码:
哪里调用 YarnRMClient的register方法
在register方法中看到了YarnAllocator的生成,那么在哪里调用register方法呢?答案就是 org.apache.spark.deploy.yarn.ApplicationMaster中。而且ApplicationMaster含有main方法,是程序的入口。代码: