运行hadoop程序遇到的一些问题及解决方案
hadoop版本2.2.0
在安装完hadoop后经常遇到的一些问题有:
1、发现datanode启动不起来
可能原因:格式化namenode后datanode和namenode的版本ID不一致
解决方式:
从namenode下查找VERSION文件中的cluster ID和namespace ID,并将该VERSION文件复制至datanode,并将该版本文件复制至指定路径:name/current/VERSION。
如若不了解 namenode 和 datanode 的路径,则可参考 hdfs-site.xml 配置文件中的相关信息。
本题涉及Hadoop编程处理Eclipse正常运行状态下的打包问题,并将其部署到集群环境中以避免应用崩溃异常
我遇到了这个问题,网上找到一篇比较详细的解决方案
**http://www.aboutyun.com/thread-7086-1-1.html
**
3、运行mapreduce程序发现错误如下:
该Job作业job_1440646718285_0001因状态为失败而终止,并且由于启动应用尝试appattempt_1440646718285_0001_00次时发生两次错误。发生异常:org.apache.hadoop.yarn.exceptions.YarnException:未授权请求启动容器。在sun.reflect.NativeConstructorAccessorImpl.newInstance()方法调用中发现已存在的问题并触发异常处理流程。这导致应用崩溃。
通常会遇到这种情况是因为Hadoop集群内部存在时间同步问题。为了修复,请在当前配置基础上进行时间同步操作后重启服务,并在完成之后再次运行应用。
4、需注意输出路径必须是不存在的路径,否则程序会报错
该mapreduce程序自动生成输出目录。若目标目录已存在,则会导致错误。这一问题常让新手难以避免。
5、发现nameNode启动起来了,dataNode也启动起来了但是文件系统没起来
nameNode和DataNode之间既可以实现SSH通信又可以完成Ping测试。通过运行hadoop dfsadmin -report命令,系统显示节点未成功挂载。在尝试使用hadoop fs命令时遇到故障,在节点上运行该命令返回错误信息。此提示表明…进一步排查可能有助于解决问题。
ls: 在Hadoop节点hadoop02/10.252.48.153到节点hadoop01:8020之间尝试建立socket连接时发生了socket timeout异常。\n\n该类提供了一种更详细的错误描述:无法获取目标主机的路由。\n\n参考文档如下链接获取更多信息:http://wiki.apache.org/hadoop/NoRouteToHost
问题原因:由于防火墙未关闭,在执行service iptables stop命令之前需要先关闭nameNode和dataNode上的防火墙。完成此操作后,在nameNode服务器上运行hadoop dfsadmin -refreshNodes命令来刷新节点之后,在dataNode服务器上同样运行该命令以验证其状态。
