MapReduce任務執行到running job卡住
(1) 環境:Centos6.4、JDK1.7、hadoop-2.5.0-cdh5.3.3
(2) 問題:之前使用Apache的hadoop跑各種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檔案,刪除不相關的主機;二是叢集的資源不足,無法分配給新任務的資源,需要調節
對於方法一,我的配置檔案只配置了本地主機,因此不是hosts檔案問題。對於方法二,以前使用Apache的hadoop偽分散式叢集時,執行到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>
可是這些配置同樣在CDH的hadoop上卻出現在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>
重啟resourcemanager和nodemanager守護程序,再次執行pi例項,會發現作業成功執行!