初始化

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 
AMLauncherEventType ApplicationMasterLauncher

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立即失效,否则会保持原tokenyarn.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 初始化

读取yarn.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

转载于:https://www.cnblogs.com/tnangle/archive/2013/04/23/3376707.html

HadoopSourceAnalyse---ResourceMananger-initiate相关推荐

  1. HadoopSourceAnalyse --- NodeManager -- initiate

    Overview NodeManager 是hadoop cluster的server中,负责管理,执行任务相关的资源,主要通过ResouceManager和ApplicationsManager通信 ...

  2. Teams的MessageExtension最新功能:Initiate actions

    官方文档到目前为止对这个initiate action的说明比较简洁,由于没有一步步的截图和说明,从头到尾看一遍可能还在云里雾里. 我一步步摸索着走了一遍,发现这个initiate action的功能 ...

  3. Pycharm 安装 github copilot 报错:failed to initiate the github login process please try again

    下载安装好copilot插件后,提示failed to initiate the github login process please try again 就非常的emo... 我的pycharm是 ...

  4. keyberos认证问题导致GSS initiate failed

    背景:实施过程中需要./XX.sh 用来提交到大数据平台yarn上进行分析场景的任务提示了下列报错. javax.security.sasl.SaslException: GSS initiate f ...

  5. phoenix-5.1.2 Inconsistent namespace mapping properties. Cannot initiate connection as SYSTEM

    Caused by: java.sql.SQLException: ERROR 726 (43M10): Inconsistent namespace mapping properties. Cann ...

  6. 使用 github copilot 踩坑记录:failed to initiate the github login process please try again

    之前被安利了这款AI插件,但在idea找了半天没找到,原来是因为这软件对idea的版本有要求,于是下载了最新版 接着对账号进行了申请,进入了漫长的等待,好不容易申请到了体验权,一点登录却一直loadi ...

  7. Inconsistent namespace mapping properties. Cannot initiate connection as SYS

    完整错误 Error: ERROR 726 (43M10): Inconsistent namespace mapping properties. Cannot initiate connection ...

  8. Error: ERROR 726 (43M10): Inconsistent namespace mapping properties. Cannot initiate connection as S

    Error: ERROR 726 (43M10): Inconsistent namespace mapping properties. Cannot initiate connection as S ...

  9. MongoDB 副本集在 rs.initiate()报错

    MongoDB 在 rs.initiate()后 1. 出现错误信息:This node was not started with the replSet option 解决方法:检查相关文件夹是否有 ...

  10. Failed to initiate the GitHub login process. Please try again(1.1.28.1744)

    Failed to initiate the GitHub login process. Please try again 解决办法 关于在idea中安装github copilot插件后,需要登陆进 ...

最新文章

  1. java 启动 jetty_如何通过命令行启动或者关闭 Jetty 服务器
  2. snipaste 使用指南
  3. 机器学习Sklearn实战——手写线性回归
  4. Matplotlib(一)工作流程
  5. vuex 管理vue-router的传值
  6. Recoll:Unix和Linux桌面的文本搜索工具
  7. 从零开始:什么是Makefile分析
  8. ★LeetCode(448)——找到所有数组中消失的数字(JavaScript)
  9. 机器学习和AI的区别是什么?| 今日吐槽
  10. win7误删计算机,Win7系统下文件数据被误删了怎么办
  11. Google 投资了京东
  12. python实验总结与分析_Python程序设计实验一报告
  13. java excel批量导入数据库数据_java把excel数据批量导入到数据库
  14. 教您在Excel中批量生成二维码
  15. ai人工智能让女神_人工智能可能只会让你兴奋不已
  16. Java中9种常见的CMS GC问题分析与解决
  17. jser必看的破解javascript各种加密的反向思维方法 转自脚本之家
  18. STM32:使用外部中断控制对射式红外传感器并计次
  19. 用 HLS m3u8 及FFMPEG搭建视频点播平台
  20. 如何写一篇五彩斑斓的博客.append(可爱)

热门文章

  1. c语言的基本数据类型和表达式,C语言–基本数据类型和表达式.ppt
  2. OpenCV之图像混合
  3. saltstack系列~第四篇
  4. 前端05.js入门之BOM对象与DOM对象。
  5. 第一讲 linux简介
  6. linux系统管理常用命令--top
  7. 移动大数据时代:无线网络的挑战与机遇
  8. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序处理并发
  9. 本训练中心主任致互联网技术学员
  10. JavaScript使用技巧(2)