
Wir haben einen Hadoop-Cluster und sammeln Metriken, um das langsame Verhalten von Spark-Anwendungen zu untersuchen.
nach langer Untersuchung unseres Hadoop-Clusters
Wir haben anhand der Prometheus-Metriken festgestellt, dass node_disk_io_now höhere Werte aufweist als normal und dies für alle HDFS-Festplatten auf Datenknotenmaschinen relevant ist.
Die node_disk_io_now-Definition lautet:
node_disk_io_now (Feld 9) Das einzige Feld, das auf Null zurückgesetzt werden sollte. Wird erhöht, wenn Anfragen an die entsprechende Struktur request_queue übergeben werden, und verringert, wenn sie abgeschlossen sind.
Wir möchten wissen, ob die Optimierung der Kernelparameter positive Auswirkungen auf die Festplattenleistung haben kann.
gemäß node_disk_io_now Definition scheinen zu viele Aufgaben in der Warteschlange zu warten.
und vielleicht können einige Kernel-Parameter helfen, das obige Verhalten zu verbessern, so dass Aufgaben in der Warteschlange nicht lange dort verbleiben
Antwort1
In Ihrer Frage kann ich nicht sehen, welchen Festplattentyp Sie verwenden, entweder SSD/SAS/NLSAS oder Hybrid. Dies ist der wichtigste Teil Ihrer Auswahl.
Um Ihre Frage zu den Kernel-Parametern zu beantworten: Ja, es gibt einige Parameter, mit denen Sie experimentieren können, um die beste Anpassung an Ihren Cluster zu finden.
Der wichtige Teil der IO-Optimierung ist der IO-Scheduler. In aktuellen Linux-Kerneln gibt es drei IO-Scheduler.
NOOP (FIFO):Wird für Speichertypen vom Typ SAN und SSD verwendet, bei denen das Speichergerät intelligent genug ist, um seine eigene Optimierung vorzunehmen.
FRIST:Im Allgemeinen gut für Datei- und Datenbankserver. Sie müssen überlegen, ob Sie den Durchsatz oder die Latenz verbessern. Oder Sie können die Leseanforderungen erhöhen oder umgekehrt.
CFQ:Nicht für Server empfohlen, gut für die Desktop-Nutzung.
Neben IO-Schedulern gibt es noch einige andere Parameter für den virtuellen Speicher, die ich im Folgenden nur erwähne, aber Sie müssen sich selbst genauer darüber informieren, um die Leistung zu steigern.
vm.swappiness
vm.dirty_ratio
vm.dirty_background_ratio
vm.dirty_expire_centisecs
and....
Antwort2
Es gibt (soweit ich weiß) keine Kernel-Optionen, die das verbessern könnten. Sie sollten jedoch überprüfen, ob alle RAID-Controller Ihrer anderen Knoten dieselben Werte (z. B. Blockschreibgröße) wie dieser Knoten haben, oder eigentlich umgekehrt.
Stellen Sie außerdem sicher, dass alle Ihre Mounts in /etc/fstab dieselben Optionen haben.
Abgesehen davon müssen Sie die Spezifikationen Ihrer Festplatten überprüfen und sicherstellen, dass sie identisch sind.
Sie können auch Ihre RAM-Größe überprüfen, da einige Dateisysteme viel Cache im RAM haben. Bei HDFS bin ich mir nicht sicher, aber ZFS beispielsweise verlässt sich stark darauf.