HBase
 sql >> Datenbank >  >> NoSQL >> HBase

Einschränkungen von Hadoop, Möglichkeiten zur Behebung von Hadoop-Nachteilen

Wir haben Hadoop-Funktionen besprochen in unserem vorherigen Hadoop-Tutorial. Jetzt werden wir die Einschränkungen von Hadoop behandeln. Es gibt verschiedene Nachteile von Apache Hadoop-Frameworks.

Zum Beispiel Problem mit kleinen Dateien, langsame Verarbeitung, nur Stapelverarbeitung, Latenz, Sicherheitsproblem, Schwachstelle, kein Caching usw.

All diese Einschränkungen von Hadoop werden wir in diesem Hadoop-Tutorial ausführlich besprechen.

Was ist Hadoop?

Apache Hadoop ist ein Open-Source-Software-Framework für die verteilte Speicherung und Verarbeitung großer Datenmengen. Open Source bedeutet, dass es frei verfügbar ist und sogar wir den Quellcode gemäß den Anforderungen ändern können.

Apache Hadoop ermöglicht es auch, Anwendungen auf einem System mit Tausenden von Knoten auszuführen. Sein verteiltes Dateisystem bietet schnelle Datenübertragungsraten zwischen Knoten.

Außerdem kann das System im Falle eines Knotenausfalls weiter betrieben werden. Hauptmerkmale von Hadoop sind wie folgt:

  • In Apache Hadoop sind Daten trotz Maschinenausfall aufgrund vieler Datenkopien verfügbar. Wenn also eine Maschine abstürzt, kann man über einen anderen Pfad auf die Daten zugreifen.
  • Apache Hadoop ist skalierbar, da dem Knoten einfach neue Hardware hinzugefügt werden kann.
  • Hadoop ist hochgradig fehlertolerant, da standardmäßig 3 Kopien jedes Blocks im Cluster gespeichert werden. Wenn also ein Knoten im Cluster ausfällt, können Daten auf diesem Knoten problemlos von dem anderen Knoten wiederhergestellt werden.
  • Apache Hadoop läuft auf einem Cluster handelsüblicher Hardware, die nicht sehr teuer ist.
  • In Apache Hadoop werden Daten trotz Hardwarefehler aufgrund der Replikation von Daten auf dem Cluster zuverlässig auf dem Cluster gespeichert.

Obwohl Hadoop das leistungsfähigste Tool von Big Data ist, gibt es verschiedene Einschränkungen. Aufgrund der Einschränkungen von Hadoop entstanden Apache Spark und Apache Flink.

Einschränkungen von Hadoop

Verschiedene Einschränkungen von Apache Hadoop werden unten zusammen mit ihrer Lösung angegeben-

a. Probleme mit kleinen Dateien

Das Hauptproblem bei Hadoop ist, dass es nicht für kleine Datenmengen geeignet ist. HDFS aufgrund seines Designs mit hoher Kapazität nicht in der Lage ist, das zufällige Lesen kleiner Dateien zu unterstützen.

Kleine Dateien sind kleiner als die HDFS-Blockgröße (Standard 128 MB). Wenn Sie diese große Anzahl kleiner Dateien speichern, kann HDFS diese vielen kleinen Dateien nicht verarbeiten.

Da HDFS entwickelt wurde, um mit einer kleinen Anzahl großer Dateien zum Speichern großer Datensätze zu arbeiten, anstatt mit einer großen Anzahl kleiner Dateien. Wenn viele viele kleine Dateien vorhanden sind, wird der NameNode überlastet, da er den Namespace von HDFS speichert.

Lösung: 

Führen Sie einfach die kleinen Dateien zusammen, um größere Dateien zu erstellen, und kopieren Sie dann größere Dateien in HDFS.

Hadoop-Archive (HAR-Dateien) befasst sich mit dem Problem vieler kleiner Dateien. Hadoop Archives funktioniert durch den Aufbau eines mehrschichtigen Dateisystems auf HDFS.

Mit dem Befehl help Hadoop archive werden HAR-Dateien erstellt; Dadurch wird ein MapReduce-Job ausgeführt, um die zu archivierenden Dateien in eine kleine Anzahl von HDFS-Dateien zu packen. Das Lesen von Dateien über HAR ist nicht effizienter als das Lesen über HDFS.

