Dateiformate in Big Data: ein kurzes Bildungsprogramm

Dateiformate in Big Data: ein kurzes Bildungsprogramm
Wettergottheit von Remarin

Team Mail.ru Cloud-Lösungen bietet Artikel ĂŒbersetzung Ingenieur Rahul Bhatia von Clairvoyant darĂŒber, welche Dateiformate es in Big Data gibt, was die hĂ€ufigsten Merkmale von Hadoop-Formaten sind und welches Format besser zu verwenden ist.

Warum werden unterschiedliche Dateiformate benötigt?

Ein großer Leistungsengpass fĂŒr HDFS-fĂ€hige Anwendungen wie MapReduce und Spark ist die Zeit, die zum Suchen, Lesen und Schreiben von Daten benötigt wird. Diese Probleme werden durch die Schwierigkeit verschĂ€rft, große Datenmengen zu verwalten, wenn wir ein sich entwickelndes Schema anstelle eines festen Schemas haben oder wenn es einige SpeicherbeschrĂ€nkungen gibt.

Die Verarbeitung großer Datenmengen erhöht die Belastung des Speichersubsystems – Hadoop speichert Daten redundant, um Fehlertoleranz zu erreichen. Neben Festplatten werden auch Prozessor, Netzwerk, Ein-/Ausgabesystem usw. geladen. Mit zunehmender Datenmenge steigen auch die Kosten fĂŒr deren Verarbeitung und Speicherung.

Verschiedene Dateiformate in Hadoop erfunden, um genau diese Probleme zu lösen. Die Auswahl des geeigneten Dateiformats kann einige erhebliche Vorteile bieten:

  1. Schnellere Lesezeit.
  2. Schnellere Aufnahmezeit.
  3. Geteilte Dateien.
  4. UnterstĂŒtzung fĂŒr die Schemaentwicklung.
  5. Erweiterte KomprimierungsunterstĂŒtzung.

Einige Dateiformate sind fĂŒr den allgemeinen Gebrauch gedacht, andere fĂŒr spezifischere Zwecke und wieder andere sind darauf ausgelegt, bestimmte Datenmerkmale zu erfĂŒllen. Die Auswahl ist also wirklich recht groß.

Avro-Dateiformat

fĂŒr Datenserialisierung Avro ist weit verbreitet - es stringbasiert, also ein String-Datenspeicherformat in Hadoop. Es speichert das Schema im JSON-Format, sodass es von jedem Programm leicht gelesen und interpretiert werden kann. Die Daten selbst liegen im BinĂ€rformat vor, sind kompakt und effizient.

Das Serialisierungssystem von Avro ist sprachneutral. Dateien können in einer Vielzahl von Sprachen verarbeitet werden, derzeit C, C++, C#, Java, Python und Ruby.

Ein Hauptmerkmal von Avro ist seine robuste UnterstĂŒtzung fĂŒr Datenschemata, die sich im Laufe der Zeit Ă€ndern, also weiterentwickeln. Avro versteht SchemaĂ€nderungen – das Löschen, HinzufĂŒgen oder Ändern von Feldern.

Avro unterstĂŒtzt eine Vielzahl von Datenstrukturen. Sie können beispielsweise einen Datensatz erstellen, der ein Array, einen AufzĂ€hlungstyp und einen Unterdatensatz enthĂ€lt.

Dateiformate in Big Data: ein kurzes Bildungsprogramm
Dieses Format eignet sich ideal zum Schreiben in die Landezone (Übergangszone) eines Data Lake (Datenseeoder Data Lake – eine Sammlung von Instanzen zum Speichern verschiedener Datentypen zusĂ€tzlich zu Datenquellen direkt).

Daher eignet sich dieses Format aus folgenden GrĂŒnden am besten zum Schreiben in die Landezone eines Data Lake:

  1. Daten aus dieser Zone werden in der Regel vollstĂ€ndig zur Weiterverarbeitung durch nachgelagerte Systeme gelesen – ein zeilenbasiertes Format ist in diesem Fall effizienter.
  2. Nachgelagerte Systeme können Schematabellen problemlos aus Dateien abrufen – Schemata mĂŒssen nicht separat in einem externen Metaspeicher gespeichert werden.
  3. Jede Änderung am ursprĂŒnglichen Schema kann problemlos verarbeitet werden (Schema-Evolution).

Parquet-Dateiformat

Parquet ist ein Open-Source-Dateiformat fĂŒr Hadoop, das speichert verschachtelte Datenstrukturen im flachen Spaltenformat.

Im Vergleich zum herkömmlichen Reihenansatz ist Parkett hinsichtlich Lagerung und Leistung effizienter.

