Welcome to Our Website

HPE Developer Community Portal (Deutsch)

Original post information:

"authorDisplayName": "Carol McDonald","publish": "2018-10-17T08:00:00.000Z","tags": "spark"

In diesem Blogbeitrag geben wir eine Einführung in Apache Spark und seine Geschichte und erkunden einige der Bereiche, in denen seine besonderen Fähigkeiten am meisten zeigen versprechen. Wir werden die Beziehung zu anderen Schlüsseltechnologien diskutieren und einige hilfreiche Hinweise geben.

Mit Spark 2.,0 und spätere Versionen, große Verbesserungen wurden implementiert, um Spark einfacher zu programmieren und schneller auszuführen.

Was Ist Apache Spark?

Spark ist eine universelle verteilte Datenverarbeitungs-Engine, die für den Einsatz in einer Vielzahl von Umständen geeignet ist. Zusätzlich zur Spark Core Data Processing Engine gibt es Bibliotheken für SQL, maschinelles Lernen, Diagrammberechnung und Stream-Verarbeitung, die zusammen in einer Anwendung verwendet werden können. Zu den von Spark unterstützten Programmiersprachen gehören: Java, Python, Scala und R., Anwendungsentwickler und Datenwissenschaftler integrieren Spark in ihre Anwendungen, um Daten in großem Maßstab schnell abzufragen, zu analysieren und zu transformieren. Zu den Aufgaben, die am häufigsten mit Spark verbunden sind, gehören ETL-und SQL-Batch-Jobs in großen Datensätzen, die Verarbeitung von Streaming-Daten von Sensoren, IoT oder Finanzsystemen sowie maschinelle Lernaufgaben.

Geschichte

Um Spark zu verstehen, hilft es, seine Geschichte zu verstehen., Vor Spark gab es MapReduce, ein widerstandsfähiges Framework für verteilte Verarbeitung, mit dem Google das explodierende Inhaltsvolumen im Web über große Cluster von Commodity-Servern indizieren konnte.

Die Google-Strategie bestand aus drei Kernkonzepten:

  1. Daten verteilen: Wenn eine Datendatei in den Cluster hochgeladen wird, wird sie in Blöcke aufgeteilt, Datenblöcke genannt und unter den Datenknoten verteilt und über den Cluster repliziert.,
  2. Verteilen Berechnung: Benutzer geben eine Map-Funktion an, die ein Schlüssel/Wert-Paar verarbeitet, um eine Reihe von Zwischenschlüssel/Wert-Paaren und eine Reduce-Funktion zu generieren, die alle mit demselben Zwischenschlüssel verknüpften Zwischenwerte zusammenführt. In diesem Funktionsstil geschriebene Programme werden automatisch parallelisiert und auf einem großen Cluster von Commodity-Computern wie folgt ausgeführt:

    • Der Mapping-Prozess wird auf jedem zugewiesenen Datenknoten ausgeführt und arbeitet nur an seinem Datenblock aus einer verteilten Datei.,
    • Die Ergebnisse der Mapping-Prozesse werden in einem Prozess namens“ shuffle and sort „an die Reduzierer gesendet: Schlüssel/Wert-Paare aus den Mappern werden nach Schlüssel sortiert, nach der Anzahl der Reduzierer partitioniert und dann über das Netzwerk gesendet und in Schlüssel sortierte“ Sequenzdateien “ auf den Reduzierknoten geschrieben.
    • Der Reduzierprozess wird auf seinem zugewiesenen Knoten ausgeführt und funktioniert nur auf seiner Teilmenge der Daten (seiner Sequenzdatei). Die Ausgabe des Reduzierprozesses wird in eine Ausgabedatei geschrieben.,
  3. Fehler tolerieren: Sowohl Daten als auch Berechnungen können Fehler tolerieren, indem sie für Daten oder Verarbeitung an einen anderen Knoten übergeben werden.

Beispiel für die Ausführung der MapReduce-Wortzahl:

Einige iterative Algorithmen wie PageRank, mit denen Google Websites in ihren Suchmaschinenergebnissen eingestuft hat, erfordern die Verkettung mehrerer MapReduce-Jobs, was viel Lesen und Schreiben auf die Festplatte verursacht., Wenn mehrere MapReduce-Jobs miteinander verkettet sind, werden für jeden MapReduce-Job Daten aus einem verteilten Dateiblock in einen Map-Prozess gelesen, dazwischen in ein SequenceFile geschrieben und aus diesem gelesen und dann von einem Reduzierprozess in eine Ausgabedatei geschrieben.

