Hadoop 文档

General

Common

HDFS

MapReduce

MapReduce REST APIs

YARN

YARN REST APIs

YARN Service

Submarine

Hadoop Compatible File Systems

Auth

Tools

Reference

Configuration

总览

YARN共享缓存提供了一种以安全且可扩展的方式将共享应用程序资源上传和管理到HDFS的功能。YARN应用程序可以利用其他应用程序上载的资源或同一应用程序的先前运行,而无需多次重新上传和本地化相同的文件。这将节省网络资源并减少YARN应用程序的启动时间。

现状和未来计划

当前,YARN共享缓存已发布并可以使用。主要组件已实现并已在大规模生产环境中部署。仍然缺少一些内容(即强身份验证)。这些缺少的功能将作为后续第二阶段工作的一部分进行实施。有关更多信息,请参见YARN-7282

建筑

共享缓存功能包括4个主要组件:

  1. 共享缓存客户端。
  2. 充当缓存的HDFS目录。
  3. 共享缓存管理器(又名SCM)。
  4. 本地化服务和上载器。

共享缓存客户端

YARN应用程序开发人员和用户应使用共享缓存客户端与共享缓存进行交互。该客户端负责与共享缓存管理器进行交互,计算应用程序资源的校验和,并在共享缓存中声明应用程序资源。一旦应用程序声明了资源,就可以在应用程序的生命周期内免费使用该资源。请参阅SharedCacheClient.java javadoc以获取更多文档。

共享缓存HDFS目录

共享缓存HDFS目录存储所有共享缓存资源。它受到HDFS权限的保护,并且可以全局读取,但是写入仅限于受信任的用户。仅共享缓存​​管理器和节点管理器上的资源上载器可以修改此HDFS目录。使用资源的校验和将资源分布在一组子目录中:

/sharedcache/a/8/9/a896857d078/foo.jar
/sharedcache/5/0/f/50f11b09f87/bar.jar
/sharedcache/a/6/7/a678cb1aa8f/job.jar

共享缓存管理器(SCM)

共享缓存管理器负责处理来自客户端的请求并管理共享缓存的内容。它既照顾元数据,又照顾HDFS中的持久资源。它由两个主要部分组成,一个后端存储和一个清洁服务。SCM作为单独的守护进程运行,可以将其放置在群集中的任何节点上。这允许管理员启动/停止/升级SCM,而不会影响其他YARN组件(即资源管理器或节点管理器)。

后端存储负责维护和持久保存有关共享缓存的元数据。这包括高速缓存中的资源,上次使用资源的时间以及当前正在使用该资源的应用程序的列表。后备存储的实现是可插入的,并且当前使用内存存储,该存储在重新启动后重新创建其状态。

清理程序服务通过确保从缓存中删除不再使用的资源来维护HDFS中的持久资源。它会定期扫描缓存中的资源,如果资源既陈旧又没有当前使用该应用程序的活动应用程序,则将其逐出。

共享缓存上传器和本地化

共享缓存上载器是在节点管理器上运行的一项服务,它将资源添加到共享缓存中。它负责验证资源校验和,将资源上载到HDFS并通知共享缓存管理器资源已添加到缓存中。重要的是要注意,上载器服务与容器启动是异步的,并且不会阻止yarn应用程序的启动。另外,将内容添加到缓存是尽力而为的,并且不会影响正在运行的应用程序。一旦上传者将资源放置在共享缓存中,YARN将使用常规的节点管理器本地化机制使资源可用于应用程序。

使用共享缓存开发YARN应用程序

为了支持YARN共享缓存,应用程序必须在提交应用程序时使用共享缓存客户端。如果共享缓存客户端在共享缓存中,则它返回与资源相对应的URL。要使用缓存的资源,YARN应用程序仅使用缓存的URL创建LocalResource对象,并在提交应用程序时将setShouldBeUploadedToSharedCache设置为true。

例如,以下是使用缓存的URL创建LocalResource的方法:

