Hadoop源码-2.6.4 Yarn NodeManager Container内存资源设置及监控

本文记录yarn container内存资源在启动和监控两个过程中涉及的原理关键点,作为源码阅读笔记。如有差错,盼不吝指正。

启动

执行Container启动的组件

  • NodeManager
    • ContainerManagerImpl
      • public StartContainersResponse startContainers(StartContainersRequest requests)
        • private void startContainerInternal
          • Container(ContainerImpl)
          • Application(ApplicationImpl)
      • ContainersLauncher
        • public void handle(ContainersLauncherEvent event)
          • ContainerLaunch

NodeManager由ContainerManagerImpl#startContainers()处理container启动调用(该方法入参封装了启动需执行进程的shell(linux)或cmd(windows)命令),在该方法中为每个container启动请求实例化Container(ContainerImpl)对象和Application(ApplicationImpl)对象;ContainerImpl、ApplicationImpl与ContainersLauncher组件通过ContainerManagerImpl#dispatcher(AsyncDispatcher)通过事件消息传递通信,触发各组件启动container的行为。

Container启动流程

以下仅显示与container启动关联的主要流程
container启动
ContainersLauncher接收到ContainersLauncherEventType.LAUNCH_CONTAINER事件后,创建ContainerLaunch(implements Callable)对象,提交给自己内部持有的线程池执行。ContainerLaunch被执行时,实际用ContainerExecutor为container启动jvm进程。

启动原理

客户进程申请container时,会将container启动进程的命令封装到请求参数中,对于需要的资源,会通过启动命令传递。
例如,spark中的YarnAllocator在申请到container之后申请executor进程的启动时,将executorMemory设置为java命令的-Xmx参数:

// org.apache.spark.deploy.yarn.ExecutorRunnable为YarnAllocator创建的向NodeManager申请启动container进程的任务

private[yarn] class ExecutorRunnable(
    container: Option[Container],
    conf
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值