Einführung in Spark und Vergleich mit Hadoop

Einführung in Spark und Vergleich mit Hadoop

1. Spark vs. Hadoop

1.1 Nachteile von Haoop

  • 1. Eingeschränkte Fähigkeit, sich auszudrücken;
  • 2. Der Festplatten-E/A-Overhead ist hoch;
  • 3. Hohe Latenz;
  • 4. Die Verbindung zwischen Aufgaben verursacht IO-Overhead;
  • 5. Andere Aufgaben können nicht gestartet werden, bevor die vorherige Aufgabe abgeschlossen ist, was die Bewältigung komplexer, mehrstufiger Computeraufgaben erschwert.

1.2 Vorteile gegenüber Hadoop MR

  • 1. Das Rechenmodell von Spark gehört ebenfalls zu MR, ist jedoch nicht auf Map- und Reduce-Operationen beschränkt. Es bietet auch verschiedene Arten von Datensatzoperationen und sein Programmiermodell ist flexibler als das von Hadoop MR.
  • 2. Spark bietet In-Memory-Computing, das Zwischenergebnisse im Speicher ablegen kann, wodurch iterative Vorgänge effizienter werden;
  • 3. Der DAG-basierte Task-Scheduling-Ausführungsmechanismus von Spark ist dem iterativen Ausführungsmechanismus von Hadoop MR überlegen.
Funke MapReduce
Datenspeicherstruktur Verwenden Sie den Speicher, um einen ausfallsicheren verteilten Datensatz (RDD) zu erstellen, mit dem Sie Vorgänge ausführen und Daten zwischenspeichern können. Aufteilung des HDFS-Dateisystems auf der Festplatte
Programmierparadigma DAG (Transformation+Aktion) Map+Reduzieren
Speicherung von Zwischenberechnungsergebnissen Im Speicher gespeichert, ist die Zugriffsgeschwindigkeit um mehrere Größenordnungen höher als auf der Festplatte Wenn die Daten auf die Festplatte gelangen, sind die IO- und Serialisierungs- und Deserialisierungskosten hoch
Methode zur Aufgabenwartung Themen Verfahren
Zeit Latenzzeiten von unter einer Sekunde beim Lesen kleiner Datensätze Es dauert einige Sekunden, um die Aufgabe zu starten

2. Spark-Ökosystem

2.1 Drei Arten der Big Data-Verarbeitung

1. Komplexe Batch-Datenverarbeitung

Die Zeitspanne beträgt von einigen zehn Minuten bis zu mehreren Stunden

Haoop MapReduce

2. Interaktive Abfrage basierend auf historischen Daten

Die Zeitspanne beträgt einige zehn Sekunden bis mehrere Minuten

Die Echtzeitleistung von Cloudera und Impala ist besser als die von Hive.

3. Datenverarbeitung basierend auf Echtzeit-Datenstrom

Die Zeitspanne beträgt Hunderte von Millisekunden bis mehrere Sekunden

Sturm

2.2 BDAS-Architektur

2.3 Spark-Ökosystem

3. Grundkonzepte und Architekturdesign

3.1 Grundlegende Konzepte

3.2 Betriebsarchitektur

Vorteile von Spark mit Executor: (Im Vergleich zu Hadoops MR)

  • 1. Verwenden Sie Multithreading, um bestimmte Aufgaben auszuführen und den Start-Overhead von Aufgaben zu reduzieren.
  • 2. In Executor gibt es ein BlockManager-Speichermodul, das sowohl Speicher als auch Festplatte als Speichergeräte verwendet und so den IO-Overhead effektiv reduziert.

3.3 Beziehungen zwischen verschiedenen Konzepten

  • Eine Bewerbung besteht aus einem Fahrer und mehreren Jobs
  • Ein Job besteht aus mehreren Phasen
  • Eine Phase besteht aus mehreren Aufgaben, die in keiner Shuffle-Beziehung zueinander stehen.

Beim Ausführen einer Anwendung fordert der Treiber Ressourcen vom Cluster-Manager an und startet den Executor.

Senden Sie den Anwendungscode und die Dateien an den Executor und führen Sie die Aufgabe dann auf dem Executor aus. Nachdem der Lauf abgeschlossen ist,

Die Ausführungsergebnisse werden an den Treiber zurückgegeben oder in HDFS oder andere Datenbanken geschrieben.

4. Spark führt den Basisprozess aus

4.1 Betriebsablauf

1. Erstellen Sie eine grundlegende Betriebsumgebung für die Anwendung. Das heißt, der Treiber erstellt einen SparkContext, um Ressourcen zu beantragen, Aufgaben zuzuweisen und sie zu überwachen.

2. Der Ressourcenmanager weist dem Executor Ressourcen zu und startet den Executor-Prozess.

  • 3.1 SparkContext erstellt ein DAG-Diagramm basierend auf den Abhängigkeiten von RDD, übermittelt das DAG-Diagramm an DAGScheduler, damit es in Stage analysiert wird, und übermittelt dann jedes TaskSet zur Verarbeitung an den zugrunde liegenden Scheduler TaskScheduler.
  • 3.2 Executor beantragt Task von SparkContext, TaskScheduler sendet Task zur Ausführung an Executor und stellt Anwendungscode bereit.

4. Der Task wird auf dem Executor ausgeführt und gibt die Ausführungsergebnisse an den TaskScheduler und dann an den DAGScheduler zurück. Nach Abschluss der Ausführung werden die Daten geschrieben und alle Ressourcen freigegeben.

