hadoop官网 阅读之 MR Support for YARN Shared Cache

Overview

MapReduce 支持yarn共享缓存,允许mapreduce利用额外的资源缓存。

他保存了作业提交客户端和yarn集群之间的网络带宽。这会节约reduce工作的提交时间和所有工作的运行时间。

Enabling/Disabling the shared cache

首先,你的yarn集群要确保开启了共享缓存服务。请查看一下YARN的关于如何设置共享缓存服务的文档。

一个mapreduce用户可以通过指定资源类型来指定哪些资源是合格的可以上传到共享缓存的。这个可以通过在mapred-site.xml中的一个参数配置实现。

<property>
    <name>mapreduce.job.sharedcache.mode</name>
    <value>disabled</value>
    <description>
       A comma delimited list of resource categories to submit to the
       shared cache. The valid categories are: jobjar, libjars, files,
       archives. If "disabled" is specified then the job submission code
       will not use the shared cache.
    </description>
</property>

如果一个资源类型被列出来了,那么他将检查共享缓存里面有没有这个资源,如果有,就可以直接利用这个缓存资源,如果没有的话,那么他会指定这个资源需要被异步上传。

Specifying resources for the cache

一个mapreduce 用户有三种办法去指定一个mapreduce工作所需要的资源。

1.通过通用命令行选项解析器 :如果一个资源通过命令行被指定了,并且这个资源的类型是可以在缓存上使用的,那么这个资源就会被利用起来。

2.分布式缓存api(Application Programming Interface):如果一个资源通过分布式缓存指定了,那么这个资源就不会使用共享缓存,不管他的类型在共享缓存上是不是可用的。

3.共享缓存api: 这是一个新加入到org.apache.hadoop.mapreduce.job api里面的集合方法。 它允许了用户去添加文件到共享缓存,增添到共享缓存和类路径,并且增加一个档案去共享缓存。

Resource naming

确保一个mapreduce资源文件有一个独一无二的名字是很重要的。 当容器启动期间允许mapreduce任务的Yarn容器已经本地化时,这会阻止符号链接崩溃。用户可以使用uri的片段部分指定自己的资源名称。泪如,对于在命令行上指定的文件资源,他可能如下所示,-files /local/path/file1.txt#foo.txt, /local/path2/file1.txt#bar.txt 在上面的示例中,有两个名为file1.txt的文件将使用两个不同的名称就行本地化,foo.txt bar.txt

Resource Visibility

幻想缓存中的所有资源都具有PUBLIC可见性

MapReduce client behavior while the shared cache is unavailable

在共享缓存管理器不可用的事件中,maoreduce 客户端使用一个失败-快速机制。如果maoreduce客户端连接不上共享缓存的管理员,这个客户端在剩下的任务提交的时间里面就不会被使用了。这可以预防,mapreduce客户端每次尝试检查共享缓存中的资源时都会超时。mapreduce客户端快速恢复为默认行为提交作业,就好像首先从未启用共享缓存一样。

猜你喜欢

转载自blog.csdn.net/qq_40309183/article/details/83144978