当前位置: 首页 > news >正文

YARN WebUI 服务

一、WebUI 使用

与HDFS一样,YARN也提供了一个WebUI服务,可以使用YARN Web用户界面监视群集队列应用程序服务流活动和节点信息。还可以查看集群详细配置信息,检查各种应用程序和服务的日志

1.1 首页

浏览器输入http://node2.itcast.cn:8088/访问YARN WebUI服务,页面打开后,以列表形式展示已经运行完成的各种应用程序,如MapReduce应用、Spark应用、Flink应用等,与点击页面左侧Application栏目红线框Applications链接显示的内容一致。

1.2 应用程序分析

当点击任意一个应用程序时,会打开一个新页面,并展示这个应用程序的运行信息。以MR应用为例,如果应用程序正在运行,打开的页面如图10-1-2所示;如果应用程序已经运行完成,打开的页面如下图所示。

  • 正在运行的MR应用程序

  • 运行完成的MR应用程序

二、HistoryServer 服务

YARN中提供了一个叫做JobHistoryServer的守护进程,它属于YARN集群的一项系统服务,仅存储已经运行完成的MapReduce应用程序的作业历史信息,并不会存储其他类型(如Spark、Flink等)应用程序的作业历史信息。

  • 当启用JobHistoryServer服务时,仍需要开启日志聚合功能,否则每个Container的运行日志是存储在NodeManager节点本地,查看日志时需要访问各个NodeManager节点,不利于统一管理和分析。
  • 当开启日志聚合功能后AM会自动收集每个Container的日志,并在应用程序完成后将这些日志移动到文件系统,例如HDFS。然后通过JHS的WebUI服务来提供用户使用和应用恢复。

2.1 启用 JHS 服务

在【mapred-site.xml】文件中配置指定JobHistoryServer服务地址和端口号,具体操作如下。

  • 编辑文件:

[root@node1 ~]# vim /export/server/hadoop/etc/hadoop/mapred-site.xml

  • 添加属性配置:

<property>

<name>mapreduce.jobhistory.address</name>

<value>node1.itcast.cn:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>node1.itcast.cn:19888</value>

</property>

<property>

<name>mapreduce.jobhistory.intermediate-done-dir</name>

<value>/mr-history/intermediate</value>

</property>

<property>

<name>mapreduce.jobhistory.done-dir</name>

<value>/mr-history/done</value>

</property>

  • 同步mapred-site.xml文件到集群其他机器,命令如下:

[root@node1 ~]# cd /export/server/hadoop/etc/hadoop

[root@node1 hadoop]# scp -r mapred-site.xml root@node2.itcast.cn:$PWD

[root@node1 hadoop]# scp -r mapred-site.xml root@node3.itcast.cn:$PWD

2.2 启用日志聚合

首先配置运行在YARN上应用的日志聚集功能,当应用运行完成,将日志相关信息上传至HDFS文件系统,编辑文件【yarn-site.xml】和添加属性配置。

  • 编辑文件:

[root@node1 ~]# vim /export/server/hadoop/etc/hadoop/yarn-site.xml

  • 添加属性配置:

<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>

<property>

<name>yarn.nodemanager.remote-app-log-dir</name>

<value>/app-logs</value>

</property>

<property>

<name>yarn.log.server.url</name>

<value>http://node1.itcast.cn:19888/jobhistory/logs</value>

</property>

  • 同步yarn-site.xml文件到集群其他机器,命令如下:

[root@node1 ~]# cd /export/server/hadoop/etc/hadoop

[root@node1 hadoop]# scp -r yarn-site.xml root@node2.itcast.cn:$PWD

[root@node1 hadoop]# scp -r yarn-site.xml root@node3.itcast.cn:$PWD

2.3 启动 JHS 服务

在上述配置中指定的JHS服务位于【node1.itcast.cn】节点上,在【node1.itcast.cn】节点中启动JobHistoryServer服务。

  • 启动命令如下:

[root@node1 ~]# mr-jobhistory-daemon.sh start historyserver

  • 或者如下命令:

[root@node1 ~]# mapred --daemon start historyserver

  • 浏览器查看:http://node1.itcast.cn:19888/jobhistory

2.4 JHS 管理 MR 应用

当提交运行MapReduce程序在YARN上运行完成以后,将应用运行日志数据上传到HDFS上,此时JobHistoryServer服务可以从HDFS上读取运行信息,在WebUI进行展示,具体流程如下。

2.4.1 提交MR应用程序

使用yarn jar提交运行官方自带词频统计WordCount程序到YARN上运行,命令如下:

[root@node1 ~]# yarn jar \

/export/server/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar \

wordcount \

/datas/input.data /datas/output

运行MR程序显示日志信息:

2021-02-25 19:13:43,059 INFO client.ConfiguredRMFailoverProxyProvider: Failing over to rm2

