Fájlformátumok big data-ban: egy rövid oktatási program

Fájlformátumok big data-ban: egy rövid oktatási program
Időjárás istenség, Remarin

Csapat Mail.ru Cloud Solutions ajánlatok cikk fordítása Rahul Bhatia mérnök a Clairvoyanttól arról, hogy milyen fájlformátumok vannak a big data-ban, melyek a Hadoop formátumok leggyakoribb jellemzői, és melyik formátumot érdemes használni.

Miért van szükség különböző fájlformátumokra?

A HDFS-kompatibilis alkalmazások, például a MapReduce és a Spark egyik fő teljesítménybeli szűk keresztmetszete az adatok kereséséhez, olvasásához és írásához szükséges idő. Ezeket a problémákat tetézi a nagy adatkészletek kezelésének nehézsége, ha nem rögzített, hanem fejlődő sémánk van, vagy ha vannak bizonyos tárolási korlátozások.

A nagyméretű adatok feldolgozása megnöveli a tárolási alrendszer terhelését – a Hadoop redundánsan tárolja az adatokat a hibatűrés érdekében. A lemezeken kívül betöltődik a processzor, a hálózat, a bemeneti/kimeneti rendszer stb. Az adatok mennyiségének növekedésével a feldolgozás és tárolás költsége is nő.

Különféle fájlformátumok Hadoop pontosan ezeknek a problémáknak a megoldására találták ki. A megfelelő fájlformátum kiválasztása jelentős előnyökkel járhat:

  1. Gyorsabb olvasási idő.
  2. Gyorsabb felvételi idő.
  3. Megosztott fájlok.
  4. A séma evolúciójának támogatása.
  5. Kibővített tömörítési támogatás.

Egyes fájlformátumok általános használatra készültek, mások konkrétabb felhasználásra, néhány pedig meghatározott adatjellemzőknek felel meg. Szóval tényleg elég nagy a választék.

Avro fájlformátum

mert adatsorosítás Az Avro-t széles körben használják - ez karakterlánc alapú, vagyis egy karakterlánc adattárolási formátum a Hadoopban. A sémát JSON formátumban tárolja, így bármely program könnyen olvasható és értelmezhető. Maga az adat bináris formátumú, kompakt és hatékony.

Az Avro szerializációs rendszere nyelvsemleges. A fájlok többféle nyelven dolgozhatók fel, jelenleg C, C++, C#, Java, Python és Ruby.

Az Avro kulcsfontosságú jellemzője az idővel változó, azaz fejlődő adatsémák erőteljes támogatása. Az Avro megérti a sémamódosításokat – a mezők törlését, hozzáadását vagy módosítását.

Az Avro számos adatstruktúrát támogat. Létrehozhat például egy rekordot, amely egy tömböt, egy felsorolt ​​típust és egy alrekordot tartalmaz.

Fájlformátumok big data-ban: egy rövid oktatási program
Ez a formátum ideális egy adattó leszálló (átmeneti) zónájába való íráshoz (adattó, vagy data lake – példányok gyűjteménye különféle típusú adatok tárolására az adatforrásokon kívül).

Tehát ez a formátum a legalkalmasabb egy adattó leszállózónájába való íráshoz a következő okok miatt:

  1. Az ebből a zónából származó adatokat általában teljes egészében kiolvassák a későbbi rendszerek további feldolgozása céljából – és ebben az esetben a soralapú formátum hatékonyabb.
  2. A downstream rendszerek könnyen lekérhetik a sématáblázatokat a fájlokból – nincs szükség a sémákat külön tárolni a külső metatárolóban.
  3. Az eredeti séma bármely módosítása könnyen feldolgozható (séma evolúció).

Parketta fájlformátum

A Parquet egy nyílt forráskódú fájlformátum a Hadoop számára, amely tárolja beágyazott adatszerkezetek lapos oszlopos formátumban.

A hagyományos soros megközelítéshez képest a Parketta hatékonyabb tárolási és teljesítménybeli szempontból.

