前言
前面咱们说了Yarn 是一个资源调度平台,负责为运算程序提供服务器计算资源,方便咱们编写的 Spark、flink、MapReduce 这些应用在它上面运行。若是还不知道它是什么的,请移步《Apache Hadoop YARN 的架构与运行流程》。node
那么咱们有木有办法看到 Yarn机器有多少资源呢?内存呀,CPU呀什么的。 咱们提交到 Yarn的这些应用,它们的运行状态是什么样子的,占用了多少资源,到底哪些机器在为他们跑任务呢?centos
答案是确定的,不止命令行,还有可视化的 UI 页面。下面咱们就来看看到底长什么样子,都有什么。服务器
集群信息
about 菜单里面能够看到 Yarn 的 ResourceManager 的状态,是不是HA,它的版本和Hadoop 的版本信息。session
主页
记得以前本身在搭建 Hadoop 集群的时候,把 Yarn 这个页面整出来的时候不知道有多兴奋,其实就长这样子。架构
集群监控信息
第一块区域,是整个集群的监控信息:app
- Apps Submitted:已提交的应用,咱们这里是71万多
- Apps Completed:已完成的应用
- Apps Running:正在运行的应用
- Containers Running:正在运行的容器
- Memory Total:集群总内存
- Memory Used:已使用内存
- VCores Total:集群 CPU 总核数
- VCores Used:已使用的 CPU 核数
- Memory Reserved:预留的内存
- VCores Reserved:预留的 CPU 核数
说明:框架
- Containers Running:正在运行的容器,为何会有这个说法,是由于 Yarn 在运行任务以前,会先建立一个容器来跑。具体的原理,请看上面连接的文章。
- VCores Reserved 和 Memory Reserved: 为何会存在预留的状况?是由于 Yarn 为了防止在分配一个容器到 NodeManager 的时候,,NodeManager当前还不能知足,那么 如今 NodeManager 已经有的资源将被冻结,以达到 容器须要的标准,而后分给那个容器。关于这个问答能够看这篇文章What is Memory reserved on Yarn
集群节点信息
第二块区域是 Yarn 的集群节点的状况,从 Active Nodes 下面的数字点击进去,能够看到具体的节点列表信息。里面包含了所在机架、运行状态、节点地址、最后健康上报上报时间、运行的容器个数、使用内存CPU 等信息,还有版本号。以下图。运维
应用列表信息
第三块内容是在 Yarn 上的任务执行状况列表:oop
包括如下内容:ui
- 第一块,能够根据任务的不一样状态去筛选,上图是筛选正在运行的任务。一搬来讲,咱们就看正在运行(RUNNING)的,和已经运行完成的(FINISHED)。若是你发现没你的任务了,那么可能在已接受( ACCEPTED)尚未运行的状态中,若是还找不到不到,那么恭喜你,可能有问题,跑失败了在失败(FAILED)里面,这时候,你就可点击任务ID,去详情页里面,找到日志入口去查看日志了,找问题了。
- 第二块,是任务的ID,这没什么好说的,你能够细心的看一下他的生成规则。
- 第三块,是任务的名字,能够看到图中有按类名的,他是咱们本身提交的spark 任务的主类名。另一类是 hive on spark ,这类的名称实际上是跑的 hive 的脚本,知识咱们 hive 的执行引擎是 spark。还有一类是 MapReduce 任务,这里的 MapReduce 任务,可不是咱们真正用 MapReduce 去写的代码哈,只是咱们有用 sqoop 进行数据的抽取。它底层是 MapReduce 。还有一类是 Flink 任务,会显示 Flink session cluster,只是咱们如今尚未用。
- 第四块是应用的类型和所在队列,常见的类型有 spark 、mapreduce和Apache Flink 。所在队列,你们能够回想一下在说 yarn 的架构的时候,咱们提交到 yarn 的任务,他会放到队列里面去,这个队列有默认的,有能够本身在提交时经过 --queue 进行指定的。若是咱们没有制定,那么它会以你提交任务的时候使用的那个帐户来进行提交,好比我这里就是 centos 的用户,显示则显示成 root.users.centos。
- 第五块,是任务的开始和结束时间。
- 第六块是任务当前的状态和最终状态。
- 第七块是任务占用的相关资源。
- 第八块是任务的应用类型主页。若是是 spark 任务的话,显示的是 spark 的 ui 页面。
应用详情页
在任务列表,点击 app ID 会来到这个应用的详情页:
查看应用日志
从应用详情页 ApplicationMaster 中,点击 最右边 log ,能够进入到应用的日志页面,日志记录了两部分,一部分是你的应用运行框架打印的日志,好比spark ,另一部分是你编写的代码中打印的日志。point 打印的日志都会记录。以下图:
进入到应用框架的监控UI页面
在详情页中,能够点击 Tracking URL 中提供 ApplicationMaster 连接,或者在在应用列表也中也能够,进入到 任务的运行框架UI页面,下面以spark 为例:
查看 yarn 的队列
在主页还有一个调度(Scheduler)的菜单,里面能够看到 yarn 的队列信息。包含了有哪些队列、每一个队列的资源使用状况、哪些任务运行在这个队列中等等。
Yarn 的日志
日常若是咱们发现Yarn 有些问题,那么咱们能够去看到 Yarn 的日志,在 左侧菜单 Tools->Local logs 里面咱们能够看到 Yarn 的日志信息:
Yarn 的服务监控
在CDH 中实际上是对Yarn 有资源监控的,若是你没有使用CDH 这些,只有本身搭建的 Yarn 集群,那么 Yarn 也提供了监控时间获取方式,在左侧菜单 Tools -> Server metrics 里面,咱们能够看到 以下数据,只是是 Json 数据。访问地址:http://journalnode1:8088/jmx?qry=Hadoop:*
拿到这个数据,你也能够写一个页面来可视化的展现它,给你们看一下 CDH 对于Yarn 的部分监控:
最后
在 Tools 菜单栏中还有 Yarn 的配置信息和 服务当前的堆栈信息,有兴趣的去研究一下。
以上,是Yarn 的UI 界面的介绍,后面给你们带来日常咱们使用 Yarn 的运维命令和它提供的 RestAPI。