Dies ist besonders nĂŒtzlich fĂŒr Abfragen, die bestimmte Spalten aus einer breiten Tabelle (viele Spalten) lesen. Dank des Dateiformats werden nur die notwendigen Spalten gelesen, sodass I/O auf ein Minimum beschrĂ€nkt wird.

Ein kleiner Exkurs und eine ErklĂ€rung: Um das Parquet-Dateiformat in Hadoop besser zu verstehen, sehen wir uns an, was ein spaltenbasiertes – also spaltenorientiertes – Format ist. Dieses Format speichert Ă€hnliche Werte fĂŒr jede Spalte zusammen.

BeispielsweiseenthĂ€lt der Datensatz die Felder „ID“, „Name“ und „Abteilung“. In diesem Fall werden alle ID-Spaltenwerte zusammen gespeichert, ebenso die Namensspaltenwerte usw. Die Tabelle sieht in etwa so aus:

ID
Name
Abteilung

1
emp1
d1

2
emp2
d2

3
emp3
d3

Im String-Format werden die Daten wie folgt gespeichert:

1
emp1
d1
2
emp2
d2
3
emp3
d3

In einem spaltenorientierten Dateiformat werden dieselben Daten wie folgt gespeichert:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Das Spaltenformat ist effizienter, wenn Sie mehrere Spalten aus einer Tabelle abfragen mĂŒssen. Es werden nur die erforderlichen Spalten gelesen, da diese benachbart sind. Auf diese Weise werden I/O-VorgĂ€nge auf ein Minimum beschrĂ€nkt.

Beispielsweise benötigen Sie nur die Spalte NAME. IN String-Format Jeder Datensatz im Datensatz muss geladen, nach Feldern analysiert und dann die NAME-Daten extrahiert werden. Das Spaltenformat ermöglicht Ihnen einen direkten Drilldown zur Spalte „Name“, da alle Werte fĂŒr diese Spalte zusammen gespeichert werden. Sie mĂŒssen nicht die gesamte Aufnahme scannen.

Somit verbessert das Spaltenformat die Abfrageleistung, da es weniger Suchzeit benötigt, um zu den erforderlichen Spalten zu gelangen, und reduziert die Anzahl der E/A-VorgĂ€nge, da nur die gewĂŒnschten Spalten gelesen werden.

Eines der Alleinstellungsmerkmale Parkett ist, dass es in diesem Format möglich ist Speichern Sie Daten mit verschachtelten Strukturen. Dies bedeutet, dass in einer Parquet-Datei auch verschachtelte Felder einzeln gelesen werden können, ohne dass alle Felder in der verschachtelten Struktur gelesen werden mĂŒssen. Parkett verwendet einen Schredder- und Montagealgorithmus, um verschachtelte Strukturen zu speichern.

Dateiformate in Big Data: ein kurzes Bildungsprogramm
Um das Parquet-Dateiformat in Hadoop zu verstehen, mĂŒssen Sie die folgenden Begriffe kennen:

  1. Gruppe von Saiten (Zeilengruppe): logische horizontale Aufteilung der Daten in Zeilen. Eine Zeilengruppe besteht aus einem Fragment jeder Spalte im Datensatz.
  2. Spaltenfragment (Spaltenblock): Ein Fragment einer bestimmten Spalte. Diese Spaltenfragmente befinden sich in einer bestimmten Zeilengruppe und sind in der Datei garantiert zusammenhÀngend.
  3. Seite (Seite): Spaltenfragmente werden in nacheinander geschriebene Seiten unterteilt. Die Seiten haben einen gemeinsamen Titel, sodass Sie beim Lesen unnötige Titel ĂŒberspringen können.

Dateiformate in Big Data: ein kurzes Bildungsprogramm
Hier enthÀlt der Titel nur die magische Zahl PAR1 (4 Bytes), der die Datei als Parquet-Datei identifiziert.

In der Fußzeile steht folgendes:

  1. Dateimetadaten, die die Startkoordinaten der Metadaten jeder Spalte enthalten. Beim Lesen mĂŒssen Sie zunĂ€chst die Metadaten der Datei lesen, um alle relevanten Spaltenfragmente zu finden. Die Spaltenteile sollten dann nacheinander gelesen werden. Zu den weiteren Metadaten gehören die Formatversion, das Schema und alle zusĂ€tzlichen SchlĂŒssel-Wert-Paare.
  2. MetadatenlÀnge (4 Bytes).
  3. magische Zahl PAR1 (4 Bytes).

ORC-Dateiformat

