
Equipe bitt Ingenieur Rahul Bhatia vu Clairvoyant iwwer wéi eng Dateiformater et a grousse Daten sinn, wat sinn déi heefegst Feature vun Hadoop Formater a wéi ee Format besser ass ze benotzen.
Firwat sinn verschidden Dateiformate gebraucht?
E grousse Performance-Flaschenhals fir HDFS-aktivéiert Uwendungen wéi MapReduce a Spark ass d'ZÀit déi et brauch fir Daten ze sichen, ze liesen an ze schreiwen. Dës Probleemer ginn zesummegesat vun der Schwieregkeet fir grouss Datesets ze managen wa mir en evoluéierende Schema hunn anstatt e fixen, oder wann et e puer SpÀicherbeschrÀnkungen sinn.
D'Veraarbechtung vu groussen Daten erhéicht d'Laascht op de SpÀichersubsystem - Hadoop spÀichert Daten redundant fir Feelertoleranz z'erreechen. ZousÀtzlech zu Disken sinn de Prozessor, Netz, Input / Output System, a sou weider gelueden. Wéi de Volume vun den Donnéeën wiisst, ginn och d'KÀschte fir d'Veraarbechtung an d'SpÀichere erop.
Verschidde Dateiformate an erfonnt fir genee dës Problemer ze léisen. Wielt de passenden Dateiformat kann e puer bedeitend Virdeeler ubidden:
- Méi séier LieszÀit.
- Méi séier OpnamzÀit.
- Gedeelt Dateien.
- ĂnnerstĂ«tzung fir Schema Evolutioun.
- Erweidert Kompressioun ĂnnerstĂ«tzung.
E puer Dateiformate si fir allgemeng Benotzung geduecht, anerer fir méi spezifesch Uwendungen, an e puer sinn entwéckelt fir spezifesch Datencharakteristiken ze treffen. Also de Choix ass wierklech zimlech grouss.
Avro Dateiformat
fir daten serialization Avro ass vill benotzt - et String baséiert, dat ass, e String Datespeicherformat an Hadoop. Et spÀichert de Schema am JSON Format, sou datt et einfach ass ze liesen an ze interpretéieren vun all Programm. D'Donnéeën selwer sinn am binÀre Format, kompakt an effizient.
Dem Avro sÀi Serialiséierungssystem ass Sproochneutral. Dateien kënnen a verschiddene Sprooche veraarbecht ginn, aktuell C, C++, C#, Java, Python a Ruby.
E SchlĂ«ssel Feature vun Avro ass seng robust ĂnnerstĂ«tzung fir Dateschemaen dĂ©i sech mat der ZĂ€it Ă€nneren, dat heescht evoluĂ©ieren. Avro versteet Schema Ănnerungen - Felder lĂ€schen, derbĂ€isetzen oder Ă€nneren.
Avro ënnerstëtzt eng Vielfalt vun Datestrukturen. Zum Beispill kënnt Dir e Rekord erstellen deen en Array enthÀlt, e enumeréierten Typ an e Subrecord.

