当前位置:网站首页>【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
控制。
边栏推荐
- 01项目需求分析 (点餐系统)
- 自动机器学习框架介绍与使用(flaml、h2o)
- Rhcsa certification exam exercise (configured on the first host)
- [蓝桥杯2021初赛] 砝码称重
- Integration test practice (1) theoretical basis
- How to configure flymcu (STM32 serial port download software) is shown in super detail
- L2-004 这是二叉搜索树吗? (25 分)
- Are you monitored by the company for sending resumes and logging in to job search websites? Deeply convinced that the product of "behavior awareness system ba" has not been retrieved on the official w
- Neo4j installation tutorial
- QT creator specifies dependencies
猜你喜欢
Deoldify项目问题——OMP:Error#15:Initializing libiomp5md.dll,but found libiomp5md.dll already initialized.
Request object and response object analysis
QT creator specify editor settings
How to build a new project for keil5mdk (with super detailed drawings)
AI benchmark V5 ranking
图像识别问题 — pytesseract.TesseractNotFoundError: tesseract is not installed or it‘s not in your path
Pytorch基础
How to configure flymcu (STM32 serial port download software) is shown in super detail
About string immutability
Django running error: error loading mysqldb module solution
随机推荐
Why can't STM32 download the program
软件测试-面试题分享
neo4j安装教程
Introduction to the easy copy module
Face recognition_ recognition
AcWing 242. A simple integer problem (tree array + difference)
wangeditor富文本引用、表格使用问题
What does BSP mean
MTCNN人脸检测
Unable to call numpy in pycharm, with an error modulenotfounderror: no module named 'numpy‘
Codeforces Round #753 (Div. 3)
double转int精度丢失问题
Error connecting to MySQL database: 2059 - authentication plugin 'caching_ sha2_ The solution of 'password'
Niuke novice monthly race 40
Database advanced learning notes -- SQL statement
Valentine's Day flirting with girls to force a small way, one can learn
[蓝桥杯2017初赛]方格分割
Learn winpwn (2) -- GS protection from scratch
In the era of DFI dividends, can TGP become a new benchmark for future DFI?
[AGC009D]Uninity