Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, wie Sie die Konfiguration Ihres Apache Spark-Clusters für eine optimale Leistung in Azure HDInsight optimieren.
Übersicht
Je nach Spark-Clusterworkload können Sie feststellen, dass eine nicht standardmäßige Spark-Konfiguration zu einer optimierten Spark-Auftragsausführung führen würde. Führen Sie Benchmarktests mit Beispielworkloads durch, um alle nicht standardmäßigen Clusterkonfigurationen zu überprüfen.
Im Folgenden finden Sie einige allgemeine Parameter, die Sie anpassen können:
| Parameter | Beschreibung |
|---|---|
| --num-executors | Legt die entsprechende Anzahl von Ausführenden fest. |
| --executor-cores | Legt die Anzahl der Kerne für jeden Executor fest. Normalerweise sollten Sie über mittelständische Executoren verfügen, da andere Prozesse einen Teil des verfügbaren Arbeitsspeichers verbrauchen. |
| --executor-memory | Legt die Speichergröße für jeden Executor fest, der die Heapgröße in YARN steuert. Lassen Sie etwas Arbeitsspeicher für den Ausführungsaufwand übrig. |
Wählen Sie die richtige Executor-Größe aus.
Berücksichtigen Sie bei der Entscheidung der Ausführungskonfiguration den Java Garbage Collection(GC)-Aufwand.
Faktoren zur Reduzierung der Ausführungsgröße:
- Verringern Sie die Heap-Größe unter 32 GB, um den GC-Overhead unter 10% < zu halten.
- Verringern Sie die Anzahl der Kerne, um den GC-Overhead < 10%zu halten.
Faktoren zur Erhöhung der Executor-Größe:
- Verringern Sie den Kommunikationsaufwand zwischen Ausführungsinstanzen.
- Verringern Sie die Anzahl der offenen Verbindungen zwischen Executoren (N2) auf größeren Clustern (>100 Executoren).
- Erhöhen Sie die Heap-Größe, um speicherintensive Aufgaben zu berücksichtigen.
- Optional: Verringern Sie den Speicheraufwand pro Ausführung.
- Optional: Erhöhen Sie die Nutzung und Parallelität durch Überbelegung der CPU.
Im Allgemeinen gilt folgendes, wenn Sie die Executorgröße auswählen:
- Beginnen Sie mit 30 GB pro Executor, und verteilen Sie verfügbare Computerkerne.
- Erhöhen Sie die Anzahl der Executorkerne für größere Cluster (> 100 Executoren).
- Ändern Sie die Größe basierend auf Testläufen und auf den vorherigen Faktoren, z. B. GC-Overhead.
Berücksichtigen Sie beim Ausführen gleichzeitiger Abfragen Folgendes:
- Beginnen Sie mit 30 GB pro Executor und allen Computerkernen.
- Erstellen Sie mehrere parallele Spark-Anwendungen, indem Sie die CPU überschreiben (ca. 30% Latenzverbesserung).
- Verteilen sie Abfragen über parallele Anwendungen hinweg.
- Ändern Sie die Größe basierend auf Testläufen und auf den vorherigen Faktoren, z. B. GC-Overhead.
Weitere Informationen zur Verwendung von Ambari zum Konfigurieren von Executoren finden Sie unter Apache Spark-Einstellungen – Spark executors.
Überwachen Sie die Abfrageleistung auf Ausreißer oder andere Leistungsprobleme über die Zeitlinienansicht. Auch SQL Graph, Auftragsstatistiken usw. Informationen zum Debuggen von Spark-Aufträgen mit YARN und dem Spark History-Server finden Sie unter Debug Apache Spark jobs running on Azure HDInsight. Tipps zur Verwendung des YARN-Zeitachsenservers finden Sie unter Access Apache Hadoop YARN-Anwendungsprotokolle.
Aufgaben sind langsamer in einigen Ausführungsumgebungen oder Knoten
Manchmal sind ein oder mehrere der Ausführenden langsamer als die anderen, und Aufgaben dauern deutlich länger. Diese Langsamkeit geschieht häufig auf größeren Clustern (> 30 Knoten). In diesem Fall teilen Sie die Arbeit in eine größere Anzahl von Vorgängen auf, damit der Planer langsame Vorgänge ausgleichen kann. Verwenden Sie beispielsweise mindestens doppelt so viele Aufgaben wie die Anzahl der Ausführungskerne in der Anwendung. Sie können auch spekulative Ausführung von Aufgaben mit conf: spark.speculation = trueaktivieren.