2021-02-25 19:13:43,278 INFO mapreduce.JobResourceUploader: Disabling Erasure Coding for path: /tmp/hadoop-yarn/staging/root/.staging/job_1614243659295_0002

2021-02-25 19:13:43,518 INFO input.FileInputFormat: Total input files to process : 1

2021-02-25 19:13:43,619 INFO mapreduce.JobSubmitter: number of splits:1

2021-02-25 19:13:43,816 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1614243659295_0002

2021-02-25 19:13:43,818 INFO mapreduce.JobSubmitter: Executing with tokens: []

2021-02-25 19:13:44,007 INFO conf.Configuration: resource-types.xml not found

2021-02-25 19:13:44,008 INFO resource.ResourceUtils: Unable to find 'resource-types.xml'.

2021-02-25 19:13:44,077 INFO impl.YarnClientImpl: Submitted application application_1614243659295_0002

2021-02-25 19:13:44,136 INFO mapreduce.Job: The url to track the job: http://node3.itcast.cn:8088/proxy/application_1614243659295_0002/

2021-02-25 19:13:44,137 INFO mapreduce.Job: Running job: job_1614243659295_0002

2021-02-25 19:13:51,321 INFO mapreduce.Job: Job job_1614243659295_0002 running in uber mode : false

2021-02-25 19:13:51,322 INFO mapreduce.Job:  map 0% reduce 0%

2021-02-25 19:13:57,474 INFO mapreduce.Job:  map 100% reduce 0%

2021-02-25 19:14:02,544 INFO mapreduce.Job:  map 100% reduce 100%

2021-02-25 19:14:03,564 INFO mapreduce.Job: Job job_1614243659295_0002 completed successfully

2021-02-25 19:14:03,687 INFO mapreduce.Job: Counters: 53

        File System Counters

                FILE: Number of bytes read=65

                FILE: Number of bytes written=446779

                FILE: Number of read operations=0

                FILE: Number of large read operations=0

                FILE: Number of write operations=0

                HDFS: Number of bytes read=205

                HDFS: Number of bytes written=39

                HDFS: Number of read operations=8

                HDFS: Number of large read operations=0

                HDFS: Number of write operations=2

        Job Counters

                Launched map tasks=1

                Launched reduce tasks=1

                Data-local map tasks=1

                Total time spent by all maps in occupied slots (ms)=3439

                Total time spent by all reduces in occupied slots (ms)=3085

                Total time spent by all map tasks (ms)=3439

                Total time spent by all reduce tasks (ms)=3085

                Total vcore-milliseconds taken by all map tasks=3439

                Total vcore-milliseconds taken by all reduce tasks=3085

                Total megabyte-milliseconds taken by all map tasks=3521536

                Total megabyte-milliseconds taken by all reduce tasks=3159040

        Map-Reduce Framework

                Map input records=3

                Map output records=16

                Map output bytes=160

                Map output materialized bytes=65

                Input split bytes=109

                Combine input records=16

                Combine output records=5

                Reduce input groups=5

                Reduce shuffle bytes=65

                Reduce input records=5

                Reduce output records=5

                Spilled Records=10

                Shuffled Maps =1

                Failed Shuffles=0

                Merged Map outputs=1

                GC time elapsed (ms)=100

                CPU time spent (ms)=2170

                Physical memory (bytes) snapshot=506044416

                Virtual memory (bytes) snapshot=5578981376

                Total committed heap usage (bytes)=360185856

                Peak Map Physical memory (bytes)=280317952

                Peak Map Virtual memory (bytes)=2785366016

                Peak Reduce Physical memory (bytes)=225726464

                Peak Reduce Virtual memory (bytes)=2793615360

        Shuffle Errors

                BAD_ID=0

                CONNECTION=0

                IO_ERROR=0

                WRONG_LENGTH=0

                WRONG_MAP=0

                WRONG_REDUCE=0

        File Input Format Counters

                Bytes Read=96

        File Output Format Counters

                Bytes Written=39

2.4.2 MR运行历史信息

MR应用程序在运行时,是通过AM(MRAppMaster类)将日志写到HDFS中,会生成.jhist.summary_conf.xml文件。其中.jhist文件是MR程序的计数信息,.summary文件是作业的摘要信息,_conf.xml文件是MR程序的配置信息。

  • MR应用程序启动时的资源信息

MR应用程序启动时,会把作业信息存储到${yarn.app.mapreduce.am.staging-dir}/${user}/.staging/${job_id}目录下。

yarn.app.mapreduce.am.staging-dir:/tmp/hadoop-yarn/staging(默认)

  • MR应用程序运行完成时生成的信息

MR应用程序运行完成后,作业信息会被临时移动到${mapreduce.jobhistory.intermediate-done-dir}/${user}目录下。

