Ich versuche ein (Wordcount) Programm zu schreiben, um einen Anwendungsfall zu simulieren, in dem der Netzwerkverkehr wegen des Shuffle-Prozesses von Spark sehr hoch wäre. Ich habe einen Apache-Funke-Cluster mit 3 Knoten (2 Kerne, jeweils 8GB RAM), der mit 1 Master und 2 Arbeitern konfiguriert ist. Ich habe eine 5-GB-Datei für Wordcount bearbeitet und konnte einen Netzwerkverkehr zwischen 2 Arbeiterknoten sehen, der in 10-15 Minuten bis zu 1 GB erhöht. Ich bin auf der Suche nach einem Weg, wo ich den Verkehr zwischen den Knoten bis zu 1GB innerhalb von 30s-60s erhöhen könnte. Die Ineffizienz des Programms oder der Best Practices spielt in meinem aktuellen Anwendungsfall keine Rolle, da ich gerade versuche, den Traffic zu simulieren.Erhöhen Sie den Netzwerkverkehr zwischen Arbeiterknoten durch den Shuffle-Prozess von Apache Spark
Dies ist das Programm i
indem Operationen erzeugt werden, die keine Daten kombinieren sehr gut auf jedem Knoten geschrieben habenval sc = new SparkContext(new SparkConf().setAppName("LetterCount-GroupBy-Map"))
val x = sc.textFile(args(0)).flatMap(t => t.split(" "))
val y = x.map(w => (w.charAt(0),w))
val z = y.groupByKey().mapValues(n => n.size)
z.collect().foreach(println)