HadoopSourceAnalyse---ResourceMananger-initiate

初始化

ResourceManager 是Hadoop mapreduce v2 实现在的核心之一, 它负责,接收并分发客户请求,监视集群中可用的Node资源。在系统启动的时候,ResourceManager会启动实例化以下的service和 对像。Resourcemanager在初化过程中会读取yarn.resourcemanager.recovery.enabled 标志,如果打开,resourcemanager会偿试,从之前保存的状态恢复。默认关闭。

                                                              图 1-1

在初始化过程中对应的Event及Handler如下:

Event registered in ResourceManagerDispather

Event Handler
Event    Handler
NodeListManageEventType     NodesListManager
SchedulerEventType         SchedulerDispatcher
RMAppEventType           ApplicationEventDispatcher
RMAppAttemptEventType ApplicationAttemptEventDispatcher
RMNodeEventType             NodeEventDispatcher
RMAppManagerEventType       RMAppManager 
AMLauncherEventTypeApplicationMasterLauncher
Tab 1-1

ResoureManagerDispatcher 初始化

AsyncDispatcher是 ResourceManager 初始化的第一个对像, 这个对像负责 分发所有的Event(上表中) 到各个相应的handler,这是一个异步的过程。当Dispathcher 创建成功后,它会创建并维护一个同步队列,用来保存,所有的收到的event。Dispatcher 初始化的时候,会从配置文个中读取yarn.dispathcer.exit-on-error 标志,并保存在本实例中。


ApplicationTokenSecretManager 初始化

ApplicationTokenSecretManager 管理所有的用于和运行application 所需的密钥,当对像实例化的时候,系统会自动生成一个用HmacSHA1 算法生成一个key作为初始的key使用,每间隔一段时间会重新生成一个key,Manager会从配置文件中读取yarn.resourcemanager.application-tokens.master-key-rolling-interval-secs作为密钥的过期时间默认值为:86400 s


ContainerAllocationExpirer 初始化

监视container 分配是否成功,如果经过配置的时间,没有成功分配container,会触发一个,ContainerExpirerSchedulerEvent,初始时会从配置文件中读取 yarn.resourcemanager.rm.container-allocation.expiry-interval-ms超时时间,默认值为:600000ms。 并设定监视间隔时间为 1/3 的超时时间。

AMlivelinessMoitor and AMFinishingMointor初始化

监视Application master是否还在正常工作或是否已经完成,如果在设定的时间内没有收到hartbeat message, 触发RMAppAttemptEvent 超时事件。 从配置文件中读取 yarn.am.liveness-monitor.expiry-interval-ms 超时配置,默认值为:600000ms, 并设定监视间隔时间为 1/3的超时时间。

DeletgationTokenRenewer 初始化

DeletegationTokenRenewer 每间一段时间会重新生成一个新的token 延长在线时间,给Application分配更多的时间,初始化时会读取: yarn.log-aggreation-enable,如果为false则application 完成后,原Token立即失效,否则会保持原token yarn.resourcemanager.delayed.delegation-token.removal-interval-ms时间,默认为30000ms, yarn.nm.liveness-monitor.expiry-interval-ms为生成新Token的间隔时间,默认 600000ms。

RMContainerTokenSecretManager 初始化

读取yarn.nm.liveness.monitor.expiry-interval-ms*1.5 作为,node 生成新的share key的间隔时间,由设置   yarn.resourcemanager.container-tokens.master-key-rolling-interval-secs,设定,默认86400s。

RmContext 初始化

ResourceManager 创建一个RMContextImpl对像来保存运行时数据。

NodeListManager 初始化

NodeListManager 持有一个RMContext的引用用来分发Node相关的事件。初始化时,会读取 yarn.resourcemanager.nodes.include-path,和 yarn.resourcemanager.nodes.exclude-path,限制那些node在resourcemanager中管理,默认充许所有的node加入。

Scheduler 初始化