mapreduce.jobhistory.intermediate-done-dir:/mr-history/intermediate(配置)

  • MR应用程序最终的作业信息

等待${mapreduce.jobhistory.move.interval-ms}配置项的值(默认180000毫秒=3分钟)后,会把${mapreduce.jobhistory.intermediate-done-dir}/${user}下的作业数据移动到${mapreduce.jobhistory.done-dir}/${year}/${month}/${day}/${serialPart}目录下。此时.summary文件会被删除,因为.jhist文件提供了更详细的作业历史信息。

JHS服务中的作业历史信息不是永久存储的,在默认情况下,作业历史清理程序默认按照86400000毫秒(一天)的频率去检查要删除的文件,只有在文件早于mapreduce.jobhistory.max-age-ms(一天)时才进行删除。JHS的历史文件的移动和删除操作由HistoryFileManager类完成。

mapreduce.jobhistory.intermediate-done-dir:/mr-history/intermediate(配置)

mapreduce.jobhistory.intermediate-done-dir:/mr-history/done(配置)

mapreduce.jobhistory.cleaner.enable: true(默认)

mapreduce.jobhistory.cleaner.interval-ms: 86400000(1天)

mapreduce.jobhistory.max-age-ms: 86400000(1天)

 

2.4.3 JHS 运行流程

  • 客户端提交MR应用程序到RM;
  • /tmp/logs/<user>/logs/application_timestamp_xxxx中创建应用程序文件夹;
  • MR作业在群集上的YARN中运行;
  • MR作业完成,在提交作业的作业客户上报告作业计数器;
  • 将计数器信息(.jhist文件)和job_conf.xml文件写入/user/history/done_intermediate/<user>/job_timestamp_xxxx
  • 然后将.jist文件和job_conf.xml从/user/history/done_intermediate/<user>/移动到/user/history/done目录下;
  • 来自每个NM的Container日志汇总到/tmp/logs/<用户ID>/logs/application_timestamp_xxxx;

2.5 JHS WebUI

JobHistoryServer服务WebUI界面相关说明:

2.5.1 首页

浏览器输入:http://node1.itcast.cn:19888 访问JHS服务,页面打开后,以列表形式展示已经运行完成的MR应用程序,与点击页面左侧Application栏目红线框jobs链接显示的内容一致。

2.5.2 JHS 构建说明

浏览器输入 http://node1.itcast.cn:19888/jobhistory/about 地址或者在点击页面左侧Application栏目下红线框about链接后会展示JHS服务的构建版本信息和启动时间。

2.5.3 MR应用程序查看

在JHS作业列表点击任意一个作业:

作业信息查看:

2.5.4 JHS 配置

浏览器输入 http://node1.itcast.cn:19888/conf  或点击页面左侧Tools栏目中的红线框configuration链接会打开JHS的所需配置页面,在配置页面中,主要有集群自定义配置(core-site.xml、hdfs-site.xml、yarn-site.xml和mapred-site.xml)和集群默认配置(core-default.xml、hdfs-default.xml、yarn-default.xml和mapred-default.xml)两种。配置页面中的配置项较多,截图为部分展示。

2.5.5 JHS 本地日志

浏览器输入 http://node1.itcast.cn:19888/logs/  地址或点击页面左侧Tools栏目中的红线框local logs链接会打开JHS服务的所在节点的log文件列表页面。​​​​​​​

2.5.6 JHS 堆栈信息

浏览日输入 http://node1.itcast.cn:19888/stacks  地址或点击页面左侧Tools栏目中的红线框Server stacks链接会打开JHS服务的堆栈转储信息。stacks功能会统计JHS服务的后台线程数、每个线程的运行状态和详情。这些线程有MoveIntermediateToDone线程、JHS的10020 RPC线程、JHS的10033 Admin接口线程、HDFS的StatisticsDataReferenceCleaner线程、JHS服务度量系统的计时器线程、DN的Socket输入流缓存线程和JvmPauseMonitor线程等。

三、TimelineServer 服务

由于Job History Server仅对MapReduce应用程序提供历史信息支持其他应用程序的历史信息需要分别提供单独的HistoryServer才能查询和检索。例如Spark的Application需要通过Spark自己提供的org.apache.spark.deploy.history.HistoryServer来解决应用历史信息。

为了解决这个问题,YARN新增了Timeline Server组件,以通用方式存储和检索应用程序当前和历史信息

到目前,有V1、V1.5和V2共三个版本,V1仅限于写入器/读取器和存储的单个实例,无法很好地扩展到小型群集之外;V2还处于alpha状态,所以在本章以V1.5进行讲解。

版本

说明

V1

基于LevelDB实现。

V1.5

在V1的基础上改进了扩展性。

V2

1.使用更具扩展性的分布式写入器体系结构和可扩展的后端存储。

