首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hadoop -示例jar中包含的示例无法在伪分布式模式下完成。

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

Stack Overflow用户
提问于 2013-11-20 13:41:41
回答 1查看 1.6K关注 0票数 0

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

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

代码语言:javascript
复制
[paul@lt001 bin]$ jps
8724 TaskTracker
8487 SecondaryNameNode
8841 Jps
8353 DataNode
7239 NameNode
8597 JobTracker

然后,我尝试使用类似的结果运行单词results和pi示例,例如:

代码语言:javascript
复制
[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%

在每个实例中,输出达到map 100%,减少0%,然后停止。不管我等多久,这份工作都不会有任何进展。我已经检查了日志,而我怀疑的日志中有一个是lt001.log,它的输出如下:

代码语言:javascript
复制
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 >

这似乎是与以下问题相同的问题:

在伪分布式模式下运行Hadoop示例

检查了JobTracker网页上的状态,此运行显示4个已完成的地图任务和1个运行( 40分钟后完成0%)减少任务。

它似乎被困在减少>复制>但为什么呢?有人能帮我找下一个地方吗?

更新

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

代码语言:javascript
复制
(http://localhost:50030/taskdetails.jsp?tipid=task_201311201256_0001_r_000000)

我看到它被分配给计算机/默认机架/点击-nxdomain.opendns.com。

如果我试着点击“最后4KB任务日志”链接,它就会将我发送到

代码语言:javascript
复制
http://hit-nxdomain.opendns.com:50060/tasklog?attemptid=attempt_201311201256_0001_r_000000_0&start=-4097

将此URL修改为

代码语言:javascript
复制
http://localhost:50060/tasklog?attemptid=attempt_201311201256_0001_r_000000_0&start=-4097

然后用下面的许多例子显示日志:

代码语言:javascript
复制
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似乎认为该任务正在ht-nxdomain.opendns.com主机上运行。

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

我是否正确地认为这是一个DNS问题?

知道hadoop是如何得到这个主机名的吗?

知道怎么修吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-21 10:33:49

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

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

我发现一个堆栈溢出帖子建议使用

hadoop-dns检查器

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

实际问题是主机通过DHCP (通过路由器)获得它的IP,而DHCP与(dnsmasq) dns服务器分离。因此,它没有向DNS服务器注册主机名。因此,dns查找正在由dns服务器向我们的dns提供程序上游传递,并返回一个“虚拟”IP地址,然后解析为opendns "not“主机名。MapReduce使用这个主机名作为减少任务的主机名。启用dnsmasq并分解路由器上的问题--主机现在从dnsmasq获取其IP地址,并向DNS服务器注册其主机名。DNS查找和反向查找现在对本地主机和主机/主机名都有效。

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

https://stackoverflow.com/questions/20097573

复制
相关文章

相似问题

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