4.2 Funktionen der Betriebsarchitektur

1. Jede Anwendung verfügt über ihren eigenen Executor-Prozess. Der Prozess bleibt resident, während die Anwendung ausgeführt wird. Der Executor-Prozess führt die Aufgabe in einem Multithread-Verfahren aus.

2. Der laufende Spark-Prozess hat nichts mit dem Ressourcenmanager zu tun, solange er den Executor-Prozess abrufen und die Kommunikation aufrechterhalten kann.

3. Die Aufgabe verwendet Optimierungsmechanismen wie Datenlokalität und spekulative Ausführung. (Die Berechnung rückt näher an die Daten heran.)

5. Spark-Bereitstellungs- und Anwendungsmethoden

5.1 Drei Bereitstellungsmethoden von Spark

5.1.1 Standalone

Ähnlich wie bei MR1.0 ist der Steckplatz die Einheit zur Ressourcenzuweisung, die Leistung ist jedoch nicht gut.

5.1.2 Spark auf Mesos

Mesos und Spark haben eine gewisse Affinität.

5.1.3 Spark auf YARN

Die Verbindung zwischen Mesos und Yarn

5.2 Von der Hadoop+Storm-Architektur zur Spark-Architektur

Hadoop+Storm-Architektur

Diese Bereitstellungsmethode ist komplizierter.

Verwenden der Spark-Architektur zur Erfüllung der Anforderungen an die Stapel- und Streamverarbeitung

Spark verwendet schnelles Small-Batch-Computing, um Stream-Computing zu simulieren, es handelt sich jedoch nicht um echtes Stream-Computing.

Es ist unmöglich, Stream-Computing im Millisekundenbereich zu erreichen. Für Unternehmensanwendungen, die Echtzeitreaktionen im Millisekundenbereich erfordern, werden weiterhin Stream-Computing-Frameworks wie Storm benötigt.

Vorteile der Spark-Architektur:

  • 1. Installation und Konfiguration mit einem Klick, Aufgabenüberwachung und Alarmierung auf Thread-Ebene;
  • 2. Reduzieren Sie den Aufwand für Hardware-Cluster, Software-Wartung, Aufgabenüberwachung und Anwendungsentwicklung.
  • 3. Es ist einfach, einen einheitlichen Ressourcenpool für Hardware und Computerplattformen zu erstellen.

5.3 Einheitliche Bereitstellung von Hadoop und Spark

Verschiedene Computing-Frameworks laufen einheitlich in YARN

Die Vorteile sind wie folgt:

  • 1. Rechenressourcen können je nach Bedarf hoch- oder herunterskaliert werden;
  • 2. Keine Notwendigkeit, Lastanwendungen zu mischen und anzupassen, hohe Clusterauslastung;
  • 3. Gemeinsame Nutzung des zugrunde liegenden Speichers, um eine Datenmigration über Cluster hinweg zu vermeiden

Status Quo:

1. Spark kann derzeit die von einigen Komponenten im Hadoop-Ökosystem implementierten Funktionen nicht ersetzen.

2. Die vollständige Migration bestehender, mit Hadoop-Komponenten entwickelter Anwendungen nach Spark kostet Geld.

Dies ist das Ende dieses Artikels über die Einführung von Spark und die Vergleichsanalyse mit Hadoop. Weitere relevante Spark- und Hadoop-Inhalte finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • So installieren Sie die Standalone-Version von Spark in einer Linux-Umgebung ohne Verwendung von Hadoop
  • Eine kurze Diskussion von sieben gängigen Hadoop- und Spark-Projektfällen

<<:  Verwenden von js zur Realisierung eines dynamischen Hintergrunds

>>:  Die Standard-HTML-Schreibmethode unterscheidet sich von der von Dreamweaver automatisch generierten

Artikel empfehlen

Teilen des JS-nativen Quellcodes des Spiels 2048 (das Neueste im Internet)

Ich habe mich kürzlich mit Algorithmen beschäftig...

Detaillierte Erläuterung der dauerhaften Speicherung von Redis unter Docker

In diesem Kapitel beginnen wir mit dem Betrieb vo...

Website User Experience Design (UE)

Ich habe gerade einen von JunChen verfassten Beitr...

Detaillierter Prozess zur Implementierung des 2048-Minispiels im WeChat-Applet

Rendern Beispielcode Heute werden wir das WeChat-...

Unterschiede im Stundentrennzeichen zwischen Browsern

Beim Erstellen einer Webseite verwenden Sie manchm...

Umfassende Zusammenfassung der MySQL-Funktionen

Inhaltsverzeichnis 1. Häufig verwendete Zeichenfo...

Implementierung der automatischen Vervollständigung von Docker-Befehlen

Vorwort Ich weiß nicht, wie lange dieser Freund D...

Jmeter stellt eine Verbindung zum Datenbankprozessdiagramm her

1. Laden Sie den MySQL-JDBC-Treiber (mysql-connec...

Tutorial zur Installation von jdk1.8 auf Ubuntu14.04

1. Laden Sie die JDK-Download-Adresse herunter我下載...

CSS3 erstellt eine Webanimation, um einen springenden Balleffekt zu erzielen

Grundlegende Vorbereitung Für diese Implementieru...

Detaillierte Erläuterung des Ausführungsprozesses der MySQL-Update-Anweisung

Es gab bereits einen Artikel über den Ausführungs...

Detaillierter Prozess zum Erstellen von mysql5.7.29 unter Centos7 von Linux

1. MySQL herunterladen 1.1 Download-Adresse https...