2.将数据的收集(写入)与数据的提供(读取)分开。它使用分布式收集器,每个YARN应用程序实质上是一个收集器。读取器是专用于通过REST API服务查询的单独实例。

3.使用HBase作为主要的后备存储,因为Apache HBase可以很好地扩展到较大的大小,同时保持良好的读写响应时间。

4.支持在流级别汇总指标。

官方文档:

Apache Hadoop 3.1.4 – The YARN Timeline Server

Apache Hadoop 3.1.4 – The YARN Timeline Service v.2

YARN Timeline Service v.2 服务架构图如下:

3.1 启用 Timeline 服务

在【yarn-site.xml】配置文件中添加如下属性,启动Timeline Server服务功能:

<property>

<name>yarn.timeline-service.enabled</name>

<value>true</value>

</property>

<property>

<name>yarn.timeline-service.hostname</name>

<value>node2.itcast.cn</value>

<description>设置YARN Timeline服务地址</description>

</property>

<property>

<name>yarn.timeline-service.address</name>

<value>node2.itcast.cn:10200</value>

<description>设置YARN Timeline服务启动RPC服务器的地址,默认端口10200</description>

</property>

<property>

<name>yarn.timeline-service.webapp.address</name>

<value>node2.itcast.cn:8188</value>

<description>设置YARN Timeline服务WebUI地址</description>

</property>

<property>

<name>yarn.resourcemanager.system-metrics-publisher.enabled</name>

<value>true</value>

<description>设置RM是否发布信息到Timeline服务器</description>

</property>

<property>

<name>yarn.timeline-service.generic-application-history.enabled</name>

<value>true</value>

<description>设置是否Timelinehistory-servic中获取常规信息,如果为否,则是通过RM获取</description>

</property>

同步yarn-site.xml文件到集群其他机器,命令如下:

[root@node1 ~]# cd /export/server/hadoop/etc/hadoop

[root@node1 hadoop]# scp -r yarn-site.xml root@node2.itcast.cn:$PWD

[root@node1 hadoop]# scp -r yarn-site.xml root@node3.itcast.cn:$PWD

重启YARN服务,命令如下所示:

[root@node2 ~]# stop-yarn.sh

[root@node2 ~]# start-yarn.sh

​​​​​​​3.2 启动 Timeline 服务

在上述配置中指定的Timeline服务位于【node2.itcast.cn】节点上,需要在【node2.itcast.cn】节点的shell客户端中启动,如果在非【node2.itcast.cn】节点上启动时会报错。

启动命令如下:

[root@node2 ~]# yarn --daemon start timelineserver

在浏览器中输入:http://node2.itcast.cn:8188/applicationhistory

http://www.lryc.cn/news/519967.html

相关文章:

  • 【Unity3D】利用IJob、Burst优化处理切割物体
  • 【大前端】Vue3 工程化项目使用详解
  • 基于文件系统分布式锁原理
  • 简历整理YH
  • Kotlin 协程基础三 —— 结构化并发(二)
  • 微信小程序实现长按录音,点击播放等功能,CSS实现语音录制动画效果
  • 校园跑腿小程序---轮播图,导航栏开发
  • 详细全面讲解C++中重载、隐藏、覆盖的区别
  • 一文读懂单片机的串口
  • HTML5 网站模板
  • mybatis分页插件:PageHelper、mybatis-plus-jsqlparser(解决SQL_SERVER2005连接分页查询OFFSET问题)
  • uniapp中rpx和upx的区别
  • 什么是卷积网络中的平移不变性?平移shft在数据增强中的意义
  • java.net.SocketException: Connection reset 异常原因分析和解决方法
  • Maven 仓库的分类
  • 隧道网络:为数据传输开辟安全通道
  • CentOS 7 下 Nginx 的详细安装与配置
  • JAVA 使用apache poi实现EXCEL文件的输出;apache poi实现标题行的第一个字符为红色;EXCEL设置某几个字符为别的颜色
  • 通过vba实现在PPT中添加计时器功能
  • 检验统计量与p值笔记
  • 【集成学习】Bagging、Boosting、Stacking算法详解
  • Rabbit Rocket kafka 怎么实现消息有序消费和延迟消费的
  • 【Ubuntu与Linux操作系统:五、文件与目录管理】
  • 32_Redis分片集群原理
  • 微信小程序mp3音频播放组件,仅需传入url即可
  • Sql 创建用户
  • 数据结构:LinkedList与链表—面试题(三)
  • 【开发日记】Docker修改国内镜像源
  • Elasticsarch:使用全文搜索在 ES|QL 中进行过滤 - 8.17
  • 第432场周赛:跳过交替单元格的之字形遍历、机器人可以获得的最大金币数、图的最大边权的最小值、统计 K 次操作以内得到非递减子数组的数目