1. 程式人生 > >MapReduce作業狀態一直為ACCEPTED解決過程

MapReduce作業狀態一直為ACCEPTED解決過程

com updater token 作業 con ast mon library exe

[toc]


今天在測試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解決過程