Dëst Format ass ideal fir an d'Landung (Iwwergangs) Zone vun engem Dateséi ze schreiwen (, oder Data Lake - eng Sammlung vun Instanzen fir verschidden Zorte vun Daten zousÀtzlech zu Datenquellen direkt ze spÀicheren).
Also ass dëst Format am Beschten gëeegent fir an d'Landungszone vun engem Dateséi ze schreiwen aus de folgende Grënn:
- Daten aus dëser Zone ginn normalerweis a senger Ganzheet gelies fir weider Veraarbechtung duerch Downstream Systemer - an e Rei-baséiert Format ass méi effizient an dësem Fall.
- Downstream Systemer kënnen einfach Schema Dëscher aus Dateien recuperéieren - kee Besoin fir Schemaen separat an externen Metalagerung ze spÀicheren.
- All Ănnerung vum ursprĂ©ngleche Schema gĂ«tt einfach veraarbecht (Schema Evolutioun).
Parquet Dateiformat
Parquet ass en Open Source Dateiformat fir Hadoop dat spÀichert nestéiert Datestrukturen am flaach Kolumnformat.
Am Verglach mat der traditioneller Zeil Approche ass Parquet méi effizient wat d'Lagerung an d'Leeschtung ugeet.
Dëst ass besonnesch nëtzlech fir Ufroen déi spezifesch Kolonnen aus enger breeder (vill Kolonnen) Dësch liesen. Dank dem Dateiformat ginn nëmmen déi néideg Kolonnen gelies, sou datt I/O op e Minimum gehale gëtt.
Eng kleng Digression an ErklÀrung: Fir de Parquet Dateiformat an Hadoop besser ze verstoen, loosst eis kucken wat e Kolonnbaséiert - also columnar - Format ass. Dëst Format spÀichert Àhnlech WÀerter fir all Kolonn zesummen.
, de Rekord enthÀlt d'ID, Numm an Departement Felder. An dësem Fall ginn all d'ID KolonnwÀerter zesummen gespÀichert, sou wéi d'Name Kolonn WÀerter, a sou weider. Den Dësch wÀert esou ausgesinn:
ID
Numm
Pompjeeën
1
emp1
d1
2
emp2
d2
3
emp3
d3
Am Stringformat ginn d'Donnéeën wéi follegt gespÀichert:
1
emp1
d1
2
emp2
d2
3
emp3
d3
An engem columnar Dateiformat ginn déiselwecht Donnéeën esou gespÀichert:
1
2
3
emp1
emp2
emp3
d1
d2
d3
De Kolumnformat ass méi effizient wann Dir verschidde Spalten aus enger Tabelle muss ufroen. Et liest nëmmen déi erfuerderlech Kolonnen well se niewendrun sinn. Op dës Manéier ginn I/O Operatiounen op e Minimum gehal.
Zum Beispill braucht Dir nëmmen d'Kolonn NAME. IN All Rekord am Dataset muss gelueden ginn, parséiert vum Feld, an dann d'NAME Daten extrahéiert ginn. De Kolonnformat erlaabt Iech direkt an d'Numm Kolonn erofzebauen well all d'WÀerter fir dës Kolonn zesumme gelagert sinn. Dir musst net déi ganz Opnam scannen.
Also verbessert de columnar Format d'Ufroleistung well et manner Lookup ZÀit erfuerdert fir op déi erfuerderlech Kolonnen ze kommen a reduzéiert d'Zuel vun den I/O Operatiounen well nëmmen déi gewënschte Kolonnen gelies ginn.
Ee vun de eenzegaarteg Fonctiounen ass, datt an dësem Format et kann spÀicheren Daten mat nestéierte Strukturen. Dëst bedeit datt an enger Parquet-Datei och nestéiert Felder individuell gelies kënne ginn ouni all d'Felder an der nestéierter Struktur ze liesen. Parquet benotzt e Schredder- a Montagealgorithmus fir nestéiert Strukturen ze spÀicheren.

Fir de Parquet Dateiformat an Hadoop ze verstoen, musst Dir déi folgend Begrëffer wëssen:
- Grupp vu Saiten (Rei Grupp): logesch horizontal Divisioun vun Daten an Zeile. Eng Rei Grupp besteet aus engem Fragment vun all Kolonn am Datesaz.
- Kolonn Fragment (Kolonn Chunk): E Fragment vun enger spezifescher Kolonn. Dës Kolonnfragmenter liewen an enger spezifescher Grupp vu Reihen a si garantéiert kontinuéierlech an der Datei.
- SÀit (SÀit): Kolonn Fragmenter sinn an SÀiten ënnerdeelt schrëftlech eent nom aneren. D'SÀiten hunn e gemeinsamen Titel, sou datt Dir onnéideg iwwerspréngt beim Liesen.

