Suchen

Definition Was ist Dask?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Dask ist eine Open-Source-basierte Library, mit der sich Rechenaufgaben auf mehrere Rechner verteilen und parallel ausführen lassen. Die Bibliothek ist in Python geschrieben und beispielsweise für das High Performance Computing einsetzbar. Dask wird in der Wissenschaft und im kommerziellen Bereich unter anderem für das Maschinelle Lernen genutzt.

Firmen zum Thema

(Bild: © aga7ta - stock.adobe.com)

Bei Dask handelt es sich um eine Open-Source-basierte Library, die ursprünglich von Matthew Rocklin entwickelt und im Jahr 2018 veröffentlicht wurde. Die Software steht unter BSD-Lizenz und ist in der Programmiersprache Python geschrieben. Dask lässt sich für paralleles Computing einsetzen. Rechenaufgaben werden mithilfe von Dask auf mehrere Rechner verteilt, von diesen parallel bearbeitet und die Ergebnisse zusammengeführt.

Hinsichtlich der Funktionalität ist Dask in einigen Bereichen vergleichbar mit Apache Spark. Im Gegensatz zu Spark ist Dask allerdings tief in die Python-Welt und Programmbibliotheken wie NumPy und Pandas integriert. Dask wird in der Wissenschaft und der Forschung aber auch für kommerzielle Anwendungen eingesetzt. Durch die Parallelisierung von Aufgaben lassen sich beispielsweise Abläufe im Maschinellen Lernen (ML) beschleunigen. Das aktuelle Release von Dask ist 2.19.0 (Stand Juni 2020). Dask ist mit den Betriebssystemen Linux, Microsoft, Windows und macOS nutzbar.

Architektur und Funktionsweise von Dask

Dask wendet Prinzipien wie Delayed Execution und Map Reduce an. Delayed Execution basiert auf der Idee, dass Code nicht direkt mit der Übergabe an das System ausgeführt wird. Zunächst werden Requests gesammelt, um sie anschließend optimiert auf den verteilten Rechnern auszuführen.

Map Reduce erzeugt aus der übergeordneten Aufgabenstellung Teilaufgaben, die so bearbeitet werden können, dass sie sich anschließend wieder zu einem Ergebnis zusammenführen lassen. Um Delayed Execution und Map Reduce muss sich der Anwender bei Dask nicht selbst kümmern, diese Aufgaben werden von der Programmbibliothek im Hintergrund erledigt.

Dask gliedert sich in zwei Hauptkomponenten: einen Task-Scheduler zur Verteilung und Steuerung von Workloads und einer verteilten Array-Datenstruktur mit APIs (Application Programming Interfaces).

Der Task-Scheduler wird zentral gemanagt. Er arbeitet asynchron und ist Event-gesteuert. Der Scheduler ist die zentrale Instanz, die für die Verteilung der Arbeit und das Zusammenführen der Ergebnisse verantwortlich ist. Er koordiniert und steuert sowohl die verschiedenen auf den beteiligten Rechnern verteilten Worker-Prozesse als auch die Anfragen der Clients. Hat der Scheduler mehr Workloads zu vergeben als Worker verfügbar sind, kann Dask die Workloads selbst priorisieren oder die vom Anwender gesetzten Prioritäten werden übernommen. Ergebnisse der Workloads werden im Speicher der Worker vorgehalten. Der Scheduler entscheidet, wann der Speicher freigegeben wird. In der Regel wird der Speicher sofort nach Übermittlung eines Ergebnisse wieder freigegeben, um Ressourcen für neue Workloads bereitzustellen. Werden die Ergebnisse für weitere Berechnungen benötigt, können sie auch länger im Speicher verbleiben.

Zur Kommunikation zwischen Clients, Worker und Scheduler kommt das Transmission Control Protocol (TCP) zum Einsatz. Clients verbinden sich über eine Session mit dem Scheduler und stellen ihre Arbeitsaufträge. Es werden Python-Objekte zwischen den beteiligten Komponenten ausgetauscht.

Abgrenzung zu Apache Spark

Dask und Apache Spark bieten beide ähnliche Funktionen. Sie erlauben die Parallelisierung von Workloads, stellen APIs, Algorithmen und Datenstrukturen zur Verfügung und unterstützen die ETL-Prozesse (Extract, Transform, Load). Dennoch existieren deutliche Unterscheidungsmerkmale zwischen Dask und Apache Spark. Dask ist mehr auf die Python-native Nutzung ausgerichtet während sich Apache Spark mehr an Scala und der Java Virtual Machine (JVM) orientiert. Dementsprechend integriert sich Dask in Umgebungen mit NumPy- und Pandas-Bibliotheken. Ein weiterer Unterschied ist, dass sich Apache Spark stark auf den ETL-Prozess, SQL-Abfragen und das Maschinelle Lernen fokussiert. Dask verfolgt einen mehr generalistischen Ansatz.

Anwendungsbereiche von Dask

Die Library Dask ist in vielen verschiedenen Bereichen einsetzbar. Typische Anwendungen sind:

  • Simulationen in der Wissenschaft und Forschung
  • High Performance Computing
  • Maschinelles Lernen und Künstliche Intelligenz
  • Modellberechnungen
  • Business-Intelligence-Analysen
  • ETL-Prozesse

Vorteile von Dask

Der Einsatz von Dask für die Parallelisierung von Computing-Aufgaben bietet zahlreiche Vorteile. Die Library ist nativ mit Python und anderen Libraries wie NumPy und Pandas verknüpft. Dask ist sowohl auf Einzelrechnern als auch in großen Cluster-Verbünden nutzbar. Die Bibliothek skaliert sehr gut und stellt vertraute APIs zur Verfügung. Über den Task Scheduler lassen sich die Workloads flexibel steuern und verteilen. Weitere Vorteile von Dask sind:

  • geringer Overhead
  • niedrige Latenz
  • interaktiv und responsiv
  • umfangreiche Diagnosemöglichkeiten
  • große Support-Community
  • Dask ist steht unter Open-Source-Lizenz und ist frei verfügbar
  • Unterstützung des maschinellen Lernens mit großen Datenmengen und großen Modellen

(ID:46672428)

Über den Autor