Ein Jahr nachdem Google ein Whitepaper veröffentlicht hatte, in dem das MapReduce-Framework (2004) beschrieben wurde, erstellten Doug Cutting und Mike Cafarella Apache Hadoop™.,

Apache Spark™ wurde 2009 als Projekt im AMPLab an der University of California, Berkeley, ins Leben gerufen. Spark wurde 2013 zu einem Inkubationsprojekt der Apache Software Foundation und wurde Anfang 2014 zu einem der Top-Level-Projekte der Stiftung befördert. Spark ist derzeit eines der aktivsten Projekte, die von der Stiftung verwaltet werden, und die Community, die um das Projekt herum aufgewachsen ist, umfasst sowohl produktive einzelne Mitwirkende als auch gut finanzierte Unterstützer von Unternehmen wie Databricks, IBM und Chinas Huawei.,

Ziel des Spark-Projekts war es, die Vorteile des skalierbaren, verteilten und fehlertoleranten Verarbeitungsframeworks von MapReduce beizubehalten und gleichzeitig effizienter und benutzerfreundlicher zu machen. Die Vorteile von Spark gegenüber MapReduce sind:

  • Spark wird viel schneller ausgeführt, indem Daten über mehrere parallele Operationen im Speicher zwischengespeichert werden, während MapReduce mehr Lesen und Schreiben von der Festplatte erfordert.
  • Spark führt Multithread-Aufgaben innerhalb von JVM-Prozessen aus, während MapReduce als schwerere JVM-Prozesse ausgeführt wird., Dies gibt Spark einen schnelleren Start, eine bessere Parallelität und eine bessere CPU-Auslastung.
  • Spark bietet ein umfangreicheres funktionales Programmiermodell als MapReduce.
  • Spark ist besonders nützlich für die parallele Verarbeitung für verteilte Daten mit iterativen algorithmen.

Wie eine Spark-Anwendung auf einem Cluster ausgeführt wird

Das folgende Diagramm zeigt eine Spark-Anwendung, die auf einem Cluster ausgeführt wird.,

  • Eine Spark-Anwendung wird als unabhängige Prozesse ausgeführt, die vom SparkSession-Objekt im Treiberprogramm koordiniert werden.
  • Der Ressourcen-oder Clustermanager weist Workern Aufgaben zu, eine Aufgabe pro Partition.
  • Eine Aufgabe wendet ihre Arbeitseinheit auf den Datensatz in ihrer Partition an und gibt einen neuen Partitionsdatensatz aus. Da iterative Algorithmen Operationen wiederholt auf Daten anwenden, profitieren sie vom Zwischenspeichern von Datensätzen über Iterationen hinweg.,
  • Ergebnisse werden an die Treiberanwendung zurückgesendet oder können auf der Festplatte gespeichert werden.,ein in Spark
  • Apache Mesos – ein allgemeiner Clustermanager, der auch Hadoop – Anwendungen ausführen kann
  • Apache Hadoop YARN – der Ressourcenmanager in Hadoop 2
  • Kubernetes-ein Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung containerisierter Anwendungen

Spark hat auch einen lokalen Modus, in dem der Treiber und die Executoren als Threads auf Ihrem Computer anstelle eines Clusters ausgeführt werden, was für die Entwicklung Ihrer Anwendungen von einem PC aus nützlich ist.,

Was macht Spark?

Spark kann mehrere Petabyte Daten gleichzeitig verarbeiten, verteilt auf einen Cluster von Tausenden von kooperierenden physischen oder virtuellen Servern. Es verfügt über einen umfangreichen Satz von Entwicklerbibliotheken und APIs und unterstützt Sprachen wie Java, Python, R und Scala; Seine Flexibilität macht es gut geeignet für eine Reihe von Anwendungsfällen., Spark wird häufig mit verteilten Datenspeichern wie HPE Ezmeral Data Fabric, Hadoops HDFS und Amazons S3 verwendet, mit gängigen NoSQL-Datenbanken wie HPE Ezmeral Data Fabric, Apache HBase, Apache Cassandra und MongoDB und mit verteilten Nachrichtenspeichern wie HPE Ezmeral Data Fabric und Apache Kafka.

Typische Anwendungsfälle sind:

