Hadoop 字数统计示例卡在映射 100% 减少 0%


[hadoop-1.0.2] → hadoop jar hadoop-examples-1.0.2.jar wordcount /user/abhinav/input     /user/abhinav/output
Warning: $HADOOP_HOME is deprecated.
****hdfs://localhost:54310/user/abhinav/input
12/04/15 15:52:31 INFO input.FileInputFormat: Total input paths to process : 1
12/04/15 15:52:31 WARN util.NativeCodeLoader: Unable to load native-hadoop library for     your platform... using builtin-java classes where applicable
12/04/15 15:52:31 WARN snappy.LoadSnappy: Snappy native library not loaded
12/04/15 15:52:31 INFO mapred.JobClient: Running job: job_201204151241_0010
12/04/15 15:52:32 INFO mapred.JobClient:  map 0% reduce 0%
12/04/15 15:52:46 INFO mapred.JobClient:  map 100% reduce 0%

我已经使用本指南(http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/#run-the-mapreduce-job)在单个节点上设置了Hadoop,并且我正在尝试运行提供的示例,但是我卡在映射100%减少0%上。可能是什么原因造成的?

首先,打开您的作业跟踪器并查看空闲减速器插槽和其他正在运行的作业的数量 - 是否有另一个正在运行的作业正在消耗所有可用的减速器插槽。

一旦您向自己证明有一些免费的减速器插槽可用于为您的工作运行减速器,请在作业跟踪器 Web UI 中找到您的作业并单击它以将其打开。您现在应该能够看到已完成的映射器的数量 - 确保这显示您没有正在运行的映射器。控制台中的完成百分比有时会撒谎,您可能有一个正在提交说它是 100% 的映射器,但在完成时遇到问题。

一旦你对所有映射器都已完成感到满意,看看正在运行的化简器的数量 - 这显示 0 吗?如果没有,则表示某些正在运行 - 单击正在运行的化简器的数量以调出正在运行的化简器页面,现在单击一个实例,直到您获得查看化简器日志的选项。您需要查看此化简器的所有日志(不是第一个/最后一个 100k)。这应该告诉你你的化简器实际在做什么 - 很可能是试图将结果从映射器复制到化简器节点。我想这就是你的问题所在,网络或磁盘空间之一,但无论哪种方式,最终 hadoop都应该使化简器实例失败并重新安排它在另一个节点上运行。

导致此问题的原因可能有很多,最合理的原因是映射器中存在错误(异常,无限循环,...

调试:

  • 登录到本地主机:50030,您应该会看到您的作业列表。找到失败的作业(您的 ID 为 job_201204151241_0010),然后查看跟踪(不要忘记单击"全部",否则您将看不到完整的日志)。
  • 查看您的日志磁盘,它们应该在/usr/lib/hadoop/logs 或类似的东西下(您必须参考您的配置才能找到),并 grep 以获取错误消息cat /path/to/logs/*.log | grep ERROR,看看这是否返回了一些东西。

如果没有任何结果,我建议您将日志记录消息放入映射器中,以便在每一步手动调试会发生什么(假设这在伪分散模式下运行)。

让我知道这是怎么回事。

编辑:正如克里斯所指出的,减速器为0%,因此问题实际上出在减少步骤之前。

我在运行 Suse 11 的主机上也遇到了这个问题。正如Chris上面指出的,问题出在映射器上。为了解决这个问题,我编辑了/etc/hosts 文件并删除了主机的 IP 地址。例如在/etc/hosts 中

Ip.address.of.your.host      hostname

更改为

127.0.0.1                    hostname

一旦我进行了上述更改并重新启动,我就可以运行字数统计程序

我在 Mac 10.7.4 上运行伪集群时遇到了同样的问题。 当我从睡眠模式醒来时,就会发生这种情况。看起来映射器 IP 地址已在唤醒时重新定义:

syslog:2012-09-14 16:52:06,542 WARN org.apache.hadoop.mapred.ReduceTask: attempt_201209141640_0003_r_000000_0 copy failed: attempt_201209141640_0003_m_000000_0 from 172.19.131.144
syslog:2012-09-14 16:52:06,546 INFO org.apache.hadoop.mapred.ReduceTask: Task attempt_201209141640_0003_r_000000_0: Failed fetch #1 from attempt_201209141640_0003_m_000000_0

因此,从睡眠模式唤醒后,通过 stop-all.sh 和 start-all.sh 重新启动Hadoop可以为我解决此问题。

我可能发现了"地图 100% 减少 0%"问题的另一个原因。

我的映射任务生成了大量的记录,我在伪集群环境中运行 hadoop。

我检查了地图任务日志,似乎 map 100% 和减少开始之间的时间用于合并中间段。

2013-07-27 03:09:55,302 INFO org.apache.hadoop.mapred.Merger: Merging 10 intermediate segments out of a total of 334
2013-07-27 03:10:15,166 INFO org.apache.hadoop.mapred.Merger: Merging 10 intermediate segments out of a total of 325
2013-07-27 03:10:35,603 INFO org.apache.hadoop.mapred.Merger: Merging 10 intermediate segments out of a total of 316
...
2013-07-27 03:26:18,738 INFO org.apache.hadoop.mapred.Merger: Merging 10 intermediate segments out of a total of 28
2013-07-27 03:29:50,458 INFO org.apache.hadoop.mapred.Merger: Merging 10 intermediate segments out of a total of 19
2013-07-27 03:33:48,368 INFO org.apache.hadoop.mapred.Merger: Down to the last merge-pass, with 10 segments left of total size: 4424592099 bytes

此过程可能需要很长时间,具体取决于段的大小和数量以及磁盘的读/写速度。

除了日志之外,您还可以通过检查机器的磁盘使用率来判断这种情况正在发生,这将持续很高,因为大量数据正在合并到新文件中。我什至可以注意到段在合并后被删除,因为磁盘使用量会波动,在合并过程中增加,在删除期间减少。

我也遇到了这个问题。但是我确实像这样编辑文件等/主机:

Ip.address.of.your.host      hostname   

只需在上面的下面添加一行,如下所示

127.0.1.1     hostname
您应该注意到它是 127.0.1.1

(而不是 127.0.0.1),否则您会遇到诸如"连接到主机some_hostname端口 22:连接超时"之类的问题

如果你使用的是Linux,并且使用的是单节点Hadoop:转到目录/etc/hosts使用此格式更改您的 IP 地址

您的 IP 地址主控您的IP地址从属

转到/hadoop/conf 目录打开母版并在此键入本地主机(删除所有其他地址!打开从属并在此设置本地主机(删除所有其他地址!

现在,再次运行您的程序,它应该可以正常工作。

我遇到了类似的问题(不一样)。我的任务卡在 100% 地图和 16% 减少。我遇到了这个问题几个小时(对于不同的程序:grep,字数等),直到我碰到这个线程并查看了Chris的答案 - 这基本上提出了调试或查明问题的好方法面临的问题。(显然我没有声誉投票给他的答案,因此这篇文章)。

在查看作业跟踪器的 Web UI 并导航到确切的任务线程的日志文件(我不知道此日志存在)后,我发现我的 JobTracker 无法解析数据节点的主机名。我将(ip,主机名)对添加到我的主机文件中,卡住的任务恢复了活力并成功完成。

我遇到了类似的问题,问题是没有空间进行减速器任务。所以我释放了记忆。最好的办法是查看作业跟踪器日志:50030/logs/hadoop-hadoop-jobtracker-localhost.localdomain.log.日志消息:"WARN org.apache.hadoop.mapred.JobInProgress:没有减少任务的空间。节点 tracker_localhost.localdomain:localhost.localdomain/127.0.0.1:57829 有 778543104 个字节可用;但我们预计减少投入需要1160706716"

相关内容

  • 没有找到相关文章

最新更新