MapReduce作業狀態一直為ACCEPTED解決過程
今天在測試Hadoop文件壓縮功能時,在之前本地搭建的Hadoop集群上提交了一個MapReduce作業,但是提交後發現一直卡在那不動:
...... 18/07/20 17:21:50 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 18/07/20 17:21:51 INFO client.RMProxy: Connecting to ResourceManager at hadoop/192.168.56.101:8032 18/07/20 17:21:51 WARN mapreduce.JobResourceUploader: Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this. 18/07/20 17:21:51 INFO input.FileInputFormat: Total input paths to process : 1 18/07/20 17:21:51 INFO mapreduce.JobSubmitter: number of splits:1 18/07/20 17:21:52 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1532078102478_0004 18/07/20 17:21:52 INFO impl.YarnClientImpl: Submitted application application_1532078102478_0004 18/07/20 17:21:52 INFO mapreduce.Job: The url to track the job: http://hadoop:8088/proxy/application_1532078102478_0004/ 18/07/20 17:21:52 INFO mapreduce.Job: Running job: job_1532078102478_0004
於是開始進一步排查。
先打開了ui界面看了一下job的情況
YarnApplicationState: ACCEPTED: waiting for AM container to be allocated, launched and register with RM.
發現看到其一直處於ACCEPTED狀態。
為什麽會一直是這個狀態呢?資源沒分配導致作業跑不了?打算看一下RM和NM的日誌。
查看ResourceManager的日誌
...... 2018-07-20 17:08:34,370 INFO org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler: Acc epted application application_1532077648870_0001 from user: hadoop, in queue: default 2018-07-20 17:08:34,379 INFO org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppImpl: application_153207764887 0_0001 State change from SUBMITTED to ACCEPTED
沒有報異常,這裏也可以看到狀態由"SUBMITTED"變為"ACCEPTED"。
查看NodeManager的日誌
...... 2018-07-20 17:08:12,363 INFO org.apache.hadoop.yarn.server.nodemanager.security.NMContainerTokenSecretManager: Rolling m aster-key for container-tokens, got key with id -199996072 2018-07-20 17:08:12,365 INFO org.apache.hadoop.yarn.server.nodemanager.security.NMTokenSecretManagerInNM: Rolling master -key for container-tokens, got key with id 1483921230 2018-07-20 17:08:12,366 INFO org.apache.hadoop.yarn.server.nodemanager.NodeStatusUpdaterImpl: Registered with ResourceMa nager as hadoop:43628 with total resource of <memory:8192, vCores:8> 2018-07-20 17:08:12,366 INFO org.apache.hadoop.yarn.server.nodemanager.NodeStatusUpdaterImpl: Notifying ContainerManager to unblock new container-requests
通知ContainerManager打開container請求,關鍵是,作業沒跑起來,說明container也沒創建好。
看作業日誌
mr-jobhistory-daemon.sh start historyserver
開啟歷史作業日誌,然後再跑一次作業,在ui界面上看其日誌情況。
不過沒有顯示,這也很正常,因為其顯示的日誌是跑mr作業邏輯,也就是java程序代碼過程中的輸出日誌。
修改代碼
因為之前還沒有嘗試過在MR作業中加入對輸出文件壓縮的設置,所以把這一部分的代碼去掉,雖然感覺不太可能是這個問題,但還是嘗試一下。
最後發現結果還是一樣。
重啟集群
重啟了一下集群,發現作業提交後還是一直處於ACCEPTED狀態。
集群配置問題
之前按照這個配置搭建的集群用來提交作業都是沒有問題的,問題應該不在配置上。
不過還是檢查了一下yarn的配置,因為作業一直沒跑起來,擔心會是資源的問題。
對yarn-site.xml進行了檢查,
重裝集群or format namenode
重裝集群的話顯然是非常浪費時間的了,因為用的也不是CDH的方式安裝,是自己手工安裝的。
但在考慮重裝集群,考慮了一下重新格式namenode生成元數據信息。
沒想到就可以了。
困惑
雖然問題最後是解決了,但其實並不算是真正的解決,這種解決有點類似於,電腦系統出現問題了,但不知道什麽問題,重裝系統就好了的感覺!
在生產環境中不可能這樣,希望以後有機會問題復現時再好好分析一下(永遠不會遇到那是最好的啦),因為今天在折騰時其實也是有些趕時間的。
當然,如果有朋友也出現過這樣的情況,並且知道具體原因的,指點一下,不勝感激!
MapReduce作業狀態一直為ACCEPTED解決過程