yarn状态机的可视化

YARN为了实现多个状态机的对象,控制ResourceManager中间RMAppImpl、RMApp-AttemptImpl、RMContainerImpl和RMNodeImpl,NodeManager中的ApplicationImpl、ContainerImpl和LocalizedResource,MRAppMaster中的JobImpl、TaskImpl和TaskAttemptImpl等。

为了便于用户查看这些状态机的状态变化以及相关事件。YARN提供了一个状态机可视化工具。详细操作过程例如以下。

步骤1 将状态机转化为graphviz(.gv)格式的文件。在源码根文件夹下运行编译命令例如以下:

mvn compile -Pvisualize

经过该步骤后。本地文件夹中生成了ResourceManager.gv、NodeManager.gv和MapReduce.gv三个graphviz格式的文件。NodeManager.gv文件里LocalizedResource状态机部分内容例如以下:

subgraph cluster_LocalizedResource {
label="LocalizedResource"
  "LocalizedResource.FAILED" [ label = FAILED ];
  "LocalizedResource.DOWNLOADING" [ label = DOWNLOADING ];
  "LocalizedResource.DOWNLOADING" -> "LocalizedResource.DOWNLOADING" [ label = "REQUEST,\nRELEASE" ];
  "LocalizedResource.DOWNLOADING" -> "LocalizedResource.FAILED" [ label = "LOCALIZATION_FAILED" ];
  "LocalizedResource.DOWNLOADING" -> "LocalizedResource.LOCALIZED" [ label = "LOCALIZED" ];
  "LocalizedResource.INIT" [ label = INIT ];
  "LocalizedResource.INIT" -> "LocalizedResource.DOWNLOADING" [ label = "REQUEST" ];
  "LocalizedResource.LOCALIZED" [ label = LOCALIZED ];
  "LocalizedResource.LOCALIZED" -> "LocalizedResource.LOCALIZED" [ label = "REQUEST,\nRELEASE" ];
}

步骤2 使用可视化包graphviz中的相关命令生成状态机图,Shell命令详细例如以下:

dot -Tpng NodeManager.gv > NodeManager.png

假设尚未安装graphviz包,操作该步骤之前先要安装该包,cent os安装命令例如以下:

sudo yum install graphviz

打开NodeManager.png。例如以下图所看到的(为了便于展示。分拆成了两个图):

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-10-08 10:44:27

yarn状态机的可视化的相关文章

yarn状态机可视化

YARN中实现了多个状态机对象,包括ResourceManager中的RMAppImpl.RMApp-AttemptImpl.RMContainerImpl和RMNodeImpl,NodeManager中的ApplicationImpl.ContainerImpl和LocalizedResource,MRAppMaster中的JobImpl.TaskImpl和TaskAttemptImpl等.为了便于用户查看这些状态机的状态变化以及相关事件,YARN提供了一个状态机可视化工具,具体操作步骤如下.

YARN中MRAppMaster的事件驱动模型与状态机处理消息过程的分析

在MRv1中,对象之间的作用关系是基于函数调用实现的,当一个对象向另外一个对象传递消息时,会直接采用函数调用的方式,并且这个过程是串行的.比如,当TaskTracker需要执行一个Task的时候,将首先下载Task依赖的文件(JAR包,二进制文件等,字典文件等),然后执行Task.在整个过程中,下载依赖文件是阻塞式的,也就是说,前一个任务未完成文件下载之前,后一个新任务将一直处于等待状态,只有在下载完成之后,才会启动一个独立进程运行该任务.基于函数调用式的编程模型是低效的,它隐含着整个过程是串行

Hadoop2.6.0中YARN底层状态机实现分析

