1. 程式人生 > >MapReduce任務執行到running job卡住

MapReduce任務執行到running job卡住

(1) 環境:Centos6.4JDK1.7hadoop-2.5.0-cdh5.3.3

(2) 問題:之前使用Apachehadoop跑各種MR應用均沒出現問題,然而使用CDH版的hadoop執行到running job卻卡住了。

配置好偽分散式的hadoop叢集,啟動集群后,使用自帶的pi例項測試叢集是否配置成功,使用命令:

$bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.3.jar pi 1 1

可是任務執行到running job就卡住了

INFO mapreduce.Job: Running job: job_1403905542893_0004

ResourcesManager瀏覽器介面顯示UNASSIGNED

Tracking UI - UNASSIGNED
Apps Submitted - 1
Apps Pending - 1
Apps Running - 0

Jps輸出:

4764 Jps
2148 DataNode
3280 ResourceManager
2053 NameNode
3378 NodeManager
2318 SecondaryNameNode

(3) 解決方法:

從網上查了好多資料,主要有兩種方法:一是hosts配置了不相關的主機,修改/etc/hosts檔案,刪除不相關的主機;二是叢集的資源不足,無法分配給新任務的資源,需要調節

yarn-site.xml的排程器獲得資源的引數。

對於方法一,我的配置檔案只配置了本地主機,因此不是hosts檔案問題。對於方法二,以前使用Apachehadoop偽分散式叢集時,執行到map 0% reduce 0%卡住,調節下yarn-site.xml引數,可以完美運行了,原yarn-site.xml配置:

<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>2</value>
</property>

調節後的配置:

<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>3072</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>2</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>256</value>
</property>

可是這些配置同樣在CDHhadoop上卻出現在running job卡住的問題。

(4) 最終解決方案:

yarn-site.xml中關於資源調節的配置刪除即可。

yarn-site.xml配置:

<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2560</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>2</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>256</value>
</property>
</configuration>

修改後yarn-site.xml檔案:

<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>

重啟resourcemanagernodemanager守護程序,再次執行pi例項,會發現作業成功執行!