不要跳过这部分知识,对了解 NodeManager 本地目录结构,和熟悉 Container 启动流程有帮助。
一、分布式缓存介绍
主要作用就是将用户应用程序执行时,所需的外部文件资源下载缓存到各个节点。
YARN 分布式缓存工作流程如下:
- 客户端将应用程序所需的文件资源 (外部字典、JAR 包、二进制文件) 提交到 HDFS 上。
- 客户端将应用程序提交到 RM 上。
- RM 将与某个 NM 进行通信,启动应用程序 AM,NM 收到命令后,首先从 HDFS 上下载文件 (缓存),然后启动 AM。
- AM 与 RM 通信,以请求和获取计算资源。
- AM 收到新分配到的计算资源后,与对应的 NM 通信,以启动任务。
- 如果应用程序第一次在该节点上启动任务,NM 首先从 HDFS 上下载文件缓存到本地,然后启动任务。
- NM 后续收到启动任务请求后,如果文件已在本地缓存,则直接执行任务,否则等待文件缓存完成后再启动。
- 各个节点上的缓存文件由对应的 NM 管理和维护。在 Hadoop 中,分布式缓存并不是将文件缓存到集群中各个节点的内存中,而是将文件缓存到各个节点的磁盘上,以便执行任务时直接从磁盘上读取文件。
二、特性介绍
一)资源可见性和分类
分布式缓存机制是由各个 NM 实现的,主要功能是将应用程序所需的文件资源缓存到本地