Stream-Verarbeitung: Von Protokolldateien zu Sensordaten müssen Anwendungsentwickler zunehmend mit“ Datenströmen “ zurechtkommen., Diese Daten kommen in einem stetigen Strom an, oft aus mehreren Quellen gleichzeitig. Es ist zwar durchaus möglich, diese Datenströme auf der Festplatte zu speichern und retrospektiv zu analysieren, Es kann jedoch manchmal sinnvoll oder wichtig sein, die Daten beim Eintreffen zu verarbeiten und darauf einzuwirken. Datenströme im Zusammenhang mit Finanztransaktionen können beispielsweise in Echtzeit verarbeitet werden, um potenziell betrügerische Transaktionen zu identifizieren und abzulehnen.

Maschinelles Lernen: Mit zunehmendem Datenvolumen werden Ansätze für maschinelles Lernen praktikabler und genauer., Software kann trainiert werden, Trigger innerhalb gut verstandener Datensätze zu identifizieren und darauf einzuwirken, bevor dieselben Lösungen auf neue und unbekannte Daten angewendet werden. Die Fähigkeit von Spark, Daten im Speicher zu speichern und wiederholte Abfragen schnell auszuführen, macht es zu einer guten Wahl für das Training von Algorithmen für maschinelles Lernen. Wenn Sie immer wieder im großen Maßstab weitgehend ähnliche Abfragen ausführen, wird der Zeitaufwand für eine Reihe möglicher Lösungen erheblich reduziert, um die effizientesten Algorithmen zu finden.,

Interaktive Analyse: Anstatt vordefinierte Abfragen auszuführen, um statische Dashboards zur Produktivität von Verkäufen oder Produktionslinien oder zu Aktienkursen zu erstellen, möchten Geschäftsanalysten und Datenwissenschaftler ihre Daten untersuchen, indem sie eine Frage stellen, das Ergebnis anzeigen und dann entweder die ursprüngliche Frage leicht ändern oder tiefer in die Ergebnisse bohren. Dieser interaktive Abfrageprozess erfordert Systeme wie Spark, die schnell reagieren und sich anpassen können.,

Datenintegration: Daten, die von verschiedenen Systemen in einem Unternehmen erzeugt werden, sind selten sauber oder konsistent genug, um einfach und einfach für Berichte oder Analysen kombiniert zu werden. ETL-Prozesse (Extract, Transform and Load) werden häufig verwendet, um Daten aus verschiedenen Systemen abzurufen, zu bereinigen und zu standardisieren und dann zur Analyse in ein separates System zu laden. Spark (und Hadoop) werden zunehmend verwendet, um die Kosten und den Zeitaufwand für diesen ETL-Prozess zu reduzieren.

Wer benutzt Spark?,

Eine breite Palette von Technologieanbietern hat Spark schnell unterstützt und die Möglichkeit erkannt, ihre bestehenden Big Data-Produkte auf Bereiche auszudehnen, in denen Spark einen echten Mehrwert bietet, z. B. interaktive Abfragen und maschinelles Lernen. Bekannte Unternehmen wie IBM und Huawei haben erhebliche Summen in die Technologie investiert, und eine wachsende Anzahl von Startups baut Unternehmen auf, die ganz oder teilweise von Spark abhängen., Zum Beispiel gründete das Berkeley-Team, das für die Erstellung von Spark verantwortlich ist, 2013 Databricks, das eine gehostete End-to-End-Datenplattform mit Spark bietet. Das Unternehmen ist gut finanziert und hat 247 Millionen US-Dollar in vier Investitionsrunden in den Jahren 2013, 2014, 2016 und 2017 erhalten, und die Mitarbeiter von Databricks spielen weiterhin eine herausragende Rolle bei der Verbesserung und Erweiterung des Open-Source-Codes des Apache Spark-Projekts.,

Die großen Hadoop-Anbieter, einschließlich MapR, Cloudera und Hortonworks, haben alle umgezogen, um YARN-based Spark neben ihren bestehenden Produkten zu unterstützen, und jeder Anbieter arbeitet daran, einen Mehrwert für seine Kunden zu schaffen. Anderswo haben IBM, Huawei und andere bedeutende Investitionen in Apache Spark getätigt, indem sie es in ihre eigenen Produkte integriert und Verbesserungen und Erweiterungen zum Apache-Projekt beigetragen haben., Webbasierte Unternehmen wie die chinesische Suchmaschine Baidu, der E-Commerce-Betrieb Taobao und das Social-Networking-Unternehmen Tencent führen alle Spark-basierte Vorgänge in großem Umfang aus, wobei die 800 Millionen aktiven Benutzer von Tencent Berichten zufolge über 700 TB Daten pro Tag für die Verarbeitung generieren auf einem Cluster von mehr als 8.000 Rechenknoten.

