使用過程當中,發現hadoop的YARN-3832的bug,2.6.0中已解決,可是2.7.0中又出現了這個bug。html
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進行升級。java
從2.7.0升級爲2.7.1,升級步驟以下:shell
1.下載安裝包後,下載native的64位包,替換新版本中的native。apache
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集羣。oop
4.登陸每臺hadoop節點的服務器,先備份hadoop的安裝文件目錄。而後進入hadoop安裝目錄,執行rm -rf bin etc include lib libexec LICENSE.txt NOTICE.txt README.txt sbin sharespa
5.將臨時目錄中的2.7.1的hadoop文件拷貝至安裝目錄。code
6.執行start-all.sh,啓動hadoop集羣,訪問http://localhost:50070/dfshealth.html#tab-overview ,查看hadoop版本是否已更新,查看各節點狀態是否正常。xml