字符串localPathChecksum = sharedCacheClient.getFileChecksum(localPath);
URL cachedResource = sharedCacheClient.use(appId,localPathChecksum);
LocalResource资源= LocalResource.newInstance(cachedResource,
      LocalResourceType.FILE,LocalResourceVisibility.PUBLIC
      大小,时间戳,null,true);

管理共享缓存

设置共享缓存

管理员可以按照以下步骤最初设置共享缓存:

  1. 为共享缓存创建一个HDFS目录(默认值:/ sharedcache)。
  2. 将共享缓存目录权限设置为0755。
  3. 确保共享缓存目录归运行共享缓存管理器守护程序和节点管理器的用户所有。
  4. 在yarn-site.xml文件中,将yarn.sharedcache.enabled设置为true,并将yarn.sharedcache.root-dir设置为步骤1中指定的目录。有关更多配置参数,请参阅配置参数部分。
  5. 启动共享缓存管理器:
/ hadoop / bin / yarn --daemon启动sharedcachemanager

配置参数

可以在yarn-default.xml中找到配置参数,并且应该在yarn-site.xml文件中进行设置。以下是配置参数及其默认值的列表:

名称 描述 默认值
yarn.sharedcache.enabled 是否启用共享缓存
yarn.sharedcache.root-dir 共享缓存的根目录 /共享缓存
yarn.sharedcache.nested级别 进入校验和目录之前的嵌套目录级别。它必须是非负的。 3
yarn.sharedcache.store.class 用于SCM商店的实现 org.apache.hadoop.yarn.server.sharedcachemanager.store.InMemorySCMStore
yarn.sharedcache.app-checker.class 用于SCM应用检查器的实现 org.apache.hadoop.yarn.server.sharedcachemanager.RemoteAppChecker
yarn.sharedcache.store.in.memory.staleness-period-mins 如果自上次引用以来的时间超过失效期限,则内存中存储中的资源被视为失效。以分钟为单位指定此值。 10080
yarn.sharedcache.store.in.memory.initial-delay-mins 内存存储运行其第一次检查以删除无效的初始应用程序之前的初始延迟。以分钟为单位。 10
yarn.sharedcache.store.in.memory.check-period-mins 内存中存储检查以删除无效的初始应用程序的频率。以分钟为单位。 720
yarn.sharedcache.admin.address SCM(共享缓存管理器)中管理界面的地址 0.0.0.0:8047
yarn.sharedcache.admin.thread-count 用于处理SCM管理界面的线程数(默认为1) 1个
yarn.sharedcache.webapp.address SCM(共享缓存管理器)中Web应用程序的地址 0.0.0.0:8788
yarn.sharedcache.cleaner.period分钟 清除任务运行的频率。以分钟为单位。 1440
yarn.sharedcache.cleaner.initial-delay-mins 在计划第一个清理程序任务之前的初始延迟。以分钟为单位。 10
yarn.sharedcache.cleaner.resource-sleep-ms 在处理每个共享缓存资源之间休眠的时间。以毫秒为单位。 0
yarn.sharedcache.uploader.server.address SCM(共享缓存管理器)中节点管理器接口的地址 0.0.0.0:8046
yarn.sharedcache.uploader.server.thread-count 用于处理来自节点管理器的共享高速缓存管理器请求的线程数(默认为50个) 50
yarn.sharedcache.client-server.address SCM(共享缓存管理器)中客户端接口的地址 0.0.0.0:8045
yarn.sharedcache.client-server.thread-count 用于处理来自客户端的共享缓存管理器请求的线程数(默认为50个) 50
yarn.sharedcache.checksum.algo.impl 用于计算文件校验和的算法(默认情况下为SHA-256) org.apache.hadoop.yarn.sharedcache.ChecksumSHA256Impl
yarn.sharedcache.nm.uploader.replication.factor 共享缓存的节点管理器上载器的复制因子(默认为10) 10
yarn.sharedcache.nm.uploader.thread-count 用于从节点管理器实例上载文件的线程数(默认为20) 20