好的,YARN Timeline 日志是 Apache Hadoop YARN 框架中用于记录应用程序生命周期事件和历史信息的核心组件。它旨在提供一个统一的机制来存储和检索这些信息。
JobHistory服务,只针对于MR应用程序,Spark,Tez等这样的服务,是无法看到日志的。
这个工具或者服务,不仅可以查看MapReduce,还可以查看Spark应用程序的日志。
以下是其主要介绍:
-
目的与作用:
- 事件存储:它存储了 YARN 应用(如 MapReduce、Spark 作业等)在运行期间产生的各种事件数据。这些事件包括应用的启动、各个任务(Task)和容器(Container)的状态变化、完成情况等。
- 历史记录:它为已完成的应用程序提供了持久化的历史记录,使得在作业结束后,用户或管理员仍然可以查询到作业的运行细节、配置、资源使用情况、时间线等信息。
- 监控与分析:这些存储的历史信息对于作业监控、性能分析、故障排查、审计以及构建更复杂的集群管理工具至关重要。
-
主要功能:
- 收集事件:YARN Application Masters 和 NodeManagers 会将应用相关的事件(如应用启动、任务开始/结束、容器分配/释放等)发送给 Timeline Server。
- 存储事件:Timeline Server 接收这些事件并将其持久化存储。在较新版本中,它支持多种存储后端,如 LevelDB(V1)、HBase(V2)。
- 提供查询接口:通过 RESTful API 提供查询服务。用户可以查询特定应用的信息、获取应用的配置、查看所有任务的状态和日志链接、检索特定时间范围内的事件等。
- 聚合视图:它为上层工具(如 YARN Web UI、作业历史服务器)提供了一个聚合视图,展示集群中所有应用的历史状态。
-
关键概念:
- 实体(Entity) :代表一个具有类型(如
APPLICATION,CONTAINER)和唯一标识符的对象。例如,一个 MapReduce 应用就是一个实体。 - 事件(Event):代表发生在某个实体上的、带有时间戳的特定事件。例如,"任务 X 开始运行" 就是一个事件,关联到代表该任务的实体上。
- 实体(Entity) :代表一个具有类型(如
-
架构:
- Timeline Server:是核心服务组件,负责接收、存储和提供查询。
- 客户端:Application Masters 和 NodeManagers 作为客户端将事件发送到服务器。
- 存储层:负责数据的持久化。
-
版本演进:
- Timeline Service V1:在 YARN 2.6.0 中引入,主要用于存储应用级别的历史信息(如 MapReduce 作业历史)。其存储后端通常是 LevelDB。
- Timeline Service V2 (ATS V2):在 YARN 3.0.0 中成为默认,旨在解决 V1 的可扩展性(特别是对于大量小文件或流式应用)和可靠性问题。它通常使用 Apache HBase 作为分布式、可扩展的存储后端。ATS V2 提供了更丰富的 API 和更强的数据模型。
-
与普通日志的区别:
- Timeline 日志 记录的是结构化的、带有时间戳的元数据事件(谁在什么时候做了什么),便于查询和分析。
- 标准输出/错误日志 (通常存储在 HDFS 上)记录的是应用运行过程中产生的文本输出(如
stdout,stderr),内容是非结构化的,主要用于调试具体任务失败原因。
总而言之,YARN Timeline 日志是理解和分析 YARN 集群上应用程序运行历史的关键基础设施,为集群管理、作业监控和故障诊断提供了强大的数据支持。