Zusätzlich zu diesen webbasierten Giganten ist das Pharmaunternehmen Novartis darauf angewiesen, dass Spark die Zeit verkürzt, die erforderlich ist, um Modellierungsdaten in die Hände von Forschern zu bringen, während sichergestellt wird, dass ethische und vertragliche Garantien eingehalten werden.,

Was unterscheidet Spark?

Es gibt viele Gründe, Spark zu wählen, aber die folgenden drei sind der Schlüssel:

Einfachheit: Die Funktionen von Spark sind über eine Reihe von umfangreichen APIs zugänglich, die alle speziell für die schnelle und einfache Interaktion mit Daten im Maßstab entwickelt wurden. Diese APIs sind gut dokumentiert und so strukturiert, dass es Datenwissenschaftlern und Anwendungsentwicklern leicht fällt, Spark schnell zum Laufen zu bringen.

Geschwindigkeit: Spark ist auf Geschwindigkeit ausgelegt und arbeitet sowohl im Speicher als auch auf der Festplatte., Mit Spark belegte ein Team von Databricks bei der Daytona GraySort Benchmarking Challenge 2014 den ersten Platz mit einem Team der University of California, San Diego (https://spark.apache.org/news/spark-wins-daytona-gray-sort-100tb-benchmark.html). Die Herausforderung besteht in der Verarbeitung eines statischen Datensatzes; Das Databricks-Team konnte in nur 23 Minuten 100 Terabyte an Daten verarbeiten, die auf Solid-State-Laufwerken gespeichert waren, und der vorherige Gewinner benötigte 72 Minuten, indem er Hadoop und eine andere Clusterkonfiguration verwendete. Spark kann noch besser funktionieren, wenn interaktive Abfragen von im Speicher gespeicherten Daten unterstützt werden., In diesen Situationen gibt es Behauptungen, dass Spark 100-mal schneller sein kann als Hadoops MapReduce.

Unterstützung: Spark unterstützt eine Reihe von Programmiersprachen, darunter Java, Python, R und Scala. Spark bietet Unterstützung für die enge Integration mit einer Reihe führender Speicherlösungen im Hadoop-Ökosystem und darüber hinaus, einschließlich HPE Ezmeral Data Fabric (Dateisystem, Datenbank und Ereignisspeicher), Apache Hadoop (HDFS), Apache HBase und Apache Cassandra. Darüber hinaus ist die Apache Spark-Community groß, aktiv und international., Eine wachsende Anzahl kommerzieller Anbieter, darunter Databricks, IBM und alle wichtigen Hadoop-Anbieter, bieten umfassenden Support für Spark-basierte Lösungen.

Die Leistungsfähigkeit von Datenpipelines

Ein Großteil der Leistung von Spark liegt in der Fähigkeit, sehr unterschiedliche Techniken und Prozesse zu einem einzigen, kohärenten Ganzen zu kombinieren. Außerhalb von Spark erfordern die diskreten Aufgaben der Auswahl von Daten, der Transformation dieser Daten auf verschiedene Arten und der Analyse der transformierten Ergebnisse möglicherweise leicht eine Reihe separater Verarbeitungsframeworks wie Apache Oozie., Spark hingegen bietet die Möglichkeit, diese miteinander zu kombinieren und Grenzen zwischen Batch -, Streaming-und interaktiven Workflows auf eine Weise zu überschreiten, die den Benutzer produktiver macht.

Spark-Jobs führen mehrere Operationen nacheinander im Speicher aus und werden nur dann auf die Festplatte übertragen, wenn dies aufgrund von Speicherbeschränkungen erforderlich ist. Spark vereinfacht die Verwaltung dieser unterschiedlichen Prozesse und bietet ein integriertes Ganzes – eine Datenpipeline, die einfacher zu konfigurieren, einfacher zu laufen und einfacher zu warten ist., In Anwendungsfällen wie ETL können diese Pipelines extrem umfangreich und komplex werden, indem sie eine große Anzahl von Eingaben und eine Vielzahl von Verarbeitungsschritten zu einem einheitlichen Ganzen kombinieren, das konsistent das gewünschte Ergebnis liefert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.