使用过程中,发现hadoop的YARN-3832的bug,2.6.0中已解决,但是2.7.0中又出现了这个bug。
15/09/28 10:22:34 INFO mapreduce.Job: Task Id : attempt_1443364253801_0310_m_000000_0, Status : FAILED
Rename cannot overwrite non empty destination directory /data/hadoop/data/tmp/nm-local-dir/usercache/hadoop/filecache/60
java.io.IOException: Rename cannot overwrite non empty destination directory /data/hadoop/data/tmp/nm-local-dir/usercache/hadoop/filecache/60
at org.apache.hadoop.fs.AbstractFileSystem.renameInternal(AbstractFileSystem.java:735)
at org.apache.hadoop.fs.FilterFs.renameInternal(FilterFs.java:236)
at org.apache.hadoop.fs.AbstractFileSystem.rename(AbstractFileSystem.java:678)
at org.apache.hadoop.fs.FileContext.rename(FileContext.java:958)
at org.apache.hadoop.yarn.util.FSDownload.call(FSDownload.java:366)
at org.apache.hadoop.yarn.util.FSDownload.call(FSDownload.java:62)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
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)
找了好久,最终确认该问题是hadoop的bug,不是配置出错。在官网的2.7.1的release中找到了YARN-3832的bug。所以对hadoop进行升级。
从2.7.0升级为2.7.1,升级步骤如下:
1.下载安装包后,下载native的64位包,替换新版本中的native。
2.修改2.7.1中的配置文件,保持与当前集群配置一致,修改配置文件后,分发到各台hadoop集群机器的一个临时目录中。我的配置文件列表有:core-site.xml、excludes、hadoop-env.sh、hdfs-site.xml、mapred-env.sh、mapred-site.xml、master、slaves、yarn-env.sh、yarn-site.xml
3.停掉hadoop集群。
4.登录每台hadoop节点的服务器,先备份hadoop的安装文件目录。然后进入hadoop安装目录,执行rm -rf bin etc include lib libexec LICENSE.txt NOTICE.txt README.txt sbin share
5.将临时目录中的2.7.1的hadoop文件拷贝至安装目录。
6.执行start-all.sh,启动hadoop集群,访问http://localhost:50070/dfshealth.html#tab-overview ,查看hadoop版本是否已更新,查看各节点状态是否正常。
来源:oschina
链接:https://my.oschina.net/u/1758727/blog/512286