Hadoop 文档

General

Common

HDFS

MapReduce

MapReduce REST APIs

YARN

YARN REST APIs

YARN Service

Submarine

Hadoop Compatible File Systems

Auth

Tools

Reference

Configuration

总览

MapReduce对YARN共享缓存的支持使MapReduce作业可以利用其他资源缓存。这样可以节省作业提交客户端之间以及YARN群集本身内部的网络带宽。这将减少作业提交时间和整体作业时间。

启用/禁用共享缓存

首先,您的YARN群集必须运行共享缓存服务。请参阅YARN文档以获取有关如何设置共享缓存服务的信息。

MapReduce用户可以根据资源类型指定哪些资源可以上传到共享缓存。这是使用mapred-site.xml中的配置参数完成的:

<属性>
    <name> mapreduce.job.sharedcache.mode </ name>
    <值>已禁用</值>
    <说明>
       以逗号分隔的资源类别列表,以提交给
       共享缓存。有效类别为:jobjar,libjars,文件,
       档案。如果指定“禁用”,则作业提交代码
       将不会使用共享缓存。
    </ description>
</ property>

如果列出了资源类型,它将检查共享缓存,以查看该资源是否已在缓存中。如果是这样,它将使用缓存的资源,否则,它将指定需要异步上载该资源。

指定缓存资源

MapReduce用户可以通过3种方式为MapReduce作业指定资源:

  1. 通过通用选项解析器(即-files,-archives,-libjars)在命令行如果通过命令行指定了资源,并且为共享缓存启用了资源类型,则该资源将使用共享缓存。
  2. 分布式缓存api:如果通过分布式缓存指定了资源,则无论是否为共享缓存启用了资源类型,该资源都不会使用共享缓存。
  3. 共享缓存api:这是添加到org.apache.hadoop.mapreduce.Job api中的一组新方法。它允许用户将文件添加到共享缓存,将文件添加到共享缓存和类路径以及将归档添加到共享缓存。这些资源将放置在分布式缓存中,如果启用了它们的资源类型,则客户端也将使用共享缓存。

资源命名

重要的是要确保MapReduce作业的每个资源都具有唯一的文件名。当在容器启动期间对运行MapReduce任务的YARN容器进行本地化时,这可以防止符号链接破坏。用户可以通过使用URI的片段部分来指定自己的资源名称。例如,对于在命令行上指定的文件资源,它可能看起来像这样:

-文件/local/path/file1.txt#foo.txt,/local/path2/file1.txt#bar.txt

在上面的示例中,两个名为file1.txt的文件将使用两个不同的名称本地化:foo.txt和bar.txt。

资源可视性

共享缓存中的所有资源都具有PUBLIC可见性。

共享缓存不可用时,MapReduce客户端行为

如果共享缓存管理器不可用,则MapReduce客户端将使用故障快速机制。如果MapReduce客户端无法联系共享缓存管理器,则该客户端将不再将共享缓存用于该作业提交的其余部分。这样可以防止MapReduce客户端在每次尝试检查共享缓存中的资源时都超时。MapReduce客户端会快速恢复为默认行为,并提交作业,就好像从来没有启用共享缓存一样。