Da jeder HAR-Dateizugriff zwei gelesene Indexdateien sowie die zu lesende Datendatei erfordert, wird dies langsamer.

Sequenzdateien überwinden auch das Problem kleiner Dateien. Dabei verwenden wir den Dateinamen als Schlüssel und den Dateiinhalt als Wert.

Indem wir ein Programm für Dateien (100 KB) schreiben, können wir sie in eine einzelne Sequenzdatei packen und sie dann in einer Streaming-Weise verarbeiten, die auf der Sequenzdatei arbeitet.

MapReduce in Hadoop kann Sequence-Dateien in Chunks aufteilen und auf jedem Chunk unabhängig arbeiten, da Sequence-Dateien teilbar sind.

Durch das Speichern von Dateien in Hbase können wir das Problem der kleinen Dateien überwinden. Wir speichern nicht wirklich Millionen kleiner Dateien in HBase, sondern fügen den binären Inhalt der Datei einer Zelle hinzu.

b. Langsame Verarbeitungsgeschwindigkeit

MapReduce verarbeitet eine riesige Datenmenge. In Hadoop funktioniert MapReduce, indem es die Verarbeitung in Phasen aufteilt:Map und Reduzieren . MapReduce benötigt also viel Zeit, um diese Aufgaben auszuführen, wodurch die Latenz erhöht wird. Reduziert daher die Verarbeitungsgeschwindigkeit.

Lösung:

Durch In-Memory-Verarbeitung von Daten überwindet Apache Spark dieses Problem. Wie bei der In-Memory-Verarbeitung wird keine Zeit für das Verschieben der Daten/Prozesse auf die und aus der Festplatte aufgewendet, wodurch sie schneller wird.

Apache Spark ist im Vergleich zu MapReduce 100 Mal schneller, da es alles im Speicher verarbeitet.

Flink kann auch dieses Problem lösen. Flink verarbeitet aufgrund seiner Streaming-Architektur schneller als Spark.

c. Unterstützung nur für Stapelverarbeitung

Hadoop unterstützt nur die Stapelverarbeitung, es ist nicht für das Streamen von Daten geeignet. Daher ist die Gesamtleistung langsamer. Das MapReduce-Framework nutzt den Arbeitsspeicher des Hadoop-Clusters nicht maximal.

Lösung

Apache Spark löst dieses Problem, da es die Stream-Verarbeitung unterstützt. Die Spark-Stream-Verarbeitung ist jedoch nicht so effizient wie Flink, da sie Mikro-Batch-Verarbeitung verwendet. Apache Flink verbessert die Gesamtleistung, da es sowohl eine einzelne Laufzeit für das Streaming als auch die Stapelverarbeitung bietet.

d. Keine Echtzeitverarbeitung

Apache Hadoop ist ein Stapelverarbeitungs-Framework. Das bedeutet, dass eine riesige Datenmenge eingegeben, verarbeitet und das Ergebnis produziert wird.

Die Stapelverarbeitung ist sehr effizient für die Verarbeitung eines großen Datenvolumens, hängt jedoch von der Größe der zu verarbeitenden Daten und der Rechenleistung des Systems ab. eine Ausgabe kann erheblich verzögert werden. Apache Hadoop ist nicht für die Echtzeitverarbeitung geeignet.

Lösung:

Spark ist für die Stream-Verarbeitung geeignet. Die Dampfverarbeitung liefert kontinuierliche Eingabe-/Ausgabedaten. Es verarbeitet Daten innerhalb kürzester Zeit.

Flink bietet eine einzelne Laufzeit sowohl für Streamings als auch für die Stapelverarbeitung.

e. Iterative Verarbeitung

Apache Hadoop ist für die iterative Verarbeitung nicht sehr effizient. Da Hadoop keinen zyklischen Datenfluss unterstützt (d. h. eine Kette von Stufen, in der jede Ausgabe der vorherigen Stufe die Eingabe für die nächste Stufe ist).

Lösung:

Spark überwindet dieses Problem. Da Apache Spark auf Daten aus dem RAM statt von der Festplatte zugreift. Dadurch wird die Leistung eines iterativen Algorithmus, der wiederholt auf denselben Datensatz zugreift, erheblich verbessert.

In Apache Spark muss für die iterative Verarbeitung jede Iteration separat geplant und ausgeführt werden.

