Video: How To Compress Large Video Files On Mac Without Losing Video Quality 2025
De enorme datamængder, der er realiteter i en typisk Hadoop-implementering, gør kompression en nødvendighed. Datakomprimering sparer helt sikkert en stor mængde lagerplads og er sikker på at fremskynde bevægelsen af disse data i hele din klynge. Ikke overraskende er der en række tilgængelige komprimeringsordninger, kaldet codecs, derude for at du skal overveje.
I en Hadoop-implementering handler du (potentielt) med et stort antal individuelle slave noder, der hver har en række store diskdrev. Det er ikke ualmindeligt, at en individuel slaveknude har op til 45 TB rå lagerplads til rådighed for HDFS.
For det første er nogle grundlæggende udtryk: Acodec, som er en forkortet form af co mpressor / dec ompressor, er teknologi (software eller hardware eller begge) til komprimering og dekomprimering af data; det er implementeringen af en komprimerings / dekomprimeringsalgoritme.
Splittable compression
er et vigtigt koncept i Hadoop-konteksten. Den måde Hadoop arbejder på er, at filer er opdelt, hvis de er større end filens blokstørrelsesindstilling, og individuelle filsplit kan behandles parallelt med forskellige mappere.
Da filen kun kan dekomprimeres som en helhed og ikke som individuelle dele baseret på splittelser, kan der ikke parallelt behandles en sådan fil, og ydeevne kan tage et stort hit, da et job venter på en enkelt mapper til behandle flere datablokke, der ikke kan dekomprimeres uafhængigt.
Splittable-komprimering er kun en faktor for tekstfiler. For binære filer komprimerer Hadoop-komprimerings kodeker data inden for en binærkodet container, afhængigt af filtype (f.eks. En sekvensfil, avro eller protokolbuffer).
Taler om ydeevne er der en omkostning (hvad angår behandling af ressourcer og tid), der er forbundet med at komprimere de data, der skrives til din Hadoop-klynge.
Med computere, som med livet, er intet gratis. Ved komprimering af data udskifter du behandlingscyklusser for diskplads. Og når disse data bliver læst, er der en omkostning forbundet med dekomprimering af dataene også. Vær sikker på at afveje fordelene ved lagerbesparelser mod de ekstra ydelser.
Hvis inputfilen til et MapReduce-job indeholder komprimerede data, reduceres den tid, der er nødvendig for at læse dataene fra HDFS, og jobpræstationen er forbedret. Inddataene dekomprimeres automatisk, når de læses af MapReduce.
Udvidelsesfilen til filnavnet bestemmer, hvilken understøttet codec der bruges til automatisk dekomprimering af dataene. For eksempel a. gz extension identificerer filen som en gzip-komprimeret fil.
Det kan også være nyttigt at komprimere mellemfasen af kortfasen i MapReduce-procesflowet. Fordi kortfunktionsudgang er skrevet til disk og afsendt på tværs af netværket for at reducere opgaverne, kan komprimering af output resultere i betydelige præstationsforbedringer.
Og hvis du vil gemme MapReduce-udgangen som historikfiler til fremtidig brug, kan komprimering af disse data reducere mængden af nødvendig plads i HDFS betydeligt.
Der findes mange forskellige komprimeringsalgoritmer og værktøjer, og deres egenskaber og styrker varierer. Den mest almindelige afvejning er mellem kompressionsforhold (i hvilken grad en fil er komprimeret) og komprimerer / dekomprimerer hastigheder. Hadoop-rammen understøtter flere codecs. Rammerne gennemsigtigt komprimerer og dekomprimerer de fleste input- og outputfilformater.
Følgende liste identificerer nogle fælles kodeker, der understøttes af Hadoop-rammen. Sørg for at vælge den codec, der passer bedst til kravene i dit særlige brugssag (for eksempel med arbejdsbyrder, hvor hastigheden af behandlingen er vigtig, valgte en codec med høje dekompressionshastigheder):
Gzip:
-
En kompression værktøj, der blev vedtaget af GNU projektet, Gzip (kort for GNU zip) genererer komprimerede filer, der har a. gz udvidelse. Du kan bruge kommandoen gunzip til at dekomprimere filer, der blev oprettet af en række komprimeringsværktøjer, herunder Gzip. Bzip2:
-
Fra et brugervenlighed er Bzip2 og Gzip ens. Bzip2 genererer et bedre kompressionsforhold end Gzip, men det er meget langsommere. Faktisk er Bzip2 af alle de tilgængelige komprimerings codecs i Hadoop den langsomste. Hvis du opretter et arkiv, som du sjældent skal forespørge om, og rummet har en høj præmie, så ville Bzip2 måske være værd at overveje.
Snappy:
-
Snappy codec fra Google giver beskedne kompressionsforhold, men hurtige komprimerings- og dekompressionshastigheder. (Faktisk har den den hurtigste dekompressionshastighed, hvilket gør det yderst ønskeligt for datasæt, der sandsynligvis vil blive forespurgt ofte.) Snappy codec er integreret i Hadoop Common, et sæt fælles værktøjer, der understøtter andre Hadoop-underprojekter. Du kan bruge Snappy som en tilføjelse til nyere versioner af Hadoop, der endnu ikke leverer Snappy codec support.
LZO:
-
Ligesom Snappy, giver LZO (kort for Lempel-Ziv-Oberhumer, trioet af computerforskere, der kom op med algoritmen) beskedne kompressionsforhold, men hurtige kompressions- og dekompressionshastigheder. LZO er licenseret under GNU Public License (GPL). LZO understøtter splittable compression, som muliggør parallelbehandling af komprimerede tekstfiler med dine MapReduce-job. LZO skal oprette et indeks, når det komprimerer en fil, fordi der med komprimeringsblokke med variabel længde kræves et indeks for at fortælle mappen, hvor den sikkert kan opdele den komprimerede fil. LZO er kun virkelig ønskeligt, hvis du skal komprimere tekstfiler.
Hadoop Codecs
Filforlængelse | Splittable? | Kompressionsgraden | Kompressionshastighed | Gzip |
---|---|---|---|---|
. gz | Nej | Middel | Middel | Bzip2 |
. bz2 | Ja | Høj | Langsom | Snappy |
. bidsk | Nej | Middel | Fast | LZO |
. lzo | Nej, medmindre indekseret | Medium | Fast | Alle kompressionsalgoritmer skal gøre afvejninger mellem kompressionsgraden og kompressionshastigheden, som de kan opnå. De codecs, der er angivet, giver dig en vis kontrol over, hvad balancen mellem kompressionsforhold og hastighed skal være på kompressionstiden. |
Gzip lader dig f.eks. Regulere kompressionshastigheden ved at angive et negativt heltal (eller søgeord), hvor -1 angiver det hurtigste komprimeringsniveau og -9 angiver det laveste komprimeringsniveau. Standard kompressionsniveau er -6.