Azure Databricks

Azure Databricks

Einführung in Azure Databricks

Azure Databricks ist eine leistungsstarke Cloud-basierte Datenanalyse- und KI-Plattform, die auf Apache Spark basiert und in Zusammenarbeit von Microsoft und Databricks entwickelt wurde. Die Plattform richtet sich an Unternehmen, die große Datenmengen effizient verarbeiten und maschinelles Lernen einsetzen wollen. Als Teil der Azure Cloud ist Databricks nahtlos in Dienste wie Azure Data Lake Storage, Azure Synapse Analytics und Power BI integriert. Vor allem der Data Engineering- bzw. der Data Science-Part sind sehr gut in Databricks implementiert.

Databricks Home Bildschirm
Databricks Home Bildschirm

Kostenstruktur von Azure Databricks

Wie bei jedem Tool, spielen die Kosten eine große Rolle bei der Technologieauswahl. Die Kosten von Azure Databricks setzen sich aus mehreren Faktoren zusammen, wobei die wichtigsten Komponenten die Virtuellen Maschinen (VMs), die Databricks Units (DBUs) und der Cluster-Typ sind. Auch die Wahl des Arbeitsbereichs (Standard, Premium, Enterprise) beeinflusst die Gesamtkosten. Schauen wir uns die einzelnen Posten etwas genauer an.

Kostenübersicht Databricks Workspace
Über einen Zeitraum von 3 Monaten mit sehr sporadischer Nutzung

Virtuelle Maschinen (VMs)

Virtuelle Maschinen (VMs) stellen die Rechenressourcen bereit, die für das Ausführen von Databricks-Clustern erforderlich sind. Bei der Erstellung eines Clusters wird eine oder mehrere VMs für die Ausführung des Clusters benötigt.

  • Preis pro VM-Stunde: Der Preis variiert je nach VM-Typ und Region, in der der Cluster ausgeführt ist. Azure bietet eine Vielzahl von VM-Typen, darunter Standard DS3 v2, Standard D4s v3, Standard F2s, etc. Der Preis für eine VM hängt von ihrer Größe und ihrer Region ab.
  • Abrechnungseinheit der VM-Stunden: Ein VM-Cluster rechnet auf Stundenbasis ab, wobei der Preis je nach Größe und Art der VM variiert.
  • Regionale Unterschiede: Die Kosten können in verschiedenen Azure-Regionen unterschiedlich sein. Einige Regionen bieten günstigere Preise, während andere aufgrund von Nachfrage oder zusätzlichen Dienstleistungen teurer sein können.

Databricks Units (DBUs)

Eine Databricks Unit (DBU) ist eine Abrechnungseinheit für Rechenressourcen, die in Azure Databricks verwendet werden. DBUs messen die Leistung von Databricks-Clustern in Bezug auf den Verbrauch von Rechenressourcen.
DBUs werden auf Stundenbasis berechnet, basierend auf der Art des Clusters und dessen Nutzung.

Standard-Cluster: Diese Cluster sind für allgemeine Anwendungen und Datenverarbeitungsaufgaben gedacht. Der Preis liegt in der Regel bei etwa 0,20 USD pro DBU pro Stunde.

Premium-Cluster: Diese Cluster bieten erweiterte Funktionen wie bessere Sicherheitskontrollen und höherwertige Rechenressourcen. Der Preis für Premium-Cluster liegt normalerweise bei 0,40 USD pro DBU pro Stunde.

DBUs werden auf der Grundlage der Größe und Art des Clusters berechnet. Ein größeres Cluster oder ein Cluster mit mehr Rechenressourcen verbraucht mehr DBUs.

Cluster-Typen und Größe

Die Art und Größe des Clusters, dass du verwendest, beeinflusst direkt die Kosten. Azure Databricks bietet verschiedene Cluster-Typen:

Standard-Cluster: Diese Cluster bieten eine gute Leistung zu einem günstigeren Preis und eignen sich gut für allgemeine Workloads.

Premium-Cluster: Diese Cluster bieten zusätzliche Sicherheitsfunktionen, wie z. B. das Verschlüsseln von Daten im Speicher und erweiterte Netzwerksicherheitsfunktionen.

