Was ist Apache Spark?

Apache Spark ist ein verteiltes Open-Source-Verarbeitungssystem, das für Big-Data-Workloads verwendet wird. Es nutzt In-Memory-Caching und optimierte Abfrageausführung für schnelle analytische Abfragen gegen Daten beliebiger Größe. Es bietet Entwicklungs-APIs in Java, Scala, Python und R und unterstützt die Wiederverwendung von Code bei mehreren Workloads – Batch-Verarbeitung, interaktive Abfragen, Echtzeit-Analysen, Machine Learning und Graphverarbeitung. Sie werden feststellen, dass es von Unternehmen aus allen Branchen verwendet wird, unter anderem bei FINRA, Yelp, Zillow, DataXU, Urban Institute und CrowdStrike.

Was ist die Geschichte von Apache Spark?

Apache Spark begann 2009 als Forschungsprojekt am AmpLab der UC Berkley, einer Zusammenarbeit von Studenten, Forschern und Dozenten, die sich auf datenintensive Anwendungsbereiche konzentrierte. Das Ziel von Spark war es, ein neues Framework zu entwickeln, das für schnelle iterative Verarbeitungen wie Machine Learning und interaktive Datenanalysen optimiert ist und gleichzeitig die Skalierbarkeit und Fehlertoleranz von Hadoop MapReduce beibehält. Das erste Papier mit dem Titel „Spark: Cluster Computing mit Arneitsmengen“ wurde im Juni 2010 veröffentlicht, und Spark wurde unter einer BSD-Lizenz als Open Source veröffentlicht. Im Juni 2013 erhielt Spark den Inkubationsstatus der Apache Software Foundation (ASF) und wurde im Februar 2014 als sehr wichtiges Projekt von Apache gegründet. Spark kann eigenständig, auf Apache Mesos oder am häufigsten auf Apache Hadoop ausgeführt werden.

Wie funktioniert Apache Spark?

Hadoop MapReduce ist ein Programmiermodell für die Verarbeitung großer Datenmengen mit einem parallelen, verteilten Algorithmus. Entwickler können massiv parallelisierte Operatoren schreiben, ohne sich Gedanken über Arbeitsverteilung und Fehlertoleranz machen zu müssen. Eine Herausforderung für MapReduce ist jedoch der sequenzielle mehrstufige Prozess, der erforderlich ist, um einen Job auszuführen. Bei jedem Schritt liest MapReduce Daten aus dem Cluster, führt Operationen durch und schreibt die Ergebnisse zurück in HDFS. Da für jeden Schritt ein Lese- und Schreibvorgang auf der Festplatte erforderlich ist, sind MapReduce-Aufgaben aufgrund der Latenz der Festplatten-E/A langsamer.

Spark wurde entwickelt, um die Einschränkungen von MapReduce zu beheben, indem die Verarbeitung im Arbeitsspeicher erfolgt, die Anzahl der Schritte in einer Aufgabe reduziert wird und Daten über mehrere parallele Operationen hinweg wiederverwendet werden. Mit Spark ist nur ein Schritt erforderlich, bei dem Daten in den Speicher eingelesen, Operationen ausgeführt und die Ergebnisse zurückgeschrieben werden, was zu einer viel schnelleren Ausführung führt. Spark verwendet auch Daten mithilfe eines In-Memory-Caches, um Algorithmen für Machine Learning, die wiederholt eine Funktion für denselben Datensatz aufrufen, erheblich zu beschleunigen. Die Wiederverwendung von Daten erfolgt durch die Erstellung von DataFrames, einer Abstraktion über Resilient Distributed Dataset (RDD), einer Sammlung von Objekten, die im Speicher zwischengespeichert und in mehreren Spark-Operationen wiederverwendet werden. Dadurch wird die Latenz drastisch gesenkt und Spark ist um ein Vielfaches schneller als MapReduce, insbesondere beim Machine Learning und interaktiven Analysen.

Hauptunterschiede: Apache Spark ggü. Apache Hadoop

Abgesehen von den Unterschieden im Design von Spark und Hadoop MapReduce haben viele Unternehmen diese Big-Data-Frameworks als komplementär empfunden und sie zusammen verwendet, um eine umfassendere geschäftliche Herausforderung zu lösen.

Hadoop ist ein Open-Source-Framework, das das Hadoop Distributed File System (HDFS) als Speicher, YARN zur Verwaltung von Rechenressourcen, die von verschiedenen Anwendungen verwendet werden, und eine Implementierung des MapReduce-Programmiermodells als Ausführungsmaschine enthält. In einer typischen Hadoop-Implementierung werden auch verschiedene Ausführungs-Engines wie Spark, Tez und Presto eingesetzt.

