MapReduce執行任務時卡在mapreduce.Job: Running Job這一步該如何解決
問題描述:在centos7系統搭建的偽分散式Hadoop基礎上,用Sqoop把HDFS上的資料匯出到Mysql的時候,發現任務執行時卡死在如下圖所示的這一步:
卡了接近十分鐘意識到可能永遠也不會結束了....趕緊ctrl+c結束程序,找找原因。首先搜了下資料,發現大多數教程都說是記憶體不足引起的,可在執行這個命令之前只執行過一次wordcount例程,按道理不可能佔用過多記憶體。排除記憶體問題。
開啟hadoop web執行監控介面,在Application標籤頁找到正在執行的application,檢視logs,發現一直迴圈報錯:
“org.apache.hadoop.ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8030. ”
就是連不上ResourceManagerserver的意思,這個8030埠應該是沒有正常開啟。
接下來看看日誌裡有沒有詳細報錯資訊:http://localhost:8088/logs/
因為已經執行到MapReduce.Job才卡住,所以直接找reducemanager的日誌,開啟http://localhost:8088/logs/hadoop-root-resourcemanager-localhost.localdomain.log (localhost.localdomain是我的hostname)
(非常枯燥的工作,從幾百行密密麻麻的文字裡找“ERROR”)
終於找到了,提示“org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.lang.InterruptedException”
大概理解了一下意思,是Yarn的問題,任務超時之類的錯誤。
再看異常棧丟擲的下一條內容:Stopping IPC Server listener on 8031
想了很久沒想起來之前修改Hadoop配置檔案的時候有設定過8030、8031這兩個埠,但是它們看上去應該是Yarn的任務執行相關的埠。那就意味著要改yarn-site.xml。用這個思路再一搜,果然找到了解決方法:
在yarn-site.xml檔案加入以下內容:
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop-master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop-master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop-master:8031</value>
</property>
原貼見:https://stackoverflow.com/questions/29904083/hadoop-java-got-exception-java-net-connectexception
問題解決。終於可以正常使用sqoop了。