High-Concurrency Clusters: Diese Cluster sind für den gleichzeitigen Zugriff durch mehrere Benutzer oder Prozesse optimiert. Sie werden häufig in produktiven Umgebungen eingesetzt, wenn mehrere Benutzer gleichzeitig auf dieselben Daten zugreifen müssen.

Menü zur Cluster Erstellung in Databricks

Workspaces

Azure Databricks bietet verschiedene Arbeitsbereichsoptionen, welche unterschiedliche Preise und Funktionen mit sich bringen.

Standard-Arbeitsbereich: Dies ist der Basistarif und ist für viele Benutzer ausreichend. Die Kosten in einem Standard-Arbeitsbereich sind die niedrigsten.

Premium-Arbeitsbereich: Premium-Arbeitsbereiche bieten erweiterte Funktionen wie bessere Sicherheitskontrollen, API-Zugriff und mehr.

Enterprise-Arbeitsbereich: Dieser Bereich richtet sich an Unternehmen, die große und komplexe Datenumgebungen verwalten und skalierbare Datenlösungen benötigen. Der Enterprise-Arbeitsbereich bietet die vollständige Palette von Funktionen und Sicherheitsoptionen, ist jedoch auch teurer.

Automatisierte Jobs und Workflows

Azure Databricks ermöglicht es dir, automatisierte Jobs für Datenverarbeitungsaufgaben zu erstellen. Man kann festlegen, wie oft der Job ausführt, welche Ressourcen man dafür benötigt.

Jobs, die regelmäßig ausgeführt werden (z. B. täglich oder wöchentlich), verursachen zusätzliche Kosten, da sie Cluster und DBUs verbrauchen. Diese Kosten sind jedoch abhängig von der Häufigkeit der Ausführung und der Größe der genutzten Ressourcen.

Speicher

Azure Databricks verwendet standardmäßig das Databricks File System (DBFS), ein verteiltes Dateisystem. Dieses nutzt man für die Speicherung von Daten und Dateien in Databricks. Daten, die in DBFS gespeichert werden, werden im Azure Blob Storage oder Azure Data Lake Storage abgelegt. Die Kosten für diese Speicherlösungen hängen vom verwendeten Speichertyp und der Speicherregion ab.

Sowohl der Azure Blob Storage als auch der Azure Data Lake Storage bieten günstige Optionen für die Speicherung von Daten, wobei die Kosten je nach Speichermenge und Zugriffsfrequenz variieren. Dieser Punkt sollte nicht vernachlässigt werden. Bei einer hohen Anzahl von Datenanforderungen aus dem Speicher (z. B. beim Trainieren von Modellen) entstehen höhere Kosten. Grund dafür ist, in welchem Segment die Daten in der Cloud gespeichert werden (Hot, Cold, Archive).

Netzwerkkosten

Wenn man Azure Databricks mit anderen Azure-Diensten wie Azure SQL Database, Azure Data Lake Storage oder Azure Synapse Analytics integriert, können Netzwerkkosten entstehen, die auf den Datentransfer und die Datenübertragung zwischen den Diensten zurückzuführen sind. So ist ein Thema dabei die Datenübertragungsgebühren. Es fallen Kosten für den Datentransfer zwischen verschiedenen Azure-Diensten oder über das Internet an. Diese Gebühren sind abhängig von der Menge an übertragenen Daten und der Region, in der die Daten verarbeitet werden.

Überwachung und Logging

Das Überwachen und Protokollieren von Aktivitäten in Databricks kann zusätzliche Kosten verursachen, insbesondere wenn umfangreiche Logs gespeichert oder wenn externe Überwachungsdienste (z. B. Azure Monitor) verwendet werden.

Automatisiertes Machine Learning

Azure Databricks bietet auch AutoML-Funktionen für die Automatisierung des Trainings von Machine-Learning-Modellen (mehr dazu später im Artikel). Die Nutzung dieser Funktionen kann zusätzliche Rechenressourcen (z. B. Cluster) beanspruchen, was die Kosten erhöht.

Menü vom AutoML in Databricks
Beispiel für ein Klassifizierungsproblem

Es gibt einige Kniffe, mit denen man Kosten sparen kann. Ein Beispiel dazu:

Wenn es ein Data-Team gibt, was in einem gemeinsamen Databricks Workspace arbeitet, können mehrere Personen ein und dasselbe Compute-Cluster nutzen. Somit kann man mit einer geschickten Cluster-Allokation, die Kosten an der Stelle reduzieren.

