2017-03-02 5 views
0

Ich habe eine sehr einfache Funken Job, der Millionen Film Bewertungen liest und die Bewertungen und die Anzahl der Male, die es bewertet. Der Job wird auf dem Funke-Cluster ausgeführt und läuft gut.Spark Anzahl der Kerne verwendet

Haben Sie einige Fragen zu dem Parameter, den ich verwende, um den Job auszuführen?

  1. Ich habe 2 Knoten läuft. Node-1 = 24 GB RAM & 8 VCPUs. Node-2 = 8 GB RAM & 2 VCPUs.

so total habe ich 32GB RAM und 10 VCPUs.

Befehl spark-submit.

spark-submit --master spark://hadoop-master:7077 --executor-memory 4g --num-executors 4 --executor-cores 4 /home/hduser/ratings-counter.py 

Wenn ich den obigen Befehl ausführen, die Funkenkerne verwendet, ist es von Knoten 1 oder Knoten-2 oder tut es ordnet zufällig?

2.Wenn ich nicht die Anzahl der Executoren verwende, was ist der Standard-Executor, den Spark verwendet?

from pyspark import SparkConf, SparkContext 
import collections 


conf = SparkConf().setMaster("hadoop-master").setAppName("RatingsHistogram") 
sc = SparkContext(conf = conf) 

lines = sc.textFile("hdfs://hadoop-master:8020/user/hduser/gutenberg/ml-10M100K/ratings.dat") 
ratings = lines.map(lambda x: x.split('::')[2]) 
result = ratings.countByValue() 

sortedResults = collections.OrderedDict(sorted(result.items())) 
for key, value in sortedResults.items(): 
    print("%s %i" % (key, value)) 

Antwort

0

ist es vom Knoten-1 oder 2-Knoten oder tut es ordnet zufällig?

Es hängt wirklich davon ab, wie viele Arbeiter Sie initialisiert haben. Da Sie in Ihrem spark-submit-Cmd insgesamt 4 Executoren angegeben haben, wird jeder Executor 4 GB Speicher und 4 Kerne aus dem gesamten Speicher und den Kernen des Spark Worker zuweisen. Eine einfache Möglichkeit zu sehen, in welchem ​​Knoten jeder Executor gestartet wurde, besteht darin, die Master-Benutzeroberfläche von Spark zu überprüfen (der Standardport ist 8080) und von dort aus die laufende App auszuwählen. Dann können Sie die Registerkarte "Executors" in der Benutzeroberfläche der Anwendung überprüfen.

Wenn ich nicht Anzahl der Executoren verwende, was ist der Standard-Executor Funke verwendet?

Normalerweise initialisiert es einen Executor pro Worker-Instanz und verwendet alle Worker-Ressourcen.

Verwandte Themen