2016-09-29 57 views
0

我想用一定數量的核心在紗線模式下運行spark-shell。Apache Spark:如何強制使用一定數量的內核?

我用的命令如下

spark-shell --num-executors 25 --executor-cores 4 --executor-memory 1G \ 
--driver-memory 1G --conf spark.yarn.executor.memoryOverhead=2048 --master yarn \ 
--conf spark.driver.maxResultSize=10G \ 
--conf spark.serializer=org.apache.spark.serializer.KyroSerializer \ 
-i input.scala 

input.scala看起來像這樣

import java.io.ByteArrayInputStream 

// Plaintext sum on 10M rows 
def aggrMapPlain(iter: Iterator[Long]): Iterator[Long] = { 
    var res = 0L 
while (iter.hasNext) { 
    val cur = iter.next 
    res = res + cur 
} 
List[Long](res).iterator 
} 

val pathin_plain = <some file> 

val rdd0 = sc.sequenceFile[Int, Long](pathin_plain) 
val plain_table = rdd0.map(x => x._2).cache 
plain_table.count 

0 to 200 foreach { i => 
    println("Plain - 10M rows - Run "+i+":") 
    plain_table.mapPartitions(aggrMapPlain).reduce((x,y)=>x+y) 
    } 

在執行此星火UI第一尖峯約40內核,然後穩定在26個核。

this建議我改變了我的yarn-site.xml

<property>                           
     <name>yarn.nodemanager.resource.cpu-vcores</name>                 
     <value>101</value> 
</property> 

<property>                           
    <name>yarn.scheduler.maximum-allocation-vcores</name>                
    <value>101</value>                         
</property> 

<property>                           
     <name>yarn.scheduler.maximum-allocation-mb</name>                 
     <value>102400</value>                        
</property> 

<property>                           
    <name>yarn.nodemanager.resource.memory-mb</name>                 
    <value>102400</value>                        
</property> 

以下,但我還是不能強迫火花用100個內核,我需要爲我做的標杆與早期測試。

我正在使用Apache Spark 1.6.1。 集羣上的每個節點(包括驅動程序)都有16個內核和112GB的內存。 它們位於Azure(hdinsight羣集)上。 2個驅動節點+7個工作節點。

回答

0

我不熟悉Azure的,但我想紗線紗,所以你應該確保你有

yarn.scheduler.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DominantResourceCalculator 
capacity-scheduler.xml

(見this類似的問題和答案)

+0

謝謝你,我已經作出修改,以我的'能力scheduler.xml'但仍然沒有改變。目前,爲了解決這個問題,我將'--num-executors'設置爲100,這讓我在Spark UI中有101個內核。 – Sood

+0

在做了一些修改並重寫了一些我的代碼之後,我設法解決了這個問題。我改變了很多東西,我不確定哪一個能夠工作,但這肯定有幫助。 – Sood

相關問題