1 yarn web ui:

  • Apps Submitted:已提交的应用

  • Apps Completed:已完成的应用

  • Apps Running:正在运行的应用

  • Containers Running:正在运行的容器

  • Memory Total:集群总内存

  • Memory Used:已使用内存

  • VCores Total:集群 CPU 总核数

  • VCores Used:已使用的 CPU 核数

  • Memory Reserved:预留的内存

  • VCores Reserved:预留的 CPU 核数

参考:辛辛苦苦运行起来的Yarn页面,里面的参数你得了解一下_a934079371的博客-CSDN博客

2 Memory Reserved:预留的内存

VCores Reserved:预留的 CPU 核数

Yarn 为了防止在分配一个容器到 NodeManager 的时候, NodeManager当前还不能满足,那么 现在 NodeManager 已经有的资源将被冻结即reserved,直到达到 容器需要的标准,然后分给那个容器。

An implementation detail of this change that prevents applications from starving under this new flexibility is the notion of reserved containers. Imagine two jobs are running that each have enough tasks to saturate more than the entire cluster. One job wants each of its mappers to get 1GB, and another job wants its mappers to get 2GB. Suppose the first job starts and fills up the entire cluster. Whenever one of its task finishes, it will leave open a 1GB slot. Even though the second job deserves the space, a naive policy will give it to the first one because it’s the only job with tasks that fit. This could cause the second job to be starved indefinitely. To prevent this unfortunate situation, when space on a node is offered to an application, if the application cannot immediately use it, it reserves it, and no other application can be allocated a container on that node until the reservation is fulfilled. Each node may have only one reserved container. The total reserved memory amount is reported in the ResourceManager UI. A high number means that it may take longer for new jobs to get space.

大意如下:   同时2个JOB在运行,且每个JOB都能完全占满了当前集群资源,  假如第一个JOB每个任务需要1G资源,第二个JOB每个任务需要2G的资源。 如果第一个JOB的某个任务运行完成了,会有1个G的资源属于开放可用状态,  那么这个1个G的资源也会只有第一个JOB可用, 第二个JOB肯定用不到。因为第二个JOB需要至少2G内存,那么这1个G的资源肯定不够,但是对第一个JOB的子任务正好。导致第二个JOB的任务总是无法分配到资源。

为解决这种问题, 出现了reserved资源的做法, 即1G的资源即使不能立即为第二个JOB使用, 也会先占用即reserved, 直到对应节点可分配到更多资源达到2个G,此时reserved状态即解除。

思考:  如上述情况,每个节点应该仅仅有且有一个reserved状态容器。 【但是针对更多JOB的情况,可能会更多,即多个JOB都需要2G的内存单元运行的情况下,是否有可能出现多个reserved状态资源呢?】

3 yarn log.

正在运行的日志保存路径(可配置本地保存路径),运行完成后会移除,聚合到HDFS路径,参看3.3.

3.1 spark AM container日志。

在yarn web ui,   可以看到Logs

点击logs链接。会进入AM容器日志列表页面。结尾编号为000001

可以看到有4个日志文件。  prelaunch.err, prelauch.out,  stderr,stdout.

prelaunch.err, prelauch.out为启动AM前的一些日志,基本不用关注。

stderr, 为容器启动即AM注册时一些日志信息。  以及JOB运行时,请求资源executor相关容器的一些框架相关信息。也包含启动过程中一些异常信息。

stdout, AM相关容器程序的输出信息。一般为空。

3.2 spark executor container日志

spark executor container   在UI第一列链接后,可以看到所有容器日志链接:

如上图,  除了编号000001外,都是executor容器,点击链接logs:

prelaunch.err, prelauch.out为启动executor容器之前的一些日志,基本不用关注。

stderr, 为容器启动executor容器,以及注册时一些日志信息。  以及JOB运行时,分配任务以及运行情况的一些日志。也包含启动过程中一些异常信息。

stdout,    运行的任务输出信息。如system.out.println 或者log.info打印的一些信息。

3.3 spark history log.

运行完成后,日志文件都会聚合到HDFS指定路径:

如下截图:为applicationID 的聚合日志,可以看到是按节点聚合保存。(1个AM,6个executor)  :

通过命令行yarn logs -applicationId   appid可以查看所有容器的聚合日志(上述7个文件的合并)。

也可以通过yarn web ui查看单个容器的历史日志文件:

3.2.1  am 日志:  直接找到历史job,点击logs,  即可链接进入到  AM的容器日志。 注意历史日志已经聚合prelaunch.err, prelauch.out,stderr,stdout到一个文件中。

AM日志

sterr除注册申请分配信息,

stout 也包含main程序输出打印信息。 (drirver 后面的日志可点击)

注:有时可以看到2个logs,  说明启动过2次am, 以第二个重新构建的AM为准。

