1. 程式人生 > >MapReduce執行任務時卡在mapreduce.Job: Running Job這一步該如何解決

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了。