前言 Hadoop2.x.x版本的底层实现中作了很多优化:用状态机对各种对象生命周期和状态转移进行管理:采用事件机制避免线程同步与阻塞:采用Protocol Buffers优化RPC性能:采用Apache Avro优化日志等.本文主要针对YARN中状态机的实现进行分析,在这个过程中,会捎带一些事件的内容. 事件 YARN中的很多组件之间进行通信,主要借助于事件.为了可读性.可维护性及可扩展性,YARN中的事件由事件名称和事件类型组成.比如JobImpl处理的事件名称为JobEvent,而事件类型

游戏编程精粹系列书籍目录一览

游戏编程精粹1 第1章 通用编程技术 1.0 神奇的数据驱动设计(Steve Rabin) 3 1.0.1 点子1--基础 3 1.0.2 点子2--最低标准 3 1.0.3 点子3--杜绝硬编码 3 1.0.4 点子4--将控制流写成脚本 4 1.0.5 点子5--什么时候不适合使用脚本? 5 1.0.6 点子6--避免重复数据 5 1.0.7 点子7--开发工具来生成数据 6 1.0.8 结论 6 1.1 面向对象的编程与设计技术(James Boer) 7 1.1.1 代码风格 7 1.1

Yarn中的几种状态机

1 概述 为了增大并发性,Yarn采用事件驱动的并发模型,将各种处理逻辑抽象成事件和调度器,将事件的处理过程用状态机表示.什么是状态机? 如果一个对象,其构成为若干个状态,以及触发这些状态发生相互转移的事件,那么此对象称之为状态机. 处理请求作为某种事件发送到系统中,由一个中央调度器传递给对应的事件调度器,进而对事件进行处理,处理完成之后再次发送给中央调度器,再进行处理,直至处理完成. Yarn的资源管理模块ResourceManager,其核心构成就是四类这样的状态机(基于2.4版本),分别是

YARN源码分析(一)-----ApplicationMaster

前言 在之前两周主要学了HDFS中的一些模块知识,其中的许多都或多或少有我们借鉴学习的地方,现在将目光转向另外一个块,被誉为MRv2,就是yarn,在Yarn中,解决了MR中JobTracker单点的问题,将此拆分成了ResourceManager和NodeManager这样的结构,在每个节点上,还会有ApplicationMaster来管理应用程序的整个生命周期,的确在Yarn中,多了许多优秀的设计,而今天,我主要分享的就是这个ApplicationMaster相关的一整套服务,他是隶属于Re

Hadoop on Yarn 各组件详细原理

运行在独立的节点上的ResourceManager和NodeManager一起组成了yarn的核心,构建了整个平台.ApplicationMaster和相应的container一起组成了一个Yarn的应用系统. ResourceManager提供应用程序的调度,每个应用程序由一个ApplicationMaster管理,以Container的形式请求每个任务的计算资源.Container由ResourceMangaer调度,由每个节点的NodeManager上进行本地的管理. ResourceMa

Yarn源码分析之如何确定作业运行方式Uber or Non-Uber?

在MRAppMaster中,当MapReduce作业初始化时,它会通过作业状态机JobImpl中InitTransition的transition()方法,进行MapReduce作业初始化相关操作,而这其中就包括: 1.调用createSplits()方法,创建分片,并获取任务分片元数据信息TaskSplitMetaInfo数组taskSplitMetaInfo: 2.确定Map Task数目numMapTasks:分片元数据信息数组的长度,即有多少分片就有多少numMapTasks: 3.确定

Yarn源码分析之MRAppMaster上MapReduce作业处理总流程(一)

我们知道,如果想要在Yarn上运行MapReduce作业,仅需实现一个ApplicationMaster组件即可,而MRAppMaster正是MapReduce在Yarn上ApplicationMaster的实现,由其控制MR作业在Yarn上的执行.如此,随之而来的一个问题就是,MRAppMaster是如何控制MapReduce作业在Yarn上运行的,换句话说,MRAppMaster上MapReduce作业处理总流程是什么?这就是本文要研究的重点. 通过MRAppMaster类的定义我们就能看出