f. Latenz

MapReduce in Hadoop ist langsamer, da es unterschiedliche Formate, Strukturen und große Datenmengen unterstützt. In MapReduce nimmt Map einen Datensatz und wandelt ihn in einen anderen Datensatz um, wobei ein einzelnes Element in ein Schlüssel-Wert-Paar zerlegt wird.

Reduce nimmt die Ausgabe der Karte als und Reduce nimmt die Ausgabe der Karte als Eingabe und verarbeitet sie weiter. MapReduce benötigt viel Zeit, um diese Aufgaben auszuführen, wodurch die Latenz erhöht wird.

Lösung:

Apache Spark kann dieses Problem reduzieren. Obwohl Spark das Batch-System ist, ist es relativ schneller, da es einen Großteil der Eingabedaten von RDD im Arbeitsspeicher zwischenspeichert. Apache Flink-Datenstreaming erzielt eine geringe Latenz und einen hohen Durchsatz.

g. Keine Benutzerfreundlichkeit

MapReduce-Entwickler in Hadoop müssen Code für jede einzelne Operation übergeben, was die Arbeit sehr erschwert. In Hadoop hat MapReduce keinen interaktiven Modus, aber das Hinzufügen von hive und pig macht die Arbeit mit MapReduce etwas einfacher.

Lösung:

Spark hat dieses Problem überwunden, da Spark über einen interaktiven Modus verfügt. Damit sowohl Entwickler als auch Benutzer zwischenzeitliches Feedback für Anfragen und andere Aktivitäten erhalten können.

Da Spark über unzählige hochrangige Operatoren verfügt, ist es einfach, Spark zu programmieren. Man kann auch Apache Flink verwenden, da es auch High-Level-Operatoren hat.

h. Sicherheitsproblem

Apache Hadoop ist eine Herausforderung bei der Wartung der komplexen Anwendungen. Hadoop fehlt die Verschlüsselung auf Speicher- und Netzwerkebene, was ein wichtiger Grund zur Sorge ist. Apache Hadoop unterstützt die schwer zu verwaltende Kerberos-Authentifizierung.

Lösung:

Apache Spark bietet einen Sicherheitsbonus. Wenn Sie Apache Spark in HDFS ausführen, kann es HDFS-ACLs und Berechtigungen auf Dateiebene verwenden.

i. Von Natur aus anfällig

Apache Hadoop ist in Java geschrieben. Java ist eine sehr beliebte Sprache, daher wird Java am stärksten von Cyberkriminellen ausgenutzt.

j. Kein Caching

Apache Hadoop ist für das Caching nicht effizient. MapReduce kann die Zwischendaten nicht für die weitere Anforderung im Arbeitsspeicher zwischenspeichern, wodurch die Leistung von Hadoop verringert wird.

Lösung:

Spark und Flink lösen dieses Problem. Spark- und Flink-Cachedaten im Arbeitsspeicher für weitere Iterationen, die die Gesamtleistung verbessern.

k. Langer Code

Apache Hadoop hat 1.20.000 Codezeilen. Die Anzahl der Zeilen ergibt die Anzahl der Fehler. Daher wird die Ausführung der Programme länger dauern.

Lösung:

Spark und Flink sind in Scala und Java geschrieben. Die Implementierung erfolgt jedoch in Scala, sodass die Anzahl der Codezeilen geringer ist als bei Hadoop. Somit dauert es weniger Zeit, die Programme auszuführen.

Schlussfolgerung

Als Ergebnis der Einschränkungen von Hadoop entstand die Notwendigkeit von Spark und Flink. Machen Sie das System also benutzerfreundlicher, um mit einer großen Datenmenge zu spielen.

Apache Spark bietet In-Memory-Verarbeitung von Daten und verbessert so die Verarbeitungsgeschwindigkeit. Flink verbessert die Leistung, da es sowohl eine einzige Laufzeit für das Streaming als auch die Stapelverarbeitung bietet.

Spark bietet Sicherheitsbonus. Daher können all diese Hadoop-Einschränkungen durch die Verwendung anderer Big-Data-Technologien wie Apache Spark und Flink behoben werden.

Wenn Sie andere Einschränkungen von Hadoop finden, teilen Sie uns dies bitte mit, indem Sie einen Kommentar in einem der unten angegebenen Abschnitte hinterlassen.