Hei enthÀlt den Titel just déi magesch Zuel PAR1 (4 Bytes) déi d'Datei als Parquet Datei identifizéiert.
De Fousszeil seet folgend:
- Datei Metadaten déi d'Startkoordinate vun de Metadaten vun all Kolonn enthalen. Wann Dir liest, musst Dir als éischt d'Metadate vun der Datei liesen fir all d'Spaltfragmenter ze fannen déi interesséiert sinn. D'Kolonn Portiounen sollen dann sequenziell gelies ginn. Aner Metadaten enthalen d'Format Versioun, Schema, an all zousÀtzlech Schlëssel-WÀert Pairen.
- MetadatenlÀngt (4 Bytes).
- magesch Zuel PAR1 (4 Bytes).
ORC Dateiformat
Optimiséiert Zeil-Kolonn Dateiformat (Optimiséierter Zeil Kolonn, ) bitt e ganz effiziente Wee fir Daten ze spÀicheren a gouf entwéckelt fir d'AschrÀnkungen vun anere Formater ze iwwerwannen. SpÀichert Daten an enger perfekt kompakter Form, erlaabt Iech onnéideg Detailer ze sprangen - ouni datt Dir grouss, komplex oder manuell erhale Indexen erfuerdert.
Virdeeler vum ORC Format:
- Eng Datei ass d'Ausgab vun all Aufgab, wat d'Laascht op den NameNode (Numm Node) reduzéiert.
- ĂnnerstĂ«tzung fir Hive Datentypen, dorĂ«nner DateTime, Dezimal a komplex Datentypen (Struktur, LĂ«scht, Kaart a Gewerkschaft).
- Simultan Liese vun der selwechter Datei duerch verschidde RecordReader Prozesser.
- D'Kapazitéit fir Dateien opzedeelen ouni fir Markéierer ze scannen.
- SchÀtzung vun der maximal méiglech Heap Erënnerung Bewëllegung fir liesen / schreiwen Prozesser baséiert op Informatiounen am Fichier Fousszeilen.
- Metadaten ginn am Protocol Buffers binÀre Serialiséierungsformat gespÀichert, wat et erlaabt Felder ze addéieren an ze lÀschen.

ORC spÀichert Sammlunge vu Strings an enger eenzeger Datei, a bannent der Sammlung ginn Stringdaten an engem Kolumnformat gespÀichert.
Eng ORC Datei spÀichert Gruppe vu Linnen genannt StrÀifen an ënnerstëtzend Informatioun am Fousszeil vun der Datei. De Postscript um Enn vun der Datei enthÀlt Kompressiounsparameter an d'Gréisst vum kompriméierte Fousszeil.
D'Standardstreifgréisst ass 250 MB. Duerch sou grouss StrÀifen gëtt d'Liesen vum HDFS méi effizient gemaach: a grousse kontinuéierleche Blöcke.
De Fichier Footer notéiert d'Lëscht vun de Bunnen an der Datei, d'Zuel vun de Reihen pro Spuer, an d'Datentyp vun all Kolonn. De resultéierende WÀert vu Grof, Min, Max an Zomm fir all Kolonn gëtt och do geschriwwen.
De Fousszeil vun der StrÀif enthÀlt e Verzeechnes vu Streamplazen.
Zeildaten gi benotzt beim Scannen vun Dëscher.
Indexdaten enthalen de Minimum a Maximum WÀerter fir all Kolonn an d'Positioun vun de Reihen an all Kolonn. ORC Indexe ginn nëmme benotzt fir StrÀifen a Reiegruppen ze wielen, net fir Ufroen ze beÀntweren.
Verglach vu verschiddene Dateiformate
Avro am Verglach zu Parquet
- Avro ass e Zeillagerformat, wÀhrend Parquet Daten a Kolonnen spÀichert.
- Parquet ass besser gëeegent fir analytesch Ufroen, dat heescht d'Liesoperatioune an d'Ufroen vun Daten si vill méi effizient wéi Schreiwen.
- Schreifoperatiounen an Avro gi méi effizient gemaach wéi am Parquet.
- Avro beschÀftegt sech mat Circuit Evolutioun méi reift. Parquet ënnerstëtzt nëmmen Schema Zousatz, wÀhrend Avro multifunktionell Evolutioun ënnerstëtzt, dat heescht Spalten addéieren oder Ànneren.
- Parquet ass ideal fir eng Ănnersetze vu Spalten an enger Multi-Kolonn Tabell ze froen. Avro ass gĂ«eegent fir ETL Operatiounen wou mir all Kolonnen ufroen.
ORC vs Parquet
- Parquet GeschÀfter nested Daten besser.
- ORC ass besser gëeegent fir Pushdown ze predikéieren.
- ORC ënnerstëtzt ACID Eegeschaften.
- ORC kompriméiert Daten besser.
Wat soss iwwer dëst Thema ze liesen:
- .
- .
- .
Source: will.com