Spark ist ein Open-Source-Framework, das sich auf interaktive Abfragen, Machine Learning und Echtzeit-Workloads konzentriert. Es hat kein eigenes Speichersystem, führt aber Analysen auf anderen Speichersystemen wie HDFS oder anderen beliebten Speichern wie Amazon Redshift, Amazon S3, Couchbase, Cassandra und anderen durch. Spark on Hadoop nutzt YARN, um einen gemeinsamen Cluster und Datensatz wie andere Hadoop-Engines gemeinsam zu nutzen und so ein konsistentes Service- und Reaktionsniveau zu gewährleisten.

Welche Vorteile bietet Apache Spark?

Apache Spark bietet viele Vorteile, die es zu einem der aktivsten Projekte im Hadoop-Ökosystem machen. Dazu zählen:

Schnell

Durch In-Memory-Zwischenspeicherung und optimierte Abfrageausführung kann Spark schnelle analytische Abfragen für Daten beliebiger Größe ausführen.

Entwicklerfreundlich

Apache Spark unterstützt nativ Java, Scala, R und Python, sodass Ihnen eine Reihe von Sprachen zur Verfügung stehen, um Ihre Anwendungen zu erstellen. Diese APIs machen es Ihren Entwicklern leicht, da sie die Komplexität der verteilten Verarbeitung hinter einfachen Operatoren auf hoher Ebene verbergen, wodurch die Menge an erforderlichem Code drastisch reduziert wird.

Mehrere Workloads

Apache Spark bietet die Möglichkeit, mehrere Workloads auszuführen, darunter interaktive Abfragen, Echtzeit-Analysen, Machine Learning und Graphverarbeitung. Eine Anwendung kann mehrere Workloads nahtlos kombinieren.

Was sind Apache-Spark-Workloads?

Das Spark-Framework umfasst:

  • Spark Core als Grundlage für die Plattform
  • Spark SQL für interaktive Abfragen
  • Spark Streaming für Echtzeit-Analysen
  • Spark MLlib für Machine Learning
  • Spark GraphX für Graphverarbeitung

Spark Core

Spark Core ist das Fundament der Plattform. Es ist verantwortlich für die Speicherverwaltung, Fehlerbehebung, Planung, Verteilung und Überwachung von Jobs sowie die Interaktion mit Speichersystemen. Spark Core wird über eine Anwendungsprogrammierschnittstelle (APIs) bereitgestellt, die für Java, Scala, Python und R entwickelt wurde. Diese APIs verbergen die Komplexität der verteilten Verarbeitung hinter einfachen Operatoren auf hoher Ebene.

MLlib

Machine Learning

Spark beinhaltet MLlib, eine Algorithmenbibliothek für Machine Learning mit Daten in großem Maßstab. Machine-Learning-Modelle können von Datenwissenschaftlern mit R oder Python auf jeder Hadoop-Datenquelle trainiert, mit MLlib gespeichert und in eine Java- oder Scala-basierte Pipeline importiert werden. Spark wurde für schnelle, interaktive Berechnungen entwickelt, die im Speicher ausgeführt werden, sodass Machine Learning schnell ausgeführt werden kann. Zu den Algorithmen gehören Klassifikation, Regression, Clustering, kollaboratives Filtern und Pattern-Mining.

Spark-Streaming

Echtzeit

Spark Streaming ist eine Echtzeit-Lösung, die die schnelle Planungsfunktion von Spark Core für Streaming-Analysen nutzt. Es nimmt Daten in Mini-Batches auf und ermöglicht Analysen dieser Daten mit demselben Anwendungscode, der für Batch-Analysen geschrieben wurde. Dies verbessert die Produktivität der Entwickler, da sie denselben Code für die Batch-Verarbeitung und für Echtzeit-Streaming-Anwendungen verwenden können. Spark Streaming unterstützt Daten von Twitter, Kafka, Flume, HDFS und ZeroMQ sowie vielen anderen Daten aus dem Ökosystem der Spark-Pakete.

Spark SQL

Interaktive Abfragen

Spark SQL ist eine verteilte Abfrage-Engine, die interaktive Abfragen mit niedriger Latenz bis zu 100-mal schneller als MapReduce bereitstellt. Spark SQL umfasst einen kostenbasierten Optimierer, spaltenbasierten Speicher und Codegenerierung für schnelle Abfragen und skaliert gleichzeitig auf Tausende von Knoten. Geschäftsanalysten können Standard-SQL oder die Hive Query Language zum Abfragen von Daten verwenden. Entwickler können APIs verwenden, die in Scala, Java, Python und R verfügbar sind. Es unterstützt standardmäßig verschiedene Datenquellen, darunter JDBC, ODBC, JSON, HDFS, Hive, ORC und Parquet. Andere beliebte Shops – Amazon Redshift, Amazon S3, Couchbase, Cassandra, MongoDB, Salesforce.com, Elasticsearch und viele andere – finden Sie im Ökosystem der Spark-Pakete.

