Yarn笔记:Container资源下载流程

再来个小例子——Container资源下载流程,帮助理解源码|Yarn的事件驱动模型与状态机

源码版本:Apache Hadoop 2.6.0

三个资源等级

在Yarn中,资源也被称为分布式缓存,根据可见性分为三个等级:

  • PUBLIC:节点上所有用户共享。
  • PRIVATE:节点上同一用户的所有app共享。
  • APPLICATION:节点上同一app的所有container共享。

各资源的存储结构如下:

Container资源存储结构

可以看到,目录结构对应了资源的可见性。

所有资源最终为contaienr所用,container在自己的${containerId}/目录下通过软链访问各等级的资源。

过程

PUBLIC资源由ResourceLocalizationService下的PublicLocalizer下载PRIVATE、APPLICATION资源也经过ResourceLocalizationService服务,但最终由各container独立的ContainerLocalizer下载

假设PUBLIC、PRIVATE资源已下载,现在用户启动一个新app,下载APPLICATION资源的过程如下:

  1. ResourceLocalizationService服务收到INIT_APPLICATION_RESUOURCE事件。
  2. 为每个资源创建LocalResourceTracker
  3. LocalResourceTracker创建LocalizedResource状态机,以跟踪资源的生命周期。
  4. 如果需要下载,则LocalizedResource状态机向ResourceLocalizationService发送事件通知下载,转到DOWNLOADING状态。
  5. ResourceLocalizationService发现不是PUBLIC资源,为每个container创建LocalizerRunner线程。
  6. LocalizerRunner线程创建ContainerLocalizer客户端下载资源。
扫描微信关注我
微信公众号二维码
本文链接:Yarn笔记:Container资源下载流程
作者:猴子007
出处:https://monkeysayhi.github.io
本文基于 知识共享署名-相同方式共享 4.0 国际许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名及链接。
我是猴子007,<br>一只非常特殊的动物,<br>可以从事程序的开发、维护,<br>经常因寻找香蕉或母猿而无心工作。