hadoop 中“uber 模式”的目的是什么?

问题描述 投票:0回答:5

嗨,我是一名大数据新手。我在互联网上搜索了到底什么是超级模式。我搜索得越多,我就越困惑。有人可以帮助我回答我的问题吗?

  • 超级模式有什么作用?
  • mapred 1.x 和 2.x 中的工作方式是否不同?
  • 我在哪里可以找到它的设置?
hadoop mapreduce
5个回答
49
投票

Hadoop2 中的 UBER 模式是什么?

通常mapper和reducer将由ResourceManager(RM)运行,RM将为mapper和reducer创建单独的容器。 Uber 配置将允许在与 ApplicationMaster (AM) 相同的进程中运行映射器和化简器。

优步工作:

Uber 作业是在 MapReduce ApplicationMaster 中执行的作业。而不是与 RM 通信来创建映射器和减速器容器。 AM 在自己的进程中运行映射和归约任务,避免了启动远程容器以及与远程容器通信的开销。

为什么

如果您有一个小数据集或者您想在少量数据上运行 MapReduce,Uber 配置将帮助您,通过减少 MapReduce 通常在映射器和化简器阶段花费的额外时间。

我可以为所有 MapReduce 作业配置 Uber 吗?

截至目前, 仅地图作业和 支持使用一个减速器的作业。


11
投票

当多个映射器和减速器组合使用单个容器时,就会发生 Uber Job。

mapred-site.xml
中围绕Uber Jobs的配置有四个核心设置。 Uber 工作的配置选项:

  • mapreduce.job.ubertask.enable
  • mapreduce.job.ubertask.maxmaps
  • mapreduce.job.ubertask.maxreduces
  • mapreduce.job.ubertask.maxbytes

您可以在此处找到更多详细信息:http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.1.15/bk_using-apache-hadoop/content/uber_jobs.html


4
投票

就hadoop2.x而言,Uber作业是在mapreduce ApplicationMaster本身中启动的作业,即没有为map和reduce作业创建单独的容器,因此节省了创建容器和与它们通信的开销。

就工作(使用 hadoop 1.x 和 2.x)而言,我认为只有在涉及 1.x 和 2.x 的术语时才能观察到差异,工作上没有区别。

配置参数与 Navneet Kumar 在他的回答中提到的相同。
PS:仅在小数据集上使用它。


4
投票

“什么是Uber模式?”给出了很好的答案。 只是为了“为什么?”添加更多信息

应用程序主机决定如何运行使 启动 MapReduce 作业。如果作业规模较小,应用程序主机可能会选择在与其自身相同的 JVM 中运行任务。当它判断与在一个节点上顺序运行任务相比,在新容器中分配和运行任务的开销超过并行运行它们的收益时,就会发生这种情况。

现在,可以提出这样的问题:“什么才算是一项小工作?

默认情况下,小型作业是指少于 10 个映射器、只有一个减速器且输入大小小于一个 HDFS 块大小的作业。


0
投票

首先我们需要了解当用户提交作业时会发生什么。

它转到资源管理器。

资源管理器 节点管理器之一协调,并在该节点上创建一个容器

在此容器中,Application Master服务已启动,它将在本地处理此应用程序。

这位应用程序大师现在负责请求更多资源 用于向资源管理器申请。

  • 应用程序主机将首先检查名称节点以获取
    数据块存储的信息,即存储在哪些数据节点上 集群,数据块存在。

  • 获取有关存在数据的节点的信息后,它将
    请求访问这些节点以使用其资源,通过
    资源我们指的是容器(CPU + 内存),因此数据
    遵循局部性。

  • 每个应用程序都有一个单独的应用程序主控。

资源管理器授予对更多资源的访问权限后,就会在这些节点上创建容器/执行器。然后,这些容器/执行器由节点管理器处理。

优步模式:

有时会发生的情况是作业非常小,以至于它可以在运行 Application Master 的容器中运行。因此,在这种情况下,不需要请求不同的容器。

© www.soinside.com 2019 - 2024. All rights reserved.