YARN中的Uber任务– Uber模式

时间:2020-01-09 10:34:32  来源:igfitidea点击:

在Hadoop YARN中运行MapReduce作业时,我们可能已经注意到控制台上显示以下行。

以超级模式运行的作业job_1520505776000_0002:false

在本文中,我们将看到Hadoop中的超级模式是什么,以及如何在YARN中将任何作业作为超级任务运行。

Hadoop中的uber模式概述

通常,当提交MapReduce作业以在Hadoop群集上运行时,ApplicationMaster必须获取必须为该作业执行的Map和Reduce任务的数量,并与ResourceManager协商以获取那么多用于运行任务的资源容器。

如果作业较小,ApplicationMaster可能决定在ApplicationMaster本身正在运行的类似JVM中顺序运行该作业。这种运行作业的方式在YARN中称为"超级任务"。

何时作为超级任务运行

当ApplicationMaster可以计算出与ResourceManager进行资源协商,与不同节点上的NodeManagers进行通信以启动容器并在这些容器上运行任务的开销远远大于按顺序运行MapReduce作业时,它可以在超级模式下运行作业。
现在的问题是,什么可以帮助ApplicationMaster决定什么时候按顺序而不是并行运行作业更有利。有用于确定提交的作业"足够小"的配置参数。

超级任务的配置参数

YARN中的uber任务需要以下配置参数。这些参数在mapred-site.xml中。

  • mapreduce.job.ubertask.enable –将此参数设置为true会启用小型作业" ubertask"优化,该优化在单个JVM中顺序运行"足够小型"的作业。默认为false。
  • mapreduce.job.ubertask.maxmaps-地图数量的阈值,超过此阈值的任务被认为对于ubertasking优化而言太大。默认值为9. 用户可以覆盖此值,但只能向下。
  • mapreduce.job.ubertask.maxreduces –减少数量的阈值,超过此阈值的任务对于ubertasking优化来说太大了。当前,该代码最多不能减少一个,并且将忽略较大的值。默认值为1. 用户可以覆盖此值,但只能向下。
  • mapreduce.job.ubertask.maxbytes –输入字节数的阈值,超过该阈值则认为对于uber任务优化而言太大。如果未指定任何值,则将dfs.block.size用作默认值,这意味着在使用HDFS的情况下,HDFS块大小。