首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么hadoop对于一个简单的hello world作业很慢?

为什么hadoop对于一个简单的hello world作业很慢?
EN

Stack Overflow用户
提问于 2019-03-02 07:19:05
回答 1查看 485关注 0票数 2

我正在遵循hadoop网站上的教程:https://hadoop.apache.org/docs/r3.1.2/hadoop-project-dist/hadoop-common/SingleCluster.html。我在伪分布式模式下运行以下示例。

代码语言:javascript
运行
复制
time hadoop jar hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.2.jar grep input output 'dfs[a-z.]+'

它需要1:47分钟才能完成。当我关闭网络(wifi)时,它在大约50秒内完成。

当我使用本地(独立)模式运行相同的命令时,它在大约5秒内完成(在mac上)。

我知道在伪分布式模式下有更多的开销,因此它将花费更多的时间,但在这种情况下,它需要更多的时间。CPU在运行期间完全空闲。

你知道是什么原因导致这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-08 02:05:17

首先,我没有解释为什么关闭你的网络会导致更快的时间。您必须深入研究Hadoop日志才能找出问题所在。

这是大多数人在单个节点上运行Hadoop时遇到的典型行为。实际上,你是在尝试使用联邦快递向你的隔壁邻居递送东西。遍历它总是更快,因为操作分布式系统的固有开销。当您运行本地模式时,您仅执行Map-Reduce功能。当您运行伪分布式时,它将使用所有Hadoop服务器(用于数据的NameNode、DataNodes;用于计算的资源管理器、NodeManagers ),您所看到的是其中涉及的延迟。

当您提交作业时,资源管理器必须安排作业。由于您的集群不忙,它将向Node Manager请求资源。Node Manager将为其提供一个容器,该容器将运行您的应用程序主机。通常,此循环大约需要10秒。一旦您的AM开始运行,它就会向资源管理器请求资源来执行它的Map和Reduce任务。这还需要10秒。此外,当您提交作业时,在此作业实际提交到资源管理器之前有大约3秒的等待时间。到目前为止,这已经是23秒了,你还没有做任何计算。

一旦作业开始运行,最有可能的等待原因是内存分配。在较小的系统(> 32 to内存)上,操作系统可能需要一段时间才能分配空间。如果你在Hadoop的商用硬件(16+核心,64+ GB)上运行同样的东西,你可能会看到运行时间接近25-30秒。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54953620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档