3.2.2 executor日志。需要从AM的track url 链接,  进入spark history web ui.

每个executor的日志有独特标志(executorId@hostname): 如:     28367@sz-hd-13

实际展现是根据聚合的日志文件,截取executorId对应的日志内容显示。

3.3 flink log

flink同spark类似,只是AM运行的是jobmanager.    任务运行在taskmanager,

任务日志文件主要看taskmanager.log和taskmanager.out。

taskmanager.log打印一些系统框架输出日志(如checkpoint信息)和业务日志信息即业务代码中log代码信息(默认情况)。

我们可以修改默认配置: 将业务日志信息写到特定文件。调整log4j.properties可以指定。但是这样就再WEB页面看不到了。

taskmanager.out 打印所有的System.out.print日志。

一般情况下很少使用,所以这个文件其实很小。

参考: https://support.huaweicloud.com/devg3-mrs/mrs_07_260053.html

http://www.cnblogs.com/createweb/p/11613511.html

注: flink默认使用log4j作为日志输出。要使用logback: 可以删除log4j.propertis并添加logback.xml配置文件(flink/conf目录),   同时需要添加依赖jar包到flink/lib

参考:hadoop - What is Memory reserved on Yarn - Stack Overflow

3.1  job, stage ,task概念

//todo

前言: 看懂UI前先要弄清楚  job, stage ,task概念。  可参考:理解spark中的job、stage、task - 知乎

1 当在程序中遇到一个action算子的时候,就会提交一个job

2 job中stage的划分就是根据shuffle依赖进行的.  如果宽依赖(即父rdd 对应多个子rdd)会产生shuffle,即拆分为一个stage.

3 一个spark application提交后,陆续被分解为job、stage,到这里其实还是一个比较粗的概念。Stage继续往下分解,就是Task。

Task的数量其实就是stage的并行度。RDD在计算的时候,每个分区都会起一个task,所以rdd的分区数目决定了总的的task数目。

3.2   spark webui 内存相关的重要参数

3.2.1  Storage Memory

此参数 显示执行运算时 占用存储数据区的内存/存储区域内存(一般RDD数据存储在此)大小。   spark新版本中运行时内存不够时是可以使用数据存储区内存的。

如果发现执行器正在使用Storage下的大量内存,则有可能需要增加执行器的内存大小。

(如何判断 执行器使用了大量存储内存呢?)

分母:数据存储总共可用内存。spark2中, execution memory和storage memory是共用的,默认是各占用0.5, 但是两者可以互相占用。

所以这里spark UI显示的存储区域内存,为存储和执行总内存之和   =  (executor内存 - 300M)*0.6

分子: 显示了存储实际占用的内存。

注意: 虽然我们设置了 --executor-memory 18g,但是 Spark 的 Executor 端通过 Runtime.getRuntime.maxMemory 拿到的内存其实没这么大,只有 17179869184 字节

,另外sparkUI, 计算时除以的是 1000, 不是1024,所以与我们实际计算会有些许出入。

Storgae 和 Execution 在适当时候可以借用彼此的 Memory,需要注意的是,当 Execution 空间不足而且 Storage 空间也不足的情况下,Storage 空间如果曾经使用了超过 Unified 默认的 50% 空间的话则超过部份会被强制 drop 掉一部份数据来解决 Execution 空间不足的问题 (注意:drop 后数据会不会丢失主要是看你在程序设置的 storage_level 来决定你是 Drop 到那里,可能 Drop 到磁盘上,如果只能内存,则报错),这是因为执行(Execution) 比缓存 (Storage) 是更重要的事情。

  • 双方空间都不足时,则存储到硬盘;如己方空间不足而对方空余时,可借用对方的空间;(存储空间不足是指不足以放下一个完整的 Block)。
  • 执行内存的空间被对方占用后,可让对方将占用的部分存储转存到硬盘,然后“归还”借用的空间。
  • 存储内存的空间被对方占用后,无法让对方“归还”,因为需要考虑到 Shuffle 过程中很多因素,实现起来较为复杂。

3.2.2 shuffle writer

发生在shuffle之前

shuffle wrirer反应了 executor数据在shuffle操作前,如果executor内存不够,会把shuffle的数据溢写到磁盘。如果发生大量的shuffle写, 则需要增加执行器内存,以减小中间磁盘写入次数。

存在shuffle写, 说明默认的excute 内存50%不够(如果存储内存占用不多,可能占用存储内存,这时会超过50%),此时执行内存数据会溢写磁盘。        ·

3.2.3 shuffle reader

发生在shuffle后,  下游RDD读取上游RDD的数据。   这个反应了shuffle数据输入大小。  一般不用太关心。

