嗨,我是一名大数据新手。我在互联网上搜索了到底什么是超级模式。我搜索得越多,我就越困惑。有人可以帮助我回答我的问题吗?
Hadoop2 中的 UBER 模式是什么?
通常mapper和reducer将由ResourceManager(RM)运行,RM将为mapper和reducer创建单独的容器。 Uber 配置将允许在与 ApplicationMaster (AM) 相同的进程中运行映射器和化简器。
优步工作:
Uber 作业是在 MapReduce ApplicationMaster 中执行的作业。而不是与 RM 通信来创建映射器和减速器容器。 AM 在自己的进程中运行映射和归约任务,避免了启动远程容器以及与远程容器通信的开销。
为什么
如果您有一个小数据集或者您想在少量数据上运行 MapReduce,Uber 配置将帮助您,通过减少 MapReduce 通常在映射器和化简器阶段花费的额外时间。
我可以为所有 MapReduce 作业配置 Uber 吗?
截至目前, 仅地图作业和 支持使用一个减速器的作业。
当多个映射器和减速器组合使用单个容器时,就会发生 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
就hadoop2.x而言,Uber作业是在mapreduce ApplicationMaster本身中启动的作业,即没有为map和reduce作业创建单独的容器,因此节省了创建容器和与它们通信的开销。
就工作(使用 hadoop 1.x 和 2.x)而言,我认为只有在涉及 1.x 和 2.x 的术语时才能观察到差异,工作上没有区别。
配置参数与 Navneet Kumar 在他的回答中提到的相同。
PS:仅在小数据集上使用它。
“什么是Uber模式?”给出了很好的答案。 只是为了“为什么?”添加更多信息
应用程序主机决定如何运行使 启动 MapReduce 作业。如果作业规模较小,应用程序主机可能会选择在与其自身相同的 JVM 中运行任务。当它判断与在一个节点上顺序运行任务相比,在新容器中分配和运行任务的开销超过并行运行它们的收益时,就会发生这种情况。
现在,可以提出这样的问题:“什么才算是一项小工作?
默认情况下,小型作业是指少于 10 个映射器、只有一个减速器且输入大小小于一个 HDFS 块大小的作业。
首先我们需要了解当用户提交作业时会发生什么。
它转到资源管理器。
资源管理器 与节点管理器之一协调,并在该节点上创建一个容器。
在此容器中,Application Master服务已启动,它将在本地处理此应用程序。
这位应用程序大师现在负责请求更多资源 用于向资源管理器申请。
应用程序主机将首先检查名称节点以获取
数据块存储的信息,即存储在哪些数据节点上
集群,数据块存在。
获取有关存在数据的节点的信息后,它将
请求访问这些节点以使用其资源,通过
资源我们指的是容器(CPU + 内存),因此数据
遵循局部性。
每个应用程序都有一个单独的应用程序主控。
资源管理器授予对更多资源的访问权限后,就会在这些节点上创建容器/执行器。然后,这些容器/执行器由节点管理器处理。
优步模式:
有时会发生的情况是作业非常小,以至于它可以在运行 Application Master 的容器中运行。因此,在这种情况下,不需要请求不同的容器。