Hadoop-示例jar中包含的示例无法在伪分布式模式下完成

Hadoop-示例jar中包含的示例无法在伪分布式模式下完成,hadoop,mapreduce,Hadoop,Mapreduce,在伪分布式模式下运行map reduce时遇到一些问题。我正在linux上运行1.2.1版。我有: 1.创建$JAVA_HOME和$HADOOP_HOME,并将相对bin目录添加到路径中; 2.格式化dfs; 3.已执行start-dfs.sh和start-mapred.sh 执行jps似乎显示了所有应该运行的东西(我认为) 然后,我尝试运行wordcount和pi示例,结果类似,例如: [paul@lt001 bin]$ hadoop jar hadoop/hadoop-examples-1.

在伪分布式模式下运行map reduce时遇到一些问题。我正在linux上运行1.2.1版。我有: 1.创建$JAVA_HOME和$HADOOP_HOME,并将相对bin目录添加到路径中; 2.格式化dfs; 3.已执行start-dfs.sh和start-mapred.sh

执行jps似乎显示了所有应该运行的东西(我认为)

然后,我尝试运行wordcount和pi示例,结果类似,例如:

[paul@lt001 bin]$ hadoop jar hadoop/hadoop-examples-1.2.1.jar pi 4 1000
Warning: $HADOOP_HOME is deprecated.

Number of Maps  = 4
Samples per Map = 1000
Wrote input for Map #0
Wrote input for Map #1
Wrote input for Map #2
Wrote input for Map #3
Starting Job
13/11/18 10:31:38 INFO mapred.FileInputFormat: Total input paths to process : 4
13/11/18 10:31:39 INFO mapred.JobClient: Running job: job_201311181028_0001
13/11/18 10:31:40 INFO mapred.JobClient:  map 0% reduce 0%
13/11/18 10:31:47 INFO mapred.JobClient:  map 50% reduce 0%
13/11/18 10:31:52 INFO mapred.JobClient:  map 100% reduce 0%
在每个实例中,输出达到映射100%减少0%阶段,然后暂停。不管我等多久,这项工作都没有进展。我已经检查了日志,我怀疑其中一个是hadoop-paul-tasktracker-lt001.log,它有以下输出:

2013-11-18 10:31:55,969 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201311181028_0001_r_000000_0 0.0% reduce > copy > 
2013-11-18 10:34:59,148 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201311181028_0001_r_000000_0 0.0% reduce > copy > 
2013-11-18 10:35:05,196 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201311181028_0001_r_000000_0 0.0% reduce > copy > 
2013-11-18 10:35:11,253 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201311181028_0001_r_000000_0 0.0% reduce > copy > 

..........

2013-11-18 11:10:03,259 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201311181028_0001_r_000000_0 0.0% reduce > copy > 
2013-11-18 11:10:06,290 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201311181028_0001_r_000000_0 0.0% reduce > copy > 
2013-11-18 11:10:12,320 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201311181028_0001_r_000000_0 0.0% reduce > copy > 
2013-11-18 11:10:18,343 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201311181028_0001_r_000000_0 0.0% reduce > copy > 
2013-11-18 11:10:21,369 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201311181028_0001_r_000000_0 0.0% reduce > copy > 
2013-11-18 11:10:27,395 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201311181028_0001_r_000000_0 0.0% reduce > copy > 
2013-11-18 11:10:33,426 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201311181028_0001_r_000000_0 0.0% reduce > copy > 
2013-11-18 11:10:36,463 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201311181028_0001_r_000000_0 0.0% reduce > copy >
这似乎与此处的问题相同:

已检查JobTracker网页上的状态,此运行显示4个已完成的映射任务和1个正在运行(40分钟后完成0%)的reduce任务

它似乎卡在了reduce>copy>上,但为什么呢?谁能帮我看看下一步该去哪里

更新

我想我还有更多的信息。如果我查看正在运行的reduce任务