Ez különösen hasznos azoknál a lekérdezéseknél, amelyek egy széles (sok oszlopos) táblából bizonyos oszlopokat olvasnak be. A fájlformátumnak köszönhetően csak a szükséges oszlopok kerülnek beolvasásra, így az I/O a minimálisra csökken.

Egy kis kitérő és magyarázat: Hogy jobban megértsük a Hadoop Parquet fájlformátumát, nézzük meg, mi az az oszlopalapú - azaz oszlopos - formátum. Ez a formátum minden oszlophoz hasonló értékeket tárol együtt.

Például, a rekord tartalmazza az ID, Név és Osztály mezőket. Ebben az esetben az összes ID oszlop értéke együtt kerül tárolásra, csakúgy, mint a Név oszlop értékei stb. A táblázat valahogy így fog kinézni:

ID
Név
osztály

1
emp1
d1

2
emp2
d2

3
emp3
d3

Karakterlánc formátumban az adatok mentése a következőképpen történik:

1
emp1
d1
2
emp2
d2
3
emp3
d3

Oszlopos fájlformátumban ugyanazok az adatok a következőképpen kerülnek mentésre:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Az oszlopos formátum hatékonyabb, ha több oszlopot kell lekérdeznie egy táblázatból. Csak a szükséges oszlopokat olvassa be, mert szomszédosak. Ily módon az I/O műveletek minimálisra csökkenthetők.

Például csak a NÉV oszlopra van szüksége. BAN BEN karakterlánc formátum Az adatkészlet minden rekordját be kell tölteni, mezőnként elemezni, majd ki kell bontani a NAME adatokat. Az oszlopformátum lehetővé teszi, hogy közvetlenül a Név oszlopig részletezzen, mivel az oszlop összes értéke együtt van tárolva. Nem kell a teljes felvételt beszkennelni.

Így az oszlopos formátum javítja a lekérdezés teljesítményét, mivel kevesebb keresési időt igényel a szükséges oszlopokhoz való eljutáshoz, és csökkenti az I/O műveletek számát, mivel csak a kívánt oszlopok kerülnek beolvasásra.

Az egyik egyedi tulajdonság parkett hogy ebben a formátumban lehet beágyazott struktúrákkal tárolja az adatokat. Ez azt jelenti, hogy egy Parquet fájlban még a beágyazott mezők is külön-külön olvashatók anélkül, hogy a beágyazott struktúra összes mezőjét be kellene olvasni. A Parquet aprítási és összeszerelési algoritmust használ a beágyazott szerkezetek tárolására.

Fájlformátumok big data-ban: egy rövid oktatási program
A Hadoop Parquet fájlformátumának megértéséhez ismernie kell a következő kifejezéseket:

  1. Húrok csoportja (sorcsoport): az adatok logikai vízszintes felosztása sorokra. Egy sorcsoport az adatkészlet minden oszlopának töredékéből áll.
  2. Oszloptöredék (oszlopdarab): Egy adott oszlop töredéke. Ezek az oszloptöredékek egy meghatározott sorcsoportban élnek, és garantáltan egybefüggőek a fájlban.
  3. Oldal (oldal): Az oszloptöredékek egymás után írt oldalakra vannak osztva. Az oldalak közös címet viselnek, így olvasás közben kihagyhatod a feleslegeseket.

Fájlformátumok big data-ban: egy rövid oktatási program
Itt a cím csak a varázsszámot tartalmazza PAR1 (4 bájt), amely a fájlt Parquet fájlként azonosítja.

A lábléc a következőket írja:

  1. Fájl metaadatok, amelyek az egyes oszlopok metaadatainak kezdőkoordinátáit tartalmazzák. Olvasáskor először el kell olvasnia a fájl metaadatait, hogy megtalálja az összes érdekes oszloprészletet. Az oszloprészeket ezután sorban kell olvasni. Az egyéb metaadatok közé tartozik a formátum verziója, a séma és minden további kulcs-érték pár.
  2. A metaadat hossza (4 bájt).
  3. varázslatos szám PAR1 (4 bájt).

