1.美图
2.概述
在使用 Flink 的生产实践中,我们发现采用 Flink on YARN 的部署方式时,将大量用户依赖的 JAR 包和其他文件上传到对应的容器中是从用户发送部署请求到应用实际运行起来的重要耗时操作。其中,不少文件例如 Flink 框架本身的依赖对于每个应用来说都是一样的,如果能采用一个统一的缓存将会显著减少所需上传的文件大小;此外,许多用户依赖的 JAR 包只在运行时需要,而这些依赖可能本身是存储在 YARN 集群上的,在提交之前先将依赖拉取下来再上传上去将会带来额外无谓的开销。本文首先介绍 YARN 上资源本地化的基础知识,随后介绍利用这一技术减少 Flink 在 YARN 上部署时间的几个具体工作
YARN 上的资源本地化
关于 YARN 上的资源本地化,Cloudera 的这篇文章是个很好的介绍,本节内容基本是链接文章的一个翻译和简单的演绎。
YARN 上的资源本地化主要涉及以下几个概念
- 本地化(Localization) - 本地化是一个将远端资源下载或复制到本地文件系统的过程,通过本地化的过程,在访问文件时就不再需要每次都从远端拉资源,只需要读取本地的资源
- 本地资源(Local