如果系统配配置: yarn.resourcemanager.scheduler.class则实例化该class,如果没有配置,系统默认使用 CapacityScheduler。

SchedulerEventDispatcher 初始化

读取并设置 yarn.dispatcher.exit-on-error 标志, 如果置位,分发失败则退出系统, 默认不置位。

NodeManagerLivenessMonitor 初始化

监视NodeManager是否可达,如果 yarn.nm.liveness-monitor.expiry.interval-ms时间,没收到hartbeat消息,触发一个RMNodeEvent,默认时间为:600000ms, 每1/3 间隔时间检查一次。

ResourceTrackerService 初始化

读取 yarn.resourcemanager.resource-tracker.address作为监听的绑定地址,默认绑定0.0.0.0:8031,读取heartbeat 间隔时间,yarn.resourcemanager.nodemanagers.heartbeat-interval-ms, 默认为:1000ms。

ApplicationMasterService 初始化

Do nothing just create a instance;

RMDelegationTokenSecretManager 初始化

读取 y arn.resourcemanager.delegation.key.update-interval,默认值86400000ms,读取 yarn.resourcemanager.delegation.token.max-lifetime, 默认值为,604800000ms,读取 yarn.resourcemanager.delegation.token.renew-interval, 默认值为:86400000ms。用来创建一个新的delegationTokenSecretManager 对像。

ClientRMService 初始化

ClientRMService 主要是用来接收客户端的请求, 读取配置中 yarn.resourcemanager.address的值作为,监听地址,默认值为:0.0.0.0:8032.

AdminService 初始化

AdminService 主要来接收管理请求,初化时会读取yarn.resourcemanager.admin.address 的值作为监听地址,默认为:0.0.0.0:8033,Admin 管理的权限列表可通过 yarn.admin.acl来配置,默认充许所有用户。

ApplicationMasterLauncher 初始化

初始化一个共10个线程池来launch所有的application。


   

启动

所有的对像初始化完成之后,Resourcemanager 调用Service的start 方法启动Service。ResourceManager不会把所有的Service 全都启动,其它的Service将在需要的时候启动。

ResourcemanagerDispatcher 启动



                                                                                 图 2-1
             图 2-1 展示了,AsyncDispatcher 起动工作的流程。当Dispatcher启动时,会新起一个线程,专门用来分发Resourcemanager收到的各种请求,如果对应的Handler没有在Dipatcher中注册,而且Exit_on_Error被置位,则系统会异常退出。如果Exit_on_Error没有置位,则记录一个错误日志,并忽略该请求。事实上,这个值是始终置位的。不管配国是什么,ResourceManager 初始化时会将之重新置为true。
    (Note:这里Queue的容量被hard code设置为2^31-1;
                Exit_on_Error 标志,在当前的代码中是始终置位的,也许以后,可以配置。)

ContainerAllocationExpirer 启动


图2-2

AMLivelinessMonitor and AMFinishingMonitor 启动



图 2-3

DelegationTokenRenewer 启动



图 2-4

AppTokenSecretManager 启动


图 2-5

ContainerTokenSecretmanager 启动



图 2-6

NodeListManager 启动


图 2-7

SchedulerEventDispatcher 启动


图 2-7

NodeLivenessMonitor 启动


图 2-8

ResourceTrackerService 启动


图 2-9
上图不能完慗 的展现所有的ResourceTrackerService 的活动,TrackerServer会起一系列的的线程用来分别处,连接,读取request,处理request, 及发送response。 所有的request 将由一个线程池去handle,在handle线和会回调tracker的相应方法来处理请求。

ApplicationMasterService 启动


图 2-10
上图中,如果授权失败,刚任务会被拒绝,如果有任何node分配失败会导致该 resouemanager会返回一个重启相应node的请求,并记录该 错误。

ClientResourceManagerService 启动



图 2-11

AdminService 启动


图 2-11

ApplicationMasterLauncher 启动


`图 2-13
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值