GraphX

Graphverarbeitung

Spark GraphX ist ein verteiltes Graphverarbeitungs-Framework, das auf Spark aufbaut. GraphX bietet ETL, explorative Analysen und iterative Graphberechnungen, damit Benutzer interaktiv eine Graphdatenstruktur im großen Maßstab erstellen und transformieren können. GraphX verfügt über eine hochflexible API und eine Auswahl an verteilten Graph-Algorithmen.

Was sind die Anwendungsfälle von Apache Spark?

Spark ist ein universelles verteiltes Verarbeitungssystem, das für Big-Data-Workloads verwendet wird. Spark wurde in allen Arten von Big-Data-Anwendungsfällen eingesetzt, um Muster zu erkennen und Einblicke in Echtzeit zu bieten. Beispielhafte Anwendungsfälle enthalten:

Finanzdienstleistungen

Spark wird im Bankwesen verwendet, um die Kundenabwanderung vorherzusagen und neue Finanzprodukte zu empfehlen. Im Investment Banking wird Spark zur Analyse von Aktienkursen verwendet, um zukünftige Trends vorherzusagen.

Gesundheitswesen

Spark wird verwendet, um eine umfassende Patientenversorgung aufzubauen, indem dem Gesundheitspersonal an vorderster Front Daten für jede Patienteninteraktion zur Verfügung gestellt werden. Spark kann auch verwendet werden, um die Behandlung von Patienten vorhersagen/zu empfehlen.

Herstellung

Spark wird verwendet, um Ausfallzeiten von mit dem Internet verbundenen Geräten zu vermeiden, indem empfohlen wird, wann vorbeugende Wartungsarbeiten durchgeführt werden müssen.

Einzelhandel

Spark wird verwendet, um Kunden durch personalisierte Services und Angebote zu gewinnen und zu halten.

Wie funktioniert die Bereitstellung von Apache Spark in der Cloud?

Spark ist ein idealer Workload in der Cloud, da die Cloud Leistung, Skalierbarkeit, Zuverlässigkeit, Verfügbarkeit und enorme Skaleneffekte bietet. ESG-Studien haben ergeben, dass 43 % der Befragten die Cloud als ihren primären Einsatz für Spark betrachten. Die wichtigsten Gründe, warum Kunden die Cloud als vorteilhaft für Data Lakes wahrnehmen, sind bessere Sicherheit, kürzere Bereitstellungszeiten, bessere Verfügbarkeit, häufigere Aktualisierungen von Features, größere Elastizität, größere geografische Abdeckung und an die tatsächliche Nutzung gebundene Kosten.

Was sind die AWS-Angebote für Apache Spark?

Amazon EMR eignet sich perfekt, um Apache Spark in der Cloud einzusetzen, da es die Integrations- und Testanforderungen kommerzieller Hadoop- und Spark-Distributionen mit dem Umfang, der Einfachheit und der Kosteneffizienz der Cloud kombiniert. Es ermöglicht den Einsatz von Spark-Clustern in nur wenigen Minuten, ohne dass Sie sich um Knotenbereitstellung, Cluster-Setup, Spark-Konfiguration oder Cluster-Tuning Gedanken machen müssen. EMR erlaubt es Ihnen, eine, hunderte oder tausende von Recheninstanzen innerhalb von Minuten bereitzustellen. Sie können Auto Scaling verwenden, damit EMR Ihre Spark-Cluster automatisch hochskaliert, um Daten beliebiger Größe zu verarbeiten, und nach Abschluss Ihres Jobs wieder herunterfährt, um zu vermeiden, dass Sie für ungenutzte Kapazitäten bezahlen. Sie können Ihre Rechnung senken, indem Sie sich auf eine Laufzeit festlegen und mit Amazon EC2 Reserved Instances bis zu 75 % sparen oder Ihre Cluster mit ungenutzter AWS-Rechenkapazität betreiben und mit EC2 Spot bis zu 90 % sparen.

Beginnen Sie mit Apache Spark in AWS, indem Sie noch heute ein Konto erstellen.

Nächste Schritte in AWS

Zusätzliche produktbezogene Ressourcen ansehen
Kostenlose Angebote für Analytics-Services in der Cloud anzeigen 
Ein kostenloses Konto erstellen

Sie erhalten sofort Zugriff auf das kostenlose Kontingent von AWS.

Registrieren 
Mit der Entwicklung in der Konsole starten

Starten Sie mit der Entwicklung in der AWS-Managementkonsole.

Anmelden