yarn WEB UI及reserved memory、spark WEB UI相关推荐

  1. spark的UI界面解析

    一:spark的UI界面 二:spark的UI界面解析 1 代表job页面,在里面可以看到当前应用分析出来的所有任务,以及所有的excutors中action的执行时间. 页可以分为两部分,一部分是e ...

  2. Spark Streaming在Spark Web UI上的显示办法

    下面开始注意: 不要改变这个实验中各个步骤的顺序!!! 启动spark集群和HDFS集群(搞不定的请自行百度) 然后 ① $ nc -lk 9999 test test home  home scho ...

  3. Spark Web UI详解

    spark Web UI是学习调试spark任务的入口,查看spark UI任务日志也是一项必备技能.但在几番搜索后,一直没能找到全面详细地对如何查看spark Web UI方法的文章,故在查看资料及 ...

  4. UI 设计师的盛宴:Web UI 设计资源大系

    每个 Web 设计师都在 UI 设计上费尽了心血,即使这样,资源的匮乏,视野的狭窄,也常常让他们的呕心沥血之作并不为人看好,事实上,UI 设计并不需要闭门造车,很多 UI 元素是通用的.本文收集了 2 ...

  5. 通过录屏自动测试web端查询功能_海豚 Web UI自动化测试工具

    http://div.io/topic/1339 海豚是什么? 没错,它是一个 Web UI自动化测试工具,专治Web UI的各种疑难杂症,目前只针对移动端Webapp量身定做. 说到 Web UI的 ...

  6. Spark 内存管理 spark.executor.memory /spark.memory.fraction/spark.memory.offHeap.size【堆外内存/内存管理】 钨丝计划

    spark1.6及之后: 堆内内存: spark.executor.memory 包含 spark.memory.fraction: spark.memory.fraction 包含 spark.me ...

  7. 渐进式web应用程序_为什么渐进式Web应用程序很棒,以及如何构建一个

    渐进式web应用程序 by Ankita Masand 通过Ankita Masand 为什么渐进式Web应用程序很棒,以及如何构建一个 (Why Progressive Web Apps are g ...

  8. spark的UI界面及调优

    [看图说话] 基于Spark UI性能优化与调试--初级篇 Spark有几种部署的模式,单机版.集群版等等,平时单机版在数据量不大的时候可以跟传统的java程序一样进行断电调试.但是在集群上调试就比较 ...

  9. java web开发初学_2018年学习Web开发的绝对初学者指南

    java web开发初学 This post was originally published on Coder-Coder.com. 该帖子最初发布在Coder-Coder.com上 . If yo ...

最新文章

  1. 机器“血液”登上Nature:一条假鱼靠它续航36小时,无需固态电池
  2. Object o与Object o=null的区别
  3. linux怎么添加工作组,linux 用户与工作组
  4. java 判断int类型为空
  5. c++思维导图_必看|用好思维导图,别神话思维导图
  6. pulsar 容量_Pulsar 负载均衡设计
  7. redis 备份导出rdb_Redis持久化知识点—RDB+AOF ,你了解多少
  8. 吉林考生多少分能考上哈工大计算机专业,福建考生多少分能上哈工大?
  9. C#使用SetWindowsHookEx时报错“类型的已垃圾回收委托进行了回调”
  10. CloudStack 4.4学习总结之注册ISO
  11. yaw公式_3D 视角旋转矩阵 yaw pitch roll (pan, tilt)的数学计算
  12. 英特尔服务器主板g41性能,什么叫优化好,英特尔G41集成显卡也能流畅运行
  13. linux如何从 命令行 将普通文件打印到 pdf
  14. 智伴机器人班尼怎么联网_智伴机器人官网
  15. Android使用自带的文件管理器选择文件并读取内容
  16. 非常实用的视频剪辑软件,它可以满足您进行视频制作的需要,使用剪映mac版能够轻松对视频进行各种编辑。
  17. 装修到底要不要请设计师?
  18. 华为网络技术学习打卡8(云计算大数据,openstack,docker)
  19. win11什么时候发布的_2019年8月证券从业资格考试报名通知什么时候发布?
  20. win2003 php配置,Win2003 PHP环境配置

热门文章

  1. Dart factory 快速理解
  2. iOS-Cannot find interface declaration for 'XX', superclass of 'XX'
  3. 李群SE(3)即欧式变换Euclidean transformation(刚性变换Rigid Transformation)
  4. 手机网页图片自适应大小 background-size css 图片全屏 背景尺寸设置
  5. Fiddler 抓包夜神模拟器图文详解
  6. 用ffmpeg进行音频格式转换、剪切、合并、音量调整等
  7. 服务器不稳定怎么解决?常见的4种问题和6种处理方法
  8. 编程基础 - 线索二叉树 (Threaded Binary Tree)
  9. 适合团队工作的软件,大家来看看有没有喜欢的吧
  10. java生成随机的26位英文字母