简述下背景
大家经常关注的点就是一个Application是如何提交到Yarn上,Application的一个执行流程,但是估计对Application的依赖文件是什么时间,如何上传到到对应的nodemanager上,并且被被container如何加载和使用估计不清楚,这儿简单介绍下。
在YARN中,分布式缓存是一种分布式文件与缓存机制,类似于MRv1中的DistributedCache,其主要作用是将用户应用程序执行所需要的外部文件资源自动透明地下载并缓存到各个节点上,从而省去了用户手动部署这些文件的麻烦。
Yarn分布式缓存工作流程如下:
- 1、 客户端将应用程序所需的文件资源(外部字典,JAR包,二进制文件等)提交到HDFS上
- 2、客户端将应用程序提交到ResourceManager上
- 3、 ResourceManager和某个NodeManager通信,启动应用程序的ApplicationMaster,NodeManagers收到命令后,首先从HDFS上下载文件(缓存),然后启动ApplcationMaster。
- 4、ApplcationMaster和ResourceManager通信,请求和获取计算资源。
- 5、ApplciationMaster收到新分配的计算资源后,与对应的NodeManager通信,以启动任务。
- 6、如果该应用程序第一次在该节点上启动任务,则NodeManager首先从HDFS上下载文件缓存到本地,然后启动任务。
- 7、NodeManager后续收到启动任务的请求后,如果文件已经在本地缓存,则会直接直接执行任务,否则等待文件缓存完成后才会启动。
网友评论