MapReduce执行任务时卡在mapreduce.Job: Running Job这一步该如何解决

问题描述:在centos7系统搭建的伪分布式Hadoop基础上,用Sqoop把HDFS上的数据导出到Mysql的时候,发现任务执行时卡死在如下图所示的这一步:


卡了接近十分钟意识到可能永远也不会结束了....赶紧ctrl+c结束进程,找找原因。首先搜了下资料,发现大多数教程都说是内存不足引起的,可在运行这个命令之前只运行过一次wordcount例程,按道理不可能占用过多内存。排除内存问题。

打开hadoop web运行监控界面,在Application标签页找到正在运行的application,查看logs,发现一直循环报错:

“org.apache.hadoop.ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8030. ”

就是连不上ResourceManagerserver的意思,这个8030端口应该是没有正常开启。

接下来看看日志里有没有详细报错信息:http://localhost:8088/logs/

因为已经运行到MapReduce.Job才卡住,所以直接找reducemanager的日志,打开http://localhost:8088/logs/hadoop-root-resourcemanager-localhost.localdomain.log (localhost.localdomain是我的hostname)

(非常枯燥的工作,从几百行密密麻麻的文字里找“ERROR”)

终于找到了,提示“org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.lang.InterruptedException”

大概理解了一下意思,是Yarn的问题,任务超时之类的错误。

再看异常栈抛出的下一条内容:Stopping IPC Server listener on 8031

想了很久没想起来之前修改Hadoop配置文件的时候有设置过8030、8031这两个端口,但是它们看上去应该是Yarn的任务执行相关的端口。那就意味着要改yarn-site.xml。用这个思路再一搜,果然找到了解决方法:

在yarn-site.xml文件加入以下内容:

<property>
    <name>yarn.resourcemanager.address</name>
    <value>hadoop-master:8032</value>
  </property>
<property>
     <name>yarn.resourcemanager.scheduler.address</name>                      
     <value>hadoop-master:8030</value>
</property>
 <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>hadoop-master:8031</value>
  </property>

原贴见:https://stackoverflow.com/questions/29904083/hadoop-java-got-exception-java-net-connectexception

问题解决。终于可以正常使用sqoop了。



版权声明:本文为sinat_33769106原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。