Hauptmerkmale von Azure Databricks

Azure Databricks bietet eine Vielzahl leistungsstarker Funktionen für die Verarbeitung großer Datenmengen und die Entwicklung von Machine-Learning-Modellen.

Im folgendem gehen wir auf die Hauptmerkmale von Databricks ein. Hier geht es vor allem um:

  • Machine Learning
  • Datenverwaltung
  • Unity Catalog Metastore
  • Databricks Genie
  • Zugriffssteuerung

Ein Punkt, der zwar schnell abgehakt werden kann, jedoch eine Erwähnung verdient, ist die kollaborative Notebookumgebung. Sie erlaubt die direkte Ausführung von Code in Python, Scala, R und SQL. Im Hintergrund liegt eine auf Apache Spark basierende Engine, die eine verteilte Verarbeitung großer Datenmengen ermöglicht.

Machine Learning und Modelbereitstellung

Modellentwicklung

In Databricks gibt es zwei Möglichkeiten, ein Modell zu entwickeln. Die manuelle und die automatische. Bei der manuellen Entwicklung geht es darum, ein Machine-Learning-Modell mit Code zu trainieren. Welche Programmiersprache man dafür nutzt, ist de Engine egal. Dabei bleiben alle Komponenten eines ML-Laufs an einem selbst hängen. Das bedeutet: Standardisierung/Normalisierung, Skalierung, Kodierung, Hyperparameter Tuning etc. Ohne fundierte Kenntnisse auf diesem Gebiet ist es sehr schwierig, diesen Prozess manuell durchzuführen.

Die automatische Variante hingegen, das Automated Machine Learning (AutoML), ist ein Prozess, der die Modellentwicklung erheblich vereinfacht. Wie der Name schon sagt, wird einem hier viel Arbeit abgenommen. Alle manuellen Schritte werden beim AutoML durch automatische Schritte ersetzt. Diese Funktion ist ähnlich wie AutoML im Azure Machine Learning Studio. Wichtig zu erwähnen ist, dass der wichtigste Schritt, um ein gutes Modell zu erhalten, nicht von AutoML übernommen wird. Nämlich Daten von extrem hoher Qualität zu haben. Der Data Engineering Prozess davor muss also stattfinden, sonst gibt es im schlimmsten Fall Verzerrungen in den Ergebnissen, die das Modell am Ende ausspuckt.

Modellbereitstellung

Nach dem Training können Modelle über REST-APIs als Endpunkte zur Verfügung gestellt werden. (Wie oben bereits erwähnt, entstehen für ein bereitgestelltes Modell Kosten). Das Bereitstellen ermöglicht eine einfache Integration von Maschine-Learning-basierten Vorhersagen in externe Anwendungen und Echtzeitsysteme. Der Zugriff auf die Modelle erfolgt über normale Requests. Man benötigt lediglich den Access Token, welchen man in Databricks als Workspace Admin konfigurieren kann.

Datenverwaltung in Azure Databricks

Das Databricks File System (DBFS) ist ein zentrales Speichersystem innerhalb von Azure Databricks, das speziell für den Umgang mit großen Datenmengen und die nahtlose Integration mit Apache Spark entwickelt wurde. DBFS dient als verteiltes Dateisystem und ermöglicht den Zugriff auf Dateien und Verzeichnisse innerhalb von Databricks-Notebooks, Jobs und Clustern. Es wird typischerweise verwendet, um Daten zu speichern und zu organisieren, die in Apache Spark verarbeitet werden sollen. Das DBFS ist sehr umfangreich und einer der wichtigsten Bestandteile von Databricks. Von daher gehen wir hier etwas intensiver drauf ein.

Zugriffsarten und Speicherorte

DBFS stellt ein vereinfachtes Abstraktionsmodell für den Zugriff auf Dateien zur Verfügung. Es ermöglicht den Zugriff auf Dateien über Pfade, ähnlich wie bei herkömmlichen Dateisystemen. Beispielsweise kann eine Datei unter /dbfs/tmp/datei.csv abgelegt und von einem Notebook aus genutzt werden.

