Spark
Was ist Apache Spark?
Apache Spark ist ein Open Source-Framework, das die Entwicklung und Effizienz von Datenanalyse-Aufgaben vereinfacht. Es unterstützt ein breites Spektrum von API- und Sprachoptionen mit mehr als 80 Datenumwandlungs- und Aktionsoperatoren, um die Komplexität des Cluster-Computings zu reduzieren.
Wer entwickelte und wer pflegt Spark?
Eine Reihe von Entwicklern aus mehr als 300 Unternehmen hat Spark entwickelt, und eine umfangreiche Benutzergemeinde trägt zu kontinuierlichen Verbesserungen bei. Es wird von Unternehmen in zahlreichen Branchen genutzt, und seine Entwickler-Community ist die größte im Big Data-Bereich.
Warum ist Spark beliebt?
Mit berichteten Geschwindigkeiten, die 100-mal höher sind, als die vergleichbarer Engines, kann Spark auf unterschiedliche Datenquellen zugreifen und auf mehreren Plattformen ausgeführt werden, einschließlich Hadoop, Apache Mesos, Kubernetes, eigenständig oder in der Cloud. Ob Sie eine Batch- oder Streaming-Verarbeitung von Daten nutzen, der moderne Spark DAG Scheduler, eine Anfragenoptimierung und eine physische Ausführungs-Engine gewährleisten stets ein Höchstmaß an Leistung.
Warum ist Spark so leistungsstark?
Die unvergleichliche Leistung von Spark wird durch die In-Memory-Verarbeitung erreicht. Hierbei werden ein Pool verteilter Nodes mit hoher Arbeitsspeicherkapazität und kompakter Datenverschlüsselung sowie eine optimierende Anfragenplanung genutzt, um die Ausführungszeit und den Arbeitsspeicherbedarf zu minimieren.
Da Spark Berechnungen im Arbeitsspeicher durchführt, kann es Daten 100-mal schneller verarbeiten als Frameworks, die hierfür Speicherlaufwerke nutzen. Es ist die bevorzuge Wahl für die Verarbeitung großer Datenmengen, die für Analysen und das Training von Modellen für maschinelles Lernen sowie KI benötigt werden.
Darüber hinaus ermöglicht eine Reihe nativer Bibliotheken maschinelles Lernen auf Experten-Niveau sowie SQL-ähnliche Datenstrukturen für eine außergewöhnliche Leistung bei der Verarbeitung großer Datenbestände. Und mithilfe von mehr als 80 hochrangigen Operatoren ist mit Spark ein müheloses Entwickeln paralleler Anwendungen möglich.
Woher stammt Spark?
Was 2009 im AMPLab der Universität von Kalifornien als Forschungsarbeit einiger Studenten begann, entwickelte sich schnell zu dem, was heute als Spark bekannt ist. 2010 startete starteten AMPlab Open Source Spark und eine umfassendere Zusammenarbeit. Bis 2013 wuchs die Spark Community so stark an, dass das Projekt von der Apache Software Foundation weitergeführt wurde.
Seither haben mehr als 1200 Entwickler aus Hunderten von Unternehmen die Weiterentwicklung von Spark zu der leistungsstarken Engine unterstützt, die es heute ist. Tatsächlich nutzen laut einer Umfrage von 2016 mehr als 1000 Unternehmen Spark in ihrer Produktionsumgebung.
Wodurch unterscheiden sich Spark und Hadoop?
Spark und Hadoop haben einige Gemeinsamkeiten. Bei beiden handelt es sich um Open Source-Frameworks zur Analyse und Datenverarbeitung, beide werden von der Apache Software Foundation betreut, beide beinhalten Bibliotheken für maschinelles Lernen, und beide können in mehreren unterschiedlichen Sprachen programmiert werden, wie z. B. Java, Python, R oder Scala.
Jedoch wurde Spark entwickelt, um die Anzahl der möglichen Berechnungen mit Hadoop zu erhöhen, so dass es eigentlich nur darum geht, wie sehr Spark die native Datenverarbeitungs-Komponente von Hadoop verbessert, bekannt als MapReduce.
Beispielsweise nutzt Hadoop lediglich die Batch-Verarbeitung von Daten, während Spark eine Batch- und Streaming-Verarbeitung von Echtzeit-Daten ermöglicht. Darüber hinaus verfügen zwar beide Lösungen über Maschinenlern-Bibliotheken, jedoch nur Spark über Verarbeitungsfunktionen für In-Memory-Daten, wodurch erhebliche Geschwindigkeitsvorteile gegenüber Hadoop entstehen. Der größte Unterschied zwischen Spark und Hadoop liegt jedoch in der Effizienz. Hadoop nutzt einen aus zwei Phasen bestehenden Ausführungsprozess, wohingegen Spark Directed Acyclic Graphs (DAGs) erzeugt, um die Zeitplanung für Aufgaben zu ermöglichen und Worker Nodes zu verwalten, so dass die Verarbeitung gleichzeitig und somit effizienter erfolgen kann.
Vorteile von Apache Spark
Spark bietet im Vergleich zu anderen Frameworks zahlreiche Vorteile. Es ermöglicht erweiterte Analysen in einem benutzerfreundlichen Format mit der Flexibilität und Skalierbarkeit, die für die Erhöhung der Verarbeitungsgeschwindigkeit und der Effizienz erforderlich sind. Einige der wichtigsten Vorteile:
Geschwindigkeit
Da die Daten so organisiert sind, dass die In-Memory-Verarbeitung auf den verteilten Cluster-Nodes ausgeweitet wird, und da Spark die Verarbeitung durchführen kann, ohne Daten zurück auf den Laufwerksspeicher zu schreiben, ist eine bis zu 100-mal schnellere In-Memory-Verarbeitung von Batch-Jobs als mit MapReduce möglich sowie eine 10-mal schnellere Verarbeitung mithilfe von Speicherlaufwerken.
Mehrsprachigkeit
Spark ist in Scala programmiert und verfügt darüber hinaus über API-Konnektoren für Java und Python sowie ein R-Programmierpaket, um die von Data Scientists benötigte Verarbeitung sehr großer Datenbestände zu ermöglichen.
Benutzerfreundlichkeit
Durch die effizientere Verteilung der Daten auf Nodes und Cluster durch Spark werden eine parallele Datenverarbeitung und Datenabstraktion ermöglicht. Und seine Fähigkeit, mehrere Arten von Datenbanken zusammenzuführen sowie Daten aus zahlreichen Arten von Datenspeichern zu verarbeiten ermöglicht den Einsatz in einer Vielzahl von Anwendungsfällen.
Stromversorgung
Spark kann laut Aussage von Befürwortern große Datenmengen mit einem Umfang von mehreren Petabyte handhaben. Darüber hinaus ermöglicht es den Benutzern, ohne Downsampling exploratorische Datenanalysen derart umfassender Datenbestände durchzuführen.
Erweiterte Analysen
Spark verfügt über mehrere Code-Bibliotheken zur Ausführung von Datenanalyse-Anwendungen. MLlib beispielsweise bietet Code für erweiterte statistische Operationen, und die Spark Streaming-Bibliothek ermöglicht Benutzern die Analyse von Daten in Echtzeit.
Besserer Zugriff auf Big Data
Spark trennt Datenspeicher und Computing. So können Kunden beides skalieren, um die Leistungsanforderungen von Analyse-Anwendungen zu erfüllen. Darüber hinaus ist eine nahtlose Batch-Verarbeitung möglich, um Daten für erweiterte Analysen in einen Data Lake oder ein Data Warehouse zu verschieben.
Dynamische Qualitäten
Spark beinhaltet Tools, die Benutzer bei der dynamischen Skalierung von Nodes unterstützen, um eine Anpassung an sich verändernde Workloads zu ermöglichen. Außerdem ist eine automatische Neuzuordnung der Nodes am Ende des Verarbeitungszyklus in Spark einfacher zu bewerkstelligen.
Bedarf an Spark-Entwicklern
Da Unternehmen zunehmend eine schnellere Analyseverarbeitung benötigen, um wettbewerbsfähig zu bleiben, steigt die Nachfrage nach Spark-Entwicklern. Und mit wachsendem Marktanteil von On-Demand-Lösungen für maschinelles Lernen sind diejenigen Lösungen, die Deep Learning-Beschleuniger und KI-Technologien ermöglichen, essentiell.
Was ist das Spark Framework?
Wenn Entwickler, die Java oder Kotlin nutzen, expressivere Web-Anwendungen mit begrenzten Boilerplates entwickeln möchten, nutzen sie häufig das Spark Framework. Spark wurde mit seiner deklarativen und expressiven Syntax für einen produktiveren schnellen Entwicklungsprozess entwickelt, der ein besseres Programmieren ermöglicht.
Als Mikro-Framework ermöglicht Spark Entwicklern, mit einem weniger umständlichen Prozess vollständig von der Java Virtual Machine (JVM) zu profitieren. Und Spark verfügt über eine derart prägnante Code-Syntax, dass das Programmieren erheblich optimierter ist als mit anderen Java-Web-Frameworks.
Darüber hinaus wurde die Spark-Framework-Sprache für eine serverseitige Ausführung mit bereits integrierter Schreibweise entwickelt. Dies unterstützt NodeJS-Entwickler, die statische, in JavaScript kompilierte Sprachen wie TypeScript und zunehmend serverseitige Webentwicklung nutzen.
Spark arbeitet mit mehreren Datenstrukturen, die ein leistungsstärkeres Framework ermöglichen als dies bei anderen Lösungen der Fall ist. Diese beinhalten RDDs, DataFrames, Datasets, Tungsten und GraphFrames, die nachstehend beschrieben werden:
- Resilient Distributed Datasets (RDDs): RDDs verteilen Daten auf Cluster und ermöglichen eine Vielzahl simultaner Verarbeitungsaufgaben. Bei einer Fehlfunktion von Nodes innerhalb eines Clusters können die Aufgaben neu ausgeführt werden, so dass die Vorgänge ohne Eingreifen fortgesetzt werden können.
- DataFrames: DataFrames organisieren Daten in Spalten für SQL-Operationen. Diese bieten keine Datentyp-Sicherheit, wenngleich diese bereits in den Datensätzen selbst gewährleistet ist.
- Datasets: Datasets organisieren Daten ebenfalls in Spalten für SQL-Abfragen. Sie bieten Datentyp-Sicherheitsmaßnahmen.
- Tungsten: Die Tungsten Datenstruktur wurde neu hinzugefügt, um die Leistung von Spark auf Bare Metal-Niveau zu erhöhen. Ziele sind Arbeitsspeicher-Management, binäre Verarbeitung, Code-Erstellung und Algorithmus-Entwicklung für eine schnellere Verarbeitung.
- GraphFrames: Mit der GraphFrames-Datenstruktur können Sie In-Memory-Graph-Abfragen ausführen, die für Hochleistungsgeschwindigkeiten geeignet sind.
Durch die Kombination dieser fünf Datenstrukturen kann Spark Daten aufbereiten, deskriptive Analysen liefern und Suchabfragen ermöglichen wie andere Frameworks. Gleichzeitig werden ebenfalls prädiktive Analysen, maschinelles Lernen und Graph-Verarbeitung ermöglicht, so dass Unternehmen schneller fundierte Entscheidungen treffen können.
Was bietet HPE an, um die Spark-Leistung zu maximieren?
Unternehmen, die eine datenorientierte Strategie verfolgen, können eine beliebige Anzahl von HPE Lösungen nutzen, um eine Wertschöpfung aus ihren Daten in On-Premises-, Multi-Cloud- oder Edge-Bereitstellungen zu erzielen. Als Marktführer im Bereich der digitalen Transformation bietet HPE bahnbrechende Services an, die Spark in Notebooks integrieren, um Maschinenlern- und KI-Workloads sowie die Erkenntnisgewinnung zu beschleunigen und dem Unternehmen einen Mehrwert zu bieten.
Beispielsweise ist HPE Ezmeral eine elastische Plattform zur Skalierung von Apache Spark Workloads mit einer mandantenfähigen Kontrollebene, GPU-Beschleunigung, vollständiger Isolation und Kontrolle sowie vorgefertigten Tools zur Datenanalyse. HPE Ezmeral ist das erste Data Lakehouse mit Cloud-nativen Funktionen für lokale Analysen, maschinelles Lernen und KI. Kürzlich durchgeführte Tests haben ergeben, dass HPE Ezmeral, NVIDIA RAPIDS und Tensor Core A100 GPUs Spark KI- und ETL-Workloads bis zu 29-fach beschleunigen. [i]
Darüber hinaus führte HPE vor Kurzem HPE Ezmeral Unified Analytics ein, die branchenweit erste Cloud Data Lakehouse-Plattform, die Spark gemeinsam mit weiteren erstklassigen Open-Source-Tools als Bestandteil ihres einzigartigen Stacks integriert. HPE Ezmeral Unified Analytics ist ebenfalls über HPE GreenLake erhältlich.
[1] HPE standardisierte die Testmodelle basierend auf Big Data-Benchmarks unter Nutzung von Kubernetes Pods, verwaltet durch HPE Ezmeral, NVIDIA A100 40 GB GPUs und HPE ProLiant DL385 Gen10 Plus v2.