运行hadoop程序遇到的一些问题及解决方案

本文列举了在运行Hadoop 2.2.0版本时可能会遇到的问题及其解决方案,包括datanode启动失败、ClassNotFoundException、Yarn授权错误、已存在输出路径导致的程序报错以及NoRouteToHost错误。解决这些问题的方法涉及版本ID同步、类路径设置、时间同步、关闭防火墙以及刷新节点等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hadoop版本2.2.0

在安装完hadoop后经常遇到的一些问题有:

1、发现datanode启动不起来

可能原因:格式化namenode后datanode和namenode的版本ID不一致

解决方式:

找到namenode下面的VERSION文件的clusterID、
namespaceID,拷贝到datanode去,路径name/current/VERSION

如果不知道namenode和datanode路径可以去hdfs-site.xml配置文件中找

2、hadoop编程:解决eclipse能运行,打包放到集群上ClassNotFoundException

我遇到了这个问题,网上找到一篇比较详细的解决方案

http://www.aboutyun.com/thread-7086-1-1.html

3、运行mapreduce程序发现错误如下:

15/08/26 23:39:36 INFO mapreduce.Job: Job job_1440646718285_0001 failed with state FAILED due to: Application application_1440646718285_0001 failed 2 times due to Error launching appattempt_1440646718285_0001_000002. Got exception: org.apache.hadoop.yarn.exceptions.YarnException: Unauthorized request to start container. 
This token is expired. current time is 1440675475888 found 1440647375821
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at org.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.instantiateException(SerializedExceptionPBImpl.java:152)
        at org.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.deSerialize(SerializedExceptionPBImpl.java:106)
        at org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher.launch(AMLauncher.java:122)
        at org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher.run(AMLauncher.java:249)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
. Failing the application.

解决方法:出现这个问题一般是因为hadoop集群中出现了时间不一致问题,同步时间,再运行,ok

4、需注意输出路径必须是不存在的路径,否则程序会报错

map/reduce程序会自己创建输出目录,如果目录已经存在,程序会报错,这个问题对于新手来说很容易犯

5、发现nameNode启动起来了,dataNode也启动起来了但是文件系统没起来

nameNode与DataNode可以互相ssh到,也可以互相ping通,hadoop dfsadmin -report 发现节点没有挂上,在节点上执行hadoop fs 命令发现无法执行,提示:

ls: No Route to Host from  hadoop02/10.252.48.153 to hadoop01:8020 failed on socket timeout exception: java.net.NoRouteToHostException: No route to host; For more details see:  http://wiki.apache.org/hadoop/NoRouteToHost

问题原因:防火墙没关,执行service iptables stop 关闭nameNode和dataNode的防火墙后在nameNode上hadoop dfsadmin -refreshNodes 刷新节点即可发现dataNode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值