Obwohl DBFS intern in Azure Databricks verwendet wird, können Dateien auch im Azure Blob Storage oder Azure Data Lake Storage gespeichert werden. DBFS bietet einen abstrahierten Zugang zu diesen Speichern. Tatsächlich ist DBFS nicht nur eine eigene physische Speicherlösung, sondern ein Layer über Cloud-Speicher. Dies bedeutet, dass im Hintergrund immer ein Speicherkonto liegt. Ob es ein Blob Storage oder ein Data Lake Storage sind, spielt dabei keine Rolle.

Managed vs. Unmanaged (External) Tables

Beginnen wir mit den Managed Tables. Wenn Daten in DBFS gespeichert werden und als Managed Tables verwendet werden, werden sowohl die Daten als auch die Metadaten vom Databricks-System verwaltet. Das bedeutet, dass beim Löschen der Tabelle sowohl die Daten als auch die Metadaten aus dem System entfernt werden.

Wenn Daten aus externen Quellen wie Azure Data Lake Storage (ADLS) oder Azure Blob Storage in DBFS eingebunden werden, bleiben die Daten an ihrem Ursprungsort gespeichert, und Databricks verwaltet nur die Metadaten. Dies bedeutet im Umkehrschluss: Beim Löschen einer Tabelle werden die Metadaten gelöscht, jedoch nicht die Daten, welche extern gespeichert werden.

Für die Anwender bedeutet das im Umkehrschluss, dass man bei jeder Tabelle abwägen sollte: Sollen meine Daten unter keinen Umständen gelöscht werden? Dann wählt man eine external Table. Hat man irgendwelche temporäre Tabellen, die nicht so wichtig sind, kann man auch Managed Tables wählen.

Lesen, Schreiben und Verwalten von Dateien

DBFS erlaubt den einfachen Zugriff auf Dateien, die in Notebooks verarbeitet werden. Dateien können über Python, Scala oder SQL-Befehle gelesen und geschrieben werden. Mit dem dbutils-Toolkit können Benutzer direkt mit DBFS interagieren, um Dateien zu erstellen, zu löschen oder zu verschieben. (Zum Beispiel können Dateien in DBFS mit Spark-API oder Python-Methoden wie dbutils.fs.cp(), dbutils.fs.rm(), und dbutils.fs.mv() verwaltet werden.) Dies ist besonders nützlich in Automatisierungsszenarien und für das Management von Daten innerhalb von Databricks-Notebooks.

Verwendung von DBFS für Datenverarbeitung und Persistenz

DBFS wird häufig als temporärer Speicherort für Daten in Spark-Anwendungen verwendet. Es kann auch verwendet werden, um große Mengen an Zwischen- und Endergebnissen von bspw. Machine-Learning-Modellen oder Analyseprozessen zu speichern. Aufgrund der Integration von Delta Lake kann DBFS auch als Speicherort für Delta-Tabellen genutzt werden, die ACID-Transaktionen und Zeitreisen unterstützen.

Der Unity Catalog Metastore

Der Unity Catalog ist eine der zentralen Komponenten des Datenmanagements. Dort werden die die Metadaten über Tabellen, Schemata und Berechtigungen verwaltet. Der Metastore ermöglicht eine zentrale Steuerung von Datenzugriffsrechten und Policies, was insbesondere in komplexen Datenlandschaften von Vorteil ist.

Um einen Metastore in Azure Databricks einzurichten, benötigt man sehr hohe Berechtigungen innerhalb der Azure und Databricks Landschaft. Man muss Workspace Admin in Databricks und Super (Global) Admin in Azure sein. Wenn man diese Berechtigungen besitzt, kann man zunächst einen Azure Data Lake Storage Gen2 Account anlegen. Innerhalb dieses Storage wird ein Container als zentraler Datenspeicher definiert. Nach der Einrichtung der entsprechenden Zugriffsrechte über eine Managed Identity oder einen Service Principal wird der Metastore im Azure Databricks Account Portal angelegt und mit den gewünschten Workspaces verknüpft. Dies bedeutet: Die Daten des Unity Catalog werden nicht innerhalb von Databricks, sondern extern gespeichert! Somit kann man die Zugriffsberechtigung zusätzlich über Azure steuern.

Genie: Natürliche Sprachverarbeitung für Datenanalysen

Ein weiteres innovatives Feature von Azure Databricks ist Genie, eine KI-basierte, codefreie Schnittstelle für die Datenanalyse. Fachanwender können Datenabfragen in natürlicher Sprache stellen, die von Genie in SQL-Abfragen umgewandelt werden.