(http://localhost:50030/taskdetails.jsp?tipid=task_201311201256_0001_r_000000)
我看到它被分配到machine/default rack/hit-nxdomain.opendns.com

如果我尝试点击它发送给我的“最后4KB任务日志”链接

http://hit-nxdomain.opendns.com:50060/tasklog?attemptid=attempt_201311201256_0001_r_000000_0&start=-4097
将此URL修改为

http://localhost:50060/tasklog?attemptid=attempt_201311201256_0001_r_000000_0&start=-4097
然后显示日志,其中包含以下许多示例:

2013-11-20 14:59:54,726 INFO org.apache.hadoop.mapred.ReduceTask: Penalized(slow) Hosts: 
2013-11-20 14:59:54,726 INFO org.apache.hadoop.mapred.ReduceTask: hit-nxdomain.opendns.com Will be considered after: 814 seconds.
2013-11-20 15:00:54,729 INFO org.apache.hadoop.mapred.ReduceTask: attempt_201311201256_0001_r_000000_0 Need another 4 map output(s) where 0 is already in progress
2013-11-20 15:00:54,729 INFO org.apache.hadoop.mapred.ReduceTask: attempt_201311201256_0001_r_000000_0 Scheduled 0 outputs (1 slow hosts and0 dup hosts)
2013-11-20 15:00:54,730 INFO org.apache.hadoop.mapred.ReduceTask: Penalized(slow) Hosts: 
2013-11-20 15:00:54,730 INFO org.apache.hadoop.mapred.ReduceTask: hit-nxdomain.opendns.com Will be considered after: 754 seconds.
因此,hadoop似乎认为该任务正在hit-nxdomain.opendns.com主机上运行

主机(localhost)通过DHCP选择其DNS设置,路由器设置为DNS服务器。路由器依次使用opendns.com解析外部地址

我认为这是一个DNS问题,对吗

你知道hadoop是如何以这个主机名结束的吗


知道如何修复吗?

这确实是一个DNS问题(反向查找有问题)。决议如下:

检查“暂停”任务的任务日志(
via)http://localhost:50030/
)。这显示了DNS的问题

我发现堆栈溢出,建议使用

这表明,虽然本地主机的查找/反向查找很好,但主机名的查找/反向查找不起作用。解决了这个问题


实际的问题是,主机通过DHCP(通过路由器)获取IP,DHCP与(dnsmasq)dns服务器分离。因此,它没有向DNS服务器注册主机名。因此,dns服务器向上游将dns查找传递给我们的dns提供商,并返回一个“虚拟”IP地址,然后解析为opendns“未找到”主机名。MapReduce使用此主机名作为reduce任务的主机名。启用dnsmasq dhcp并在路由器上解除其锁定修复了问题-主机现在从dnsmasq获取其IP地址,并向DNS服务器注册其主机名。DNS查找和反向查找现在可用于本地主机和主机/主机名。

您是否尝试在独立模式下运行任务?(尝试这样做可以确保您的代码/数据是正确的)非常感谢您的回复。两个作业都以独立模式运行。我能够解决这个问题。请看下面的答案。嗯,奇怪的错误-很好,你能解决它!我在hbase和NDS方面也遇到了一些问题
2013-11-20 14:59:54,726 INFO org.apache.hadoop.mapred.ReduceTask: Penalized(slow) Hosts: 
2013-11-20 14:59:54,726 INFO org.apache.hadoop.mapred.ReduceTask: hit-nxdomain.opendns.com Will be considered after: 814 seconds.
2013-11-20 15:00:54,729 INFO org.apache.hadoop.mapred.ReduceTask: attempt_201311201256_0001_r_000000_0 Need another 4 map output(s) where 0 is already in progress
2013-11-20 15:00:54,729 INFO org.apache.hadoop.mapred.ReduceTask: attempt_201311201256_0001_r_000000_0 Scheduled 0 outputs (1 slow hosts and0 dup hosts)
2013-11-20 15:00:54,730 INFO org.apache.hadoop.mapred.ReduceTask: Penalized(slow) Hosts: 
2013-11-20 15:00:54,730 INFO org.apache.hadoop.mapred.ReduceTask: hit-nxdomain.opendns.com Will be considered after: 754 seconds.