好的,我们来详细介绍一下 YARN 中的 JobHistory 日志。
我们在YARN运行MapReduce的程序的时候,任务会被分发到不同的节点,在不同的Container内去执行。如果一个程序执行结束后,我们想去查看这个程序的运行状态呢?每一个MapTask的执行细节?每一个ReduceTask的执行细节?这个时候我们是查看不到的,因此我们需要开启记录历史日志的服务。
1.JobHistory Server 的作用
JobHistory Server (JHS) 是 YARN 的一个关键服务组件,主要负责:
- 存储已完成作业的历史信息:当应用程序(如 MapReduce 作业)在 YARN 上运行完成后,其运行相关的元数据和日志并不会立即消失。JobHistory Server 负责收集、存储和管理这些信息。
- 提供历史作业查询接口:用户或管理员可以通过 Web UI 或 REST API 查询已经完成的应用程序的详细信息,包括:
- 应用程序的配置信息
- 运行时间线(开始、结束时间)
- 各个容器(Container)的运行状态和日志
- 计数器(Counters)信息
- 任务(Map Task, Reduce Task)的尝试次数、失败原因等
2.日志的生成与聚合
- 日志产生:在应用程序运行期间,每个运行的容器(通常在每个 NodeManager 节点上)都会产生标准输出(
stdout)、标准错误(stderr)以及特定于框架(如 MapReduce)的日志文件(例如syslog)。 - 日志聚合:YARN 的一个重要特性是日志聚合