当前位置:网站首页>【yarn】Yarn container 日志清理
【yarn】Yarn container 日志清理
2022-07-06 09:15:00 【kiraraLou】
前言
今天整理一下 yarn Container 的日志清理机制。
一、container 日志目录结构
Yarn container的日志目录结构如下图所示。
NodeManager 会在所有目录上为同一个应用程序建立相同的目录结构,并采用轮询的调度方式将这些目录分配给不同Container使用。每个Container将输出三类日志:
stdout:使用标准输出函数打印的日志,比如Java中的System.out.print输出的内容。stderr:标准错误输出产生的日志信息。syslog:使用log4j打印的日志信息,这是最常用的打印日志方式,默认情况下,YARN采用了这种方式打印日志,换句话说,通常情况下,只有这个文件中有内容,其他两个文件为空。
这个配置为 yarn.nodemanager.log-dirs。

二、日志清理机制
由于NodeManager将所有Container的运行日志保存到本地磁盘上,因此,随着时间的积累,日志必将越来越多。为了避免大量Container日志“撑爆”磁盘空间,NodeManager将定期清理日志文件,该功能由组件LogHandler(当前存在两种实现:NonAggregatingLogHandler和LogAggregationService)完成。
总起来说,NodeManager提供了定期删除(由NonAggregatingLogHandler实现)和日志聚集转存(由LogAggregation-Service实现)两种日志清理机制,默认情况下,采用的是定期删除机制。
1. 定期删除
NodeManager允许一个应用程序日志在磁盘上的保留时间为yarn.nodemanager.log.retain-seconds(单位是秒,默认为3×60×60,即3小时),一旦超过该时间,NodeManager会将该应用程序所有日志从磁盘上删除。

2. 日志聚集转存
除定期删除外,NodeManager还提供了另一种日志处理方式——日志聚集转存[插图],管理员可通过将配置参数yarn.log-aggregation-enable置为true启用该功能。
该机制将HDFS作为日志聚集仓库,它将应用程序产生的日志上传到HDFS上,以便统一管理和维护。该机制由两阶段组成:文件上传和文件生命周期管理。
(1) 文件上传
当一个应用程序运行结束时,它产生的所有日志将被统一上传到HDFS上的${remoteRootLogDir}/${user}/${suffix}/${appid}
${remoteRootLogDir}值由参数yarn.nodemanager.remote-app-log-dir指定,默认是/tmp/logs${user}为应用程序拥有者${suffix}值由参数yarn.nodemanager.remote-app-log-dir-suffix指定,默认是"logs"${appid}为应用程序ID
且同一个节点中所有日志保存到该目录中的同一个文件,这些文件以节点ID命名。
日志结构图如下图所示。

一旦日志全部上传到HDFS后,本地磁盘上的日志文件将被删除。此外,为了减少不必要的日志上传,NodeManager允许用户指定要上传的日志类型。当前支持的日志类型有三种:
ALL_CONTAINERS(上传所有Container日志)APPLICATION_MASTER_ONLY(仅上传ApplicationMaster产生的日志)AM_AND_FAILED_CONTAINERS_ONLY(上传ApplicationMaster和运行失败的Container产生的日志),默认情况下采用ALL_CONTAINERS。
(2) 文件生命周期管理
转存到HDFS上的日志的生命周期不再由NodeManager负责,而是由JobHistory服务管理。比如对于MapReduce计算框架而言,它专有的JobHistory负责定期清理MapReduce作业转存到HDFS上的日志,每个日志文件最多存留时间为yarn.log-aggregation.retain-seconds(单位是秒,默认为3×60×60,即3小时)。
用户可通过两种方式查看应用程序日志,一种是通过NodeManager的Web界面;另一种是通过Shell命令查看。
查看一个应用程序产生的所有日志,命令如下:
bin/yarn logs -applicationId application_130332321231_0001
查看一个Container 产生的日志,命令如下:
bin/yarn logs -applicationId application_130332321231_0001 -containerId container_130332321231_0002 -nodeAddress 127.0.0.1_45454
总结
Yarn Container有本地删除和日志聚合转存删除两种机制。Yarn Contaioner本地日志是由yarn.nodemanager.log.retain-seconds控制。yarn.log-aggregation-enable是开启日志聚合转存。- 转存后的日志由
yarn.log-aggregation.retain-seconds控制。
边栏推荐
- PyCharm中无法调用numpy,报错ModuleNotFoundError: No module named ‘numpy‘
- Did you forget to register or load this tag
- Vs2019 use wizard to generate an MFC Application
- L2-001 紧急救援 (25 分)
- [download app for free]ineukernel OCR image data recognition and acquisition principle and product application
- AcWing 179.阶乘分解 题解
- Record a problem of raspberry pie DNS resolution failure
- Pytorch基础
- Solve the problem of installing failed building wheel for pilot
- Mtcnn face detection
猜你喜欢

MySQL and C language connection (vs2019 version)

Software testing and quality learning notes 3 -- white box testing

vs2019 桌面程序快速入门

快来走进JVM吧

How to build a new project for keil5mdk (with super detailed drawings)

02 staff information management after the actual project

Learn winpwn (3) -- sEH from scratch

QT creator design user interface

Neo4j installation tutorial

Integration test practice (1) theoretical basis
随机推荐
Picture coloring project - deoldify
Vs2019 use wizard to generate an MFC Application
Project practice - background employee information management (add, delete, modify, check, login and exit)
L2-006 树的遍历 (25 分)
Install mongdb tutorial and redis tutorial under Windows
L2-007 家庭房产 (25 分)
保姆级出题教程
数据库高级学习笔记--SQL语句
AcWing 1298. Solution to Cao Chong's pig raising problem
数数字游戏
Request object and response object analysis
Use dapr to shorten software development cycle and improve production efficiency
Punctual atom stm32f103zet6 download serial port pin
Solution to the practice set of ladder race LV1 (all)
In the era of DFI dividends, can TGP become a new benchmark for future DFI?
Reading BMP file with C language
ES6 let 和 const 命令
Did you forget to register or load this tag
牛客Novice月赛40
Remember a company interview question: merge ordered arrays