Genie unterstützt nicht nur einfache Abfragen, sondern ermöglicht auch die Erstellung komplexer Visualisierungen und Berichte direkt aus den Daten. Darüber hinaus können Fachexperten sogenannte Trusted Assets erstellen, d.h. geprüfte, vordefinierte Abfragen, um die Konsistenz der Ergebnisse sicherzustellen. Dies spielt vor allem für große Unternehmen eine Rolle, die ein One-Reporting einführen wollen.

Grundsätzlich ist Genie also ein Chatbot, welcher uns Auskunft über unsere eigenen Daten gibt.

Fehlermeldung bei Benutzung von Genie
Um Genie nutzen zu können, muss der Unity Catalog aktiviert sein

Zugriffssteuerung

Der Zugriff auf Azure Databricks ist gut strukturiert und basiert auf verschiedenen Sicherheits- und Berechtigungsebenen. Diese Ebene der Kontrolle gewährleistet, dass nur autorisierte Benutzer auf Ressourcen zugreifen können, und ermöglicht eine feingranulare Verwaltung von Berechtigungen. Der Zugriff in Azure Databricks wird in mehreren Bereichen geregelt. Da dies ein wichtiger Punkt der Datensicherheit ist, gehen wir auf die Zugriffssteuerung intensiver ein.

Azure Active Directory (Entra ID) Integration

Azure Databricks ist vollständig in Microsoft Entra ID, ehemals Azure Active Directory (AAD) integriert, was bedeutet, dass die Benutzeridentität und -authentifizierung durch Entra verwaltet werden. Benutzer müssen sich mit ihren Entra-Konten anmelden, um auf Databricks-Arbeitsbereiche zuzugreifen. Dies bietet eine zentrale Möglichkeit zur Verwaltung von Identitäten und zur Durchsetzung von Sicherheitsrichtlinien.

Durch die Entra Integration können Unternehmen dann Single Sign-On (SSO) oder auch Benutzer- und Gruppenzugriffsverwaltung benutzen. Somit ist die Authentifizierung vereinfacht.

Zugriffssteuerung auf Arbeitsbereiche

Der Zugriff auf Azure Databricks ist in Arbeitsbereichen (Workspaces) organisiert. Arbeitsbereiche sind die primären Container, in denen alle Databricks-Ressourcen wie Notebooks, Cluster, Jobs und Daten gespeichert sind.

Arbeitsbereichsrollen

Innerhalb eines Arbeitsbereichs gibt es verschiedene Berechtigungsstufen, die man auf Benutzer oder Gruppen anwenden kann:

Admin: Benutzer mit Administratorrechten haben vollständigen Zugriff auf alle Funktionen im Arbeitsbereich, einschließlich der Möglichkeit, Benutzer hinzuzufügen oder zu entfernen und Berechtigungen zu ändern.

Member: Mitglieder können Notebooks, Cluster und Jobs erstellen und verwalten, aber keine administrativen Aufgaben durchführen.

Viewer: Benutzer mit Viewer-Rechten können nur Notebooks und Dashboards anzeigen, aber keine Änderungen vornehmen.

Arbeitsbereichs-ACLs (Access Control Lists)

Access Contol Lists ermöglichen die feingranulare Steuerung von Berechtigungen auf Ressourcen wie Notebooks, Bibliotheken, Clustern und Jobs. ACLs sind ähnlich zu Gruppen, welche man in Azure anlegen kann.

Unity Catalog für feingranulare Berechtigungen

Wie oben bereits beschrieben, ist der Unity Catalog eine zentralisierte Metadatenverwaltung für Databricks. Man verwendet diese insbesondere für den Zugriff auf Daten und Datenressourcen. Er ermöglicht eine präzise Steuerung des Zugriffs auf Daten auf der Ebene von Tabellen, Schemata und Datenbanken. Unity Catalog unterstützt die Verwaltung von Berechtigungen für Datenressourcen und Rollenbasierte Zugriffskontrollen.

  • Datenressourcen: Benutzer können detaillierte Zugriffssteuerungen auf Tabellen, Datenbanken und andere Datenressourcen definieren.
  • Rollenbasierte Zugriffskontrolle (RBAC): Unity Catalog nutzt RBAC, um den Zugriff auf Daten basierend auf Benutzerrollen zu steuern. Es können Rollen für Administratoren, Data Scientists, Data Engineers und andere definiert werden, um genau festzulegen, wer welche Daten sehen und bearbeiten darf.

