Il cluster My Spark ha 1 master e 3 lavoratori (su 4 macchine separate, ogni macchina con 1 core) e altre impostazioni sono come nell'immagine seguente, dove spark.cores.max è impostato su e spark.executor.cores anche (in pic-1)perché Spark non sta distribuendo lavori a tutti gli esecutori, ma a un solo executer?
Ma quando presento il mio lavoro a Spark cluster, dalla Spark web-UI posso vedere solo un esecutore viene utilizzato (secondo memoria utilizzata e blocchi RDD in pi c-2), ma non tutti gli esecutori. In questo caso la velocità di elaborazione è molto più lenta di quanto mi aspettassi.
Dato che ho impostato il numero massimo di core 3, non tutti gli executors dovrebbero essere abituati a questo lavoro?
Come configurare Spark per distribuire il lavoro corrente a tutti gli executors, invece di un solo executor che esegue il lavoro corrente?
Grazie mille.
------------------ pic-1:
--------------- --- pic-2:
per il tipo di ricevitori, non ne sono sicuro, basta usare quello predefinito dopo aver scaricato il pacchetto Spark 1.3. Dovrebbe essere Kafka. – keypoint
Sto trasmettendo da AWS Kinesis a Spark, suppongo che questo ricevitore corrisponda ai frammenti di Kinesis, dal momento che ho 2 frammenti per il mio stream Kinesis. – keypoint
Puoi pubblicare un'istantanea della pagina di streaming principale di Spark. docs "Quando si esegue un programma Spark Streaming localmente, non utilizzare" local "o" local [1] "come l'URL principale. Uno di questi significa che verrà utilizzato solo un thread per l'esecuzione locale delle attività. DStream basato su un ricevitore (ad esempio socket, Kafka, Flume, ecc.), Quindi il thread singolo verrà utilizzato per eseguire il ricevitore, senza thread per l'elaborazione dei dati ricevuti. Quindi, quando si esegue localmente, utilizzare sempre "local [n ] "Come l'URL principale dove n> numero di ricevitori da eseguire" Quanto sopra applicato anche per il cluster. –