ORC fájlformátum

Optimalizált sor-oszlop fájlformátum (Optimalizált soroszlop, ORC) nagyon hatékony módot kínál az adatok tárolására, és úgy tervezték, hogy legyőzze más formátumok korlátait. Tökéletesen kompakt formában tárolja az adatokat, lehetővé téve a szükségtelen részletek kihagyását – anélkül, hogy nagy, összetett vagy manuálisan karbantartott indexeket kellene létrehozni.

Az ORC formátum előnyei:

  1. Minden feladat kimenete egy fájl, ami csökkenti a NameNode (névcsomópont) terhelését.
  2. Hive adattípusok támogatása, beleértve a DateTime, decimális és összetett adattípusokat (struktúra, lista, térkép és unió).
  3. Ugyanazon fájl egyidejű olvasása különböző RecordReader folyamatokkal.
  4. Fájlok felosztása markerek keresése nélkül.
  5. Az olvasási/írási folyamatok maximális lehetséges kupacmemória-foglalásának becslése a fájl láblécében található információk alapján.
  6. A metaadatok a Protocol Buffers bináris szerializációs formátumban tárolódnak, amely lehetővé teszi mezők hozzáadását és eltávolítását.

Fájlformátumok big data-ban: egy rövid oktatási program
Az ORC egyetlen fájlban tárolja a karakterlánc-gyűjteményeket, a gyűjteményen belül pedig a karakterlánc-adatokat oszlopos formátumban tárolja.

Az ORC-fájl csíkoknak nevezett sorcsoportokat és támogató információkat tárol a fájl láblécében. A fájl végén található Postscript tartalmazza a tömörítési paramétereket és a tömörített lábléc méretét.

Az alapértelmezett csíkméret 250 MB. Az ilyen nagy csíkok miatt a HDFS-ből történő olvasás hatékonyabban történik: nagy összefüggő blokkokban.

A fájl lábléce rögzíti a fájl sávjainak listáját, a sávonkénti sorok számát és az egyes oszlopok adattípusát. Az egyes oszlopokhoz tartozó count, min, max és sum eredő értéke szintén oda van írva.

A szalag láblécében található az adatfolyam helyeinek könyvtára.

A táblázatok szkennelésekor soradatokat használnak.

Az indexadatok tartalmazzák az egyes oszlopok minimális és maximális értékét, valamint a sorok helyzetét az egyes oszlopokban. Az ORC indexek csak csíkok és sorcsoportok kiválasztására szolgálnak, lekérdezések megválaszolására nem.

Különböző fájlformátumok összehasonlítása

Avro a Parkettához képest

  1. Az Avro egy sor tárolási formátum, míg a Parquet oszlopokban tárolja az adatokat.
  2. A parketta jobban megfelel az analitikus lekérdezéseknek, vagyis az olvasási műveletek és az adatok lekérdezése sokkal hatékonyabb, mint az írás.
  3. Az Avro-ban az írási műveletek hatékonyabban hajthatók végre, mint a Parquet-ban.
  4. Az Avro érettebben foglalkozik az áramkörök evolúciójával. A Parquet csak a séma hozzáadását támogatja, míg az Avro a többfunkciós evolúciót, vagyis az oszlopok hozzáadását vagy megváltoztatását.
  5. A parketta ideális az oszlopok részhalmazának lekérdezésére egy többoszlopos táblázatban. Az Avro alkalmas ETL műveletekre, ahol minden oszlopot lekérdezünk.

ORC vs parketta

  1. A parketta jobban tárolja a beágyazott adatokat.
  2. Az ORC jobban megfelel a predikátum lenyomására.
  3. Az ORC támogatja az ACID tulajdonságokat.
  4. Az ORC jobban tömöríti az adatokat.

Mit kell még olvasni a témában:

  1. Big data elemzése a felhőben: hogyan válhat egy vállalat adatorientálttá.
  2. Szerény útmutató az adatbázissémákhoz.
  3. Távirat csatornánk a digitális átalakulásról.

Forrás: will.com

Hozzászólás