20 Yarn Shared Cache 共享缓存服务 功能简介

Yarn Shared Cache 的目的是降低 Yarn application 因为依赖资源的上传以及本地化带来的时间消耗。通过使用该功能, 对于相同的依赖资源,Yarn application 可以直接使用其他 application 上传的资源或者该 application 的先前运行时自己上传的资源,而无需每次都重新上传以及本地化相同的资源文件,从而节省网络资源并大大减少YARN 应用程序启动时间。

本文主要简单介绍 Yarn Shared Cache 的架构和使用方式,具体官方文档可参见 SharedCache

架构

Yarn Shared Cache 主要由 4 个部分组成:

  • Shared Cache Client: 共享缓存客户端
    主要提供与 SCM 交互的接口,用户或者开发者可以使用 shared cache client 计算资源校验值 (checksum),使用校验值向 SCM 获取共享缓存中该资源的存储路径。

  • Shared Cache HDFS Directory:共享缓存 HDFS 存储目录
    共享存储资源全部都存储在指定的 HDFS 目录中,共享缓存目录通过 HDFS 权限进行保护,并且全局只读,只允许信任用户去写。这个目录只有共享缓存管理过程和在 NM 的 uploader 在上传资源时会修改。资源通过 MD5 校验值被分到各个子目录。

    /sharedcache/a/8/9/a896857d078/foo.jar
    /sharedcache/5/0/f/50f11b09f87/bar.jar
    /sharedcache/a/6/7/a678cb1aa8f/job.jar
    
  • Shared Cache Manager (SCM):共享缓存管理器
    SCM 是一个单独的服务进程,它可以运行在任何节点上。这样,管理员可以在不影响其他组件的同时,启动,停止 SCM。

    它负责处理从客户端以及 uploader 发来的请求,以及管理所有共享的资源。同时负责维护所有存储在 HDFS 目录中的缓存数据以及这些数据的元信息。它由两个主要的组件组成:后端存储服务和缓存清理服务。

    后端存储服务负责维护和持久化 shared cache 的元数据。包括在缓存中的资源,资源最后一次被使用时间,当前使用资源的应用等信息。目前是使用内存存储,并且在重启后会重建。

    清理服务负责确保不再使用的资源会被从缓存中移除。它周期性的扫描资源,清理过期的和没有应用使用的资源。

  • Shared Cache Uploader and Localization:缓存上传以及本地化

    Shared Cache uploader 是一个运行在 NM 上的服务,用来上传资源到共享缓存。它负责确认资源校验值,根据校验值动态确定资源对应的 HDFS 目录,然后上传资源到该目录中,然后通知 SCM 该资源已经被添加到缓存。

    Shared Cache uploader 是异步的,不会阻塞 yarn 应用的启动。

    一旦资源上传到共享缓存中,Yarn 使用 NM 本地化机制即可使得资源可获得。基于 NM 本地化资源的机制,由于 Shared Cache 中的缓存文件的 HDFS 地址和时间戳一直保持不变,当 NM 本地化过一次该资源后,后续再使用该资源时直接使用本地缓存的资源即可,也不会每次都重新本地化资源。因此,后续依赖于该资源的任务都不需要再次上传和本地化该资源,降低了任务启动时间。

部署

初始化设置

管理员需要通过以下几步来初始化设置 Shared Cache

1.创建HDFS目录,默认是 /sharecache 可配置
    
    yarn.sharedcache.root-dir=/sharecache 
    
2.设置共享缓存目录0755

    hadoop fs -chmod 755 /sharecache

3.确认此目录的属主是 SCM 和 NM 的启动用户(yarn) 

    hadoop fs -chown yarn:yarn /sharecache

4.在yarn-site.xml里面开启 sharedcache 功能

    yarn.sharedcache.enabled=true
    
5.启动共享缓存管理器

    yarn --daemon start sharedcachemanager

所有配置选项

Yarn Shared Cache 所需要的所有配置大致如下:

Name Default value Description
yarn.sharedcache.enabled false 是否开启 shared cache
yarn.sharedcache.root-dir /sharedcache shared cache 根目录
yarn.sharedcache.nested-level 3 非负整数,根据 checksum 子目录嵌套层数.
yarn.sharedcache.store.class org.apache.hadoop.yarn.server.sharedcachemanager.store.InMemorySCMStore SCM store 具体实现
yarn.sharedcache.app-checker.class org.apache.hadoop.yarn.server.sharedcachemanager.RemoteAppChecker SCM app-checker
yarn.sharedcache.store.in-memory.staleness-period-mins 10080 资源过期时间,如果资源上次被使用时间到现在超过过期时间则被认为是过期。单位是分钟
yarn.sharedcache.store.in-memory.initial-delay-mins 10 scm store 初始化延迟时间,单位分钟.
yarn.sharedcache.store.in-memory.check-period-mins 720 scm store application 检测周期,单位分钟.
yarn.sharedcache.admin.thread-count 1 SCM admin 接口处理线程数
yarn.sharedcache.cleaner.period-mins 1440 资源清理任务运行周期,单位分钟.
yarn.sharedcache.cleaner.initial-delay-mins 10 cleaner 任务初始化延迟时间,单位分钟.
yarn.sharedcache.cleaner.resource-sleep-ms 0 清理各个 resource 时的间隔时间。单位 ms.
yarn.sharedcache.uploader.server.thread-count 50 SCM 处理 NM upload 请求的线程数
yarn.sharedcache.client-server.address 0.0.0.0:8045 The address of the client interface in the SCM
yarn.sharedcache.uploader.server.address 0.0.0.0:8046 The address of the node manager interface in the SCM
yarn.sharedcache.admin.address 0.0.0.0:8047 The address of the admin interface in the SCM
yarn.sharedcache.webapp.address 0.0.0.0:8788 The address of the web application in the SCM
yarn.sharedcache.client-server.thread-count 50 SCM 处理客户端请求的线程数
yarn.sharedcache.checksum.algo.impl org.apache.hadoop.yarn.sharedcache.ChecksumSHA256Impl 计算文件 checksum 值算法
yarn.sharedcache.nm.uploader.replication.factor 10 resource 上传到 hdfs 后的备份数
yarn.sharedcache.nm.uploader.thread-count 20 NM 上传资源文件线程数
yarn.sharedcache.keytab required for security cluster keytab for SCM
yarn.sharedcache.principal required for security cluster
posted @ 2021-02-02 21:11  数大招疯-公众号同名  阅读(515)  评论(0编辑  收藏  举报