2016-05-13 62 views
3

我一直在8節點集羣上部署SparkPi示例。即使羣集利用率低(沒有其他作業正在運行),與該示例相關的任務似乎也沒有部署到羣集中的所有節點。強制YARN在所有從屬設備上部署Spark任務

這裏是如何,我開始SparkPi例如:

spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --driver-memory 1g --executor-memory 1g --executor-cores 1 --num-executors 7 $SPARK_HOME/lib/spark-examples-1.6.1-hadoop2.6.0.jar 100000 

然而,當我看到正在利用在哪些節點,這是我所看到的: hadoop cluster

我有一種感覺,這是因爲我在資源管理器中使用了CapacityScheduler。這裏是我的yarn-site.xml文件:

<configuration> 
    <property> 
     <name>yarn.nodemanager.aux-services</name> 
     <value>mapreduce_shuffle</value> 
    </property> 
    <property> 
     <name>yarn.resourcemanager.hostname</name> 
     <value>master.cluster</value> 
    </property> 
    <property> 
     <name>yarn.resourcemanager.address</name> 
     <value>master.cluster:8032</value> 
    </property> 
    <property> 
     <name>yarn.resourcemanager.scheduler.address</name> 
     <value>master.cluster:8030</value> 
    </property> 
    <property> 
     <name>yarn.resourcemanager.webapp.address</name> 
     <value>0.0.0.0:8088</value> 
    </property> 
    <property> 
     <name>yarn.resourcemanager.resource-tracker.address</name> 
     <value>master.cluster:8031</value> 
    </property> 
    <property> 
     <name>yarn.resourcemanager.admin.address</name> 
     <value>master.cluster:8033</value> 
    </property> 
    <property> 
     <name>yarn.resourcemanager.admin.address</name> 
     <value>master.cluster:8033</value> 
    </property> 

    <property> 
     <name>yarn.application.classpath</name> 
     <value>/usr/local/hadoop/etc/hadoop, /usr/local/hadoop/share/hadoop/common/*, /usr/local/hadoop/share/hadoop/common/lib/*, /usr/local/hadoop/share/hadoop/hdfs/*, /usr/local/hadoop/share/hadoop/hdfs/lib/*, /usr/local/hadoop/share/hadoop/mapreduce/*, /usr/local/hadoop/share/hadoop/mapreduce/lib/*, /usr/local/hadoop/share/hadoop/yarn/*, /usr/local/hadoop/share/hadoop/yarn/lib/*</value> 
    </property> 

    <property> 
    <description> 
     Number of seconds after an application finishes before the nodemanager's 
     DeletionService will delete the application's localized file directory 
     and log directory. 

     To diagnose Yarn application problems, set this property's value large 
     enough (for example, to 600 = 10 minutes) to permit examination of these 
     directories. After changing the property's value, you must restart the 
     nodemanager in order for it to have an effect. 

     The roots of Yarn applications' work directories is configurable with 
     the yarn.nodemanager.local-dirs property (see below), and the roots 
     of the Yarn applications' log directories is configurable with the 
     yarn.nodemanager.log-dirs property (see also below). 
    </description> 
    <name>yarn.nodemanager.delete.debug-delay-sec</name> 
    <value>600</value> 
    </property> 

</configuration> 

我如何可以調整YARN,使其部署跨所有節點的任務?

回答

0

答案是相當簡單的,在$HADOOP_PREFIX/etc/hadoop/capacity-scheduler.xml您可以更改默認0.11

<configuration> 

    <property> 
    <name>yarn.scheduler.capacity.maximum-am-resource-percent</name> 
    <value>1</value> 
    <description> 
     Maximum percent of resources in the cluster which can be used to run 
     application masters i.e. controls number of concurrent running 
     applications. 
    </description> 
    </property> 

</configuration> 

儘管羣集將只允許一個主機應用程序在同一時間(我的偏好)運行時,它會利用整個集羣。

0
  1. 應用程序管理器不應占用太多資源。聲明分配太多100%真的很多。我不知道你在這裏完成了什麼好事(懷疑沒有)。
  2. 應該寧願在資源可用的情況下儘可能多地在同一節點上運行任務。這將避免在集羣內部網絡上序列化和發送數據的開銷。您還應該優先在同一個執行程序實例中運行儘可能多的任務以允許共享內存。
  3. 在默認設置下使用容量調度程序時,它僅根據內存佔用量計算資源,並忽略CPU佔用量。您將內存佔用量聲明爲驅動程序,應用程序管理器(am)和執行程序的Spark Configuration和Parameters的一部分。有關更多詳細信息,請參閱火花手冊,特別是the part about running Spark on YarnSpark Configuration。具體火花配置爲:
    1. spark.yarn.am.memory(配置)
    2. spark.driver.memory(配置)
    3. spark.executor.memory(配置)

請注意,核心數量的設置也很重要,但更多地使用火花本身而不是紗線(除非您更改其計算資源利用率的方式)。

如果您可以在單個節點上運行需要32個CPU內核的單個作業,那麼首先恭喜您的系統運行良好,但這可能是您希望運行它的方式!

+0

我實際上使用神經網絡訓練集羣,它不是一個面向生產的系統。在這種情況下,我推動羣集越多越好。這是否有助於上下文?否則,完全同意。 – crockpotveggies

+0

在一個執行者下儘可能多地完成任務。不知道神經網絡的底層軟件架構,但我相信它會幫助你提高性能。如果這是一項傳統的火花招聘工作,我會告訴你,你的排序和洗牌會變得非常快。 – YoYo