Cluster- und Notebook-Berechtigungen

Databricks bietet die Möglichkeit, Berechtigungen auf einzelne Notebooks zu setzen. Benutzer können ein Notebook zum Lesen, Schreiben oder Bearbeiten freigeben. Dies hilft, die Zusammenarbeit zu erleichtern und gleichzeitig den Zugriff auf sensible Daten zu steuern.

Auch für Cluster gibt es detaillierte Berechtigungen. Benutzer können Cluster erstellen, starten oder stoppen, je nach den ihnen zugewiesenen Rechten. Die Berechtigungen werden auf Benutzer- oder Gruppenbasis gewährt.

Beispiel für Berechtgungsvergabe in Databricks
Hier wird gleich ein ganzer Ordner zur Berechtigung freigegeben

Datenzugriffsrichtlinien und Verschlüsselung

Alle Daten, die in Azure Databricks gespeichert und verarbeitet werden, sind standardmäßig verschlüsselt. Dies umfasst sowohl die Daten im ruhenden Zustand als auch die Daten während der Übertragung. Somit sind die hohen Sicherheitsstandards die Microsoft bietet, auch hier gegeben.

Zugriff auf Databricks kann zusätzlich auf Netzwerkebene durch Virtual Networks (VNets) und Network Security Groups (NSGs) eingeschränkt werden. Dies bedeutet, dass der Zugang zu Databricks von bestimmten IP-Adressen oder Subnetzen aus erfolgen kann.

Audit Logs und Überwachung

Azure Databricks stellt umfassende Audit Logs bereit, die es Administratoren ermöglichen, den Zugriff und die Nutzung von Ressourcen innerhalb der Plattform zu überwachen. Wie im Abschnitt Kosten schon erwähnt, umfassen diese Logs Informationen zu Benutzeranmeldungen, Ressourcenzugriffen und Änderungen an Databricks-Ressourcen.

API- und Programmzugriff

Azure Databricks bietet umfangreiche REST APIs, die es ermöglichen, Programme zu integrieren und Databricks-Operationen wie das Erstellen von Clustern, das Starten von Jobs oder das Hochladen von Dateien automatisch auszuführen. Die API-Authentifizierung erfolgt über ein Personal Access Token (PAT), der für jede API-Anforderung erforderlich ist.

Für automatisierte Prozesse und Integrationen empfiehlt es sich, Service Principals oder Managed Identities zu verwenden, um den Zugriff auf Databricks-Ressourcen zu steuern, ohne dass Benutzeranmeldeinformationen erforderlich sind.

Fazit: Ist Azure Databricks die richtige Wahl?

Zusätzlich zu den oben genannten Features gibt es noch viele weitere, die hier keine Nennung finden. Bspw. das automatische Cluster-Management, welches die Rechenleistung dynamisch an die aktuelle Datenlast anpasst, was sowohl die Effizienz als auch die Kostenkontrolle verbessert. Als Überblick reicht dieser Artikel jedoch erstmal aus.

Zusammenfassend kann man sagen, dass Azure Databricks eine leistungsstarke Plattform für datengetriebene Unternehmen ist, die Big Data Processing, Machine Learning und komplexe Datenanalysen auf einer zentralen Plattform vereinen möchten. Die Integration von Delta Lake, AutoML und Unity Catalog sorgt für Effizienz und Skalierbarkeit.

Für größere Unternehmen mit komplexen Datenlandschaften bietet die Plattform durch ihre Flexibilität und Rechenleistung viele Vorteile. Kleinere Unternehmen oder Projekte mit geringem Datenvolumen sollten jedoch die Kostenstruktur genau prüfen, um sicherzustellen, dass die Plattform den eigenen Anforderungen entspricht.

Falls Sie Hilfe bei der Implementierung in Databricks oder bei der Technologieauswahl haben, kontaktieren Sie uns gerne.

Vorheriger Beitrag
Von Power BI zu Fabric
Nächster Beitrag
Was ist der Direct Lake in Microsoft Fabric?

Weitere Beiträge