Optimiertes Zeilen-Spalten-Dateiformat (Optimierte Zeilenspalte, ORC) bietet eine sehr effiziente Möglichkeit zum Speichern von Daten und wurde entwickelt, um die EinschrĂ€nkungen anderer Formate zu ĂŒberwinden. Speichert Daten in perfekt kompakter Form, sodass Sie unnötige Details ĂŒberspringen können – ohne dass große, komplexe oder manuell gepflegte Indizes erstellt werden mĂŒssen.

Vorteile des ORC-Formats:

  1. Eine Datei ist die Ausgabe jeder Aufgabe, wodurch die Belastung des NameNode (Namensknoten) verringert wird.
  2. UnterstĂŒtzung fĂŒr Hive-Datentypen, einschließlich DateTime, dezimale und komplexe Datentypen (Struktur, Liste, Karte und Union).
  3. Gleichzeitiges Lesen derselben Datei durch verschiedene RecordReader-Prozesse.
  4. Möglichkeit, Dateien zu teilen, ohne nach Markierungen zu suchen.
  5. SchĂ€tzung der maximal möglichen Heap-Speicherbelegung fĂŒr Lese-/SchreibvorgĂ€nge anhand der Informationen im Dateifuß.
  6. Metadaten werden im binĂ€ren Serialisierungsformat Protocol Buffers gespeichert, das das HinzufĂŒgen und Entfernen von Feldern ermöglicht.

Dateiformate in Big Data: ein kurzes Bildungsprogramm
ORC speichert Zeichenfolgensammlungen in einer einzigen Datei, und innerhalb der Sammlung werden Zeichenfolgendaten in einem Spaltenformat gespeichert.

In einer ORC-Datei werden Gruppen von Linien, sogenannte Streifen, und unterstĂŒtzende Informationen in der Fußzeile der Datei gespeichert. Das Postscript am Ende der Datei enthĂ€lt Komprimierungsparameter und die GrĂ¶ĂŸe der komprimierten Fußzeile.

Die Standard-Stripe-GrĂ¶ĂŸe betrĂ€gt 250 MB. Aufgrund dieser großen Streifen erfolgt das Lesen aus HDFS effizienter: in großen zusammenhĂ€ngenden Blöcken.

In der Dateifußzeile werden die Liste der Spuren in der Datei, die Anzahl der Zeilen pro Spur und der Datentyp jeder Spalte aufgezeichnet. Dort wird auch der resultierende Wert von count, min, max und sum fĂŒr jede Spalte geschrieben.

Die Fußzeile des Streifens enthĂ€lt ein Verzeichnis der Stream-Standorte.

Beim Scannen von Tabellen werden Zeilendaten verwendet.

Zu den Indexdaten gehören die Mindest- und Höchstwerte fĂŒr jede Spalte sowie die Position der Zeilen in jeder Spalte. ORC-Indizes werden nur zur Auswahl von Stripes und Zeilengruppen verwendet, nicht zur Beantwortung von Abfragen.

Vergleich verschiedener Dateiformate

Avro im Vergleich zu Parkett

  1. Avro ist ein Zeilenspeicherformat, wÀhrend Parquet Daten in Spalten speichert.
  2. Parquet eignet sich besser fĂŒr analytische Abfragen, was bedeutet, dass LesevorgĂ€nge und das Abfragen von Daten wesentlich effizienter sind als SchreibvorgĂ€nge.
  3. SchreibvorgĂ€nge werden in Avro effizienter ausgefĂŒhrt als in Parquet.
  4. Avro befasst sich ausgereifter mit der Schaltungsentwicklung. Parquet unterstĂŒtzt nur das HinzufĂŒgen von Schemata, wĂ€hrend Avro die multifunktionale Evolution unterstĂŒtzt, also das HinzufĂŒgen oder Ändern von Spalten.
  5. Parquet eignet sich ideal zum Abfragen einer Teilmenge von Spalten in einer mehrspaltigen Tabelle. Avro eignet sich fĂŒr ETL-Operationen, bei denen wir alle Spalten abfragen.

ORC gegen Parquet

  1. Parquet speichert verschachtelte Daten besser.
  2. ORC eignet sich besser zum PrÀdikat-Pushdown.
  3. ORC unterstĂŒtzt ACID-Eigenschaften.
  4. ORC komprimiert Daten besser.

Was gibt es sonst noch zum Thema zu lesen?:

  1. Big-Data-Analyse in der Cloud: Wie ein Unternehmen datenorientiert werden kann.
  2. Ein bescheidener Leitfaden fĂŒr Datenbankschemata.
  3. Unser Telegram-Kanal zum Thema digitale Transformation.

Source: habr.com

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz und VPS-VDS-Servern đŸ”„ Kaufen Sie zuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster