Hem Personliga finanser Komprimera data i Hadoop - dummies

Komprimera data i Hadoop - dummies

Video: How To Compress Large Video Files On Mac Without Losing Video Quality 2024

Video: How To Compress Large Video Files On Mac Without Losing Video Quality 2024
Anonim

De enorma datavolymer som är realiteter i en typisk Hadoop-implementering gör komprimering nödvändig. Datakomprimering sparar definitivt mycket lagringsutrymme och kommer säkerligen att påskynda rörelsen för data i hela ditt kluster. Inte överraskande finns ett antal tillgängliga komprimeringssystem, kallade codecs, där ute för att du ska överväga.

I en Hadoop-implementering handlar du (potentiellt) med ett stort antal enskilda slavnoder, som alla har ett antal stora hårddiskar. Det är inte ovanligt att en enskild slavkod har upp till 45 TB rålagerutrymme tillgängligt för HDFS.

Även om Hadops slavnoder är utformade för att vara billiga, är de inte lediga och med stora datamängder som har en tendens att växa med ökande hastigheter är komprimering ett självklart verktyg för att styra extremt datamängder.

För det första är några grundläggande termer: A codec, som är en förkortad form av co mpressor / dec ompressor, är teknik (mjukvara eller hårdvara, eller båda) för komprimering och dekomprimering av data; Det är implementeringen av en komprimerings / dekomprimeringsalgoritm.

Du måste veta att vissa codecs stöder något som kallas splittable compression och att codecs skiljer sig åt i både den hastighet som de kan komprimera och dekomprimera data och graden till vilken de kan komprimera den.

Splittable compression är ett viktigt koncept i ett Hadoop-sammanhang. Det sätt som Hadoop arbetar på är att filerna delas om de är större än filens blockstorlek och enskilda filsplittor kan bearbetas parallellt med olika mappers.

Med de flesta codecs kan inte textfilskivor dekomprimeras oberoende av andra splittringar från samma fil, så de codecs sägs vara icke-delbara, så MapReduce-bearbetning är begränsad till en enda mapper.

Eftersom filen kan dekomprimeras i sin helhet och inte som enskilda delar baserade på splittringar, kan det inte hända att en sådan fil hanteras parallellt, och prestanda kan ta en stor träff när ett jobb väntar på en enskild mappare till bearbeta flera datablock som inte kan dekomprimeras oberoende.

Splittable-komprimering är bara en faktor för textfiler. För binära filer komprimerar Hadoop-komprimerings codecs data i en binärkodad behållare, beroende på filtypen (till exempel en sekvensfil, avro eller protokollbuffer).

Med tanke på prestanda finns det en kostnad (när det gäller behandling av resurser och tid) som är associerad med att komprimera data som skrivs till ditt Hadoop-kluster.

Med datorer, som med livet, är ingenting gratis. När du komprimerar data byter du behandlingscykler för diskutrymme. Och när dessa data läses, finns det en kostnad förknippad med dekomprimering av data också. Var noga med att väga fördelarna med lagringsbesparingar mot de extra prestandakostnaderna.

Om inmatningsfilen till ett MapReduce-jobb innehåller komprimerad data, är tiden som behövs för att läsa den data från HDFS reducerad och jobbet har förbättrats. Inmatningsdata dekomprimeras automatiskt när den läses av MapReduce.

Inmatningsfilnamnstillägget bestämmer vilken stödd codec som används för att automatiskt dekomprimera data. Till exempel a. gz förlängning identifierar filen som en gzip-komprimerad fil.

Det kan också vara användbart att komprimera mellanfasen av kartfasen i MapReduce-processflödet. Eftersom kartfunktionsutgången skrivs till disken och skickas över nätverket för att minska uppgifterna, kan komprimering av utmatningen leda till betydande prestandaförbättringar.

Och om du vill lagra MapReduce-utmatningen som historikfiler för framtida bruk, kan komprimering av dessa data betydligt minska den mängd utrymme som krävs i HDFS.

Det finns många olika kompressionsalgoritmer och verktyg, och deras egenskaper och styrkor varierar. Den vanligaste avvägningen är mellan kompressionsförhållandena (graden till vilken en fil komprimeras) och komprimerar / dekomprimerar hastigheter. Hadoop-ramen stöder flera codecs. Ramverket transparenter komprimerar och dekomprimerar de flesta inmatnings- och utdatafilformat.

Följande lista identifierar några vanliga codecs som stöds av Hadoop-ramen. Var noga med att välja den codec som stämmer överens med kraven i ditt specifika användningsfall (till exempel med arbetsbelastningar där hastigheten på bearbetningen är viktig, välj en codec med höga dekompressionshastigheter):

  • Gzip: En kompression verktyg som antogs av GNU-projektet, genererar Gzip (kort för GNU zip) komprimerade filer som har a. gz förlängning. Du kan använda kommandot gunzip för att dekomprimera filer som skapades av ett antal komprimeringsverktyg, inklusive Gzip.

  • Bzip2: Från användbarhetssynpunkt är Bzip2 och Gzip liknande. Bzip2 genererar ett bättre kompressionsförhållande än Gzip, men det är mycket långsammare. Faktum är att Bzip2 av alla tillgängliga komprimerings codecs i Hadoop är den längsta.

    Om du konfigurerar ett arkiv som du sällan behöver fråga och det finns mycket högt utrymme, kanske Bzip2 är värt att överväga.

  • Snappy: Snappy codec från Google ger blygsamma kompressionsförhållanden, men snabba komprimerings- och dekompressionshastigheter. (Faktum är att den har de snabbaste dekompressionshastigheterna, vilket gör det mycket önskvärt för dataset som sannolikt kommer att bli frågade ofta.)

    Snappy codec är integrerad i Hadoop Common, en uppsättning gemensamma verktyg som stöder andra Hadoop-delprojekt. Du kan använda Snappy som tillägg för senare versioner av Hadoop som ännu inte tillhandahåller Snappy codec support.

  • LZO: Liknande Snappy, LZO (kort för Lempel-Ziv-Oberhumer, trio av datavetenskapare som kom med algoritmen) ger blygsamma kompressionsförhållanden, men snabba kompressions- och dekompressionshastigheter. LZO är licensierad enligt GNU Public License (GPL).

    LZO stöder delbar komprimering, vilket möjliggör parallell bearbetning av komprimerade textfiler med dina MapReduce-jobb. LZO behöver skapa ett index när det komprimerar en fil, eftersom kompressionsblock med variabel längd krävs ett index för att berätta mappen där den kan dela den komprimerade filen på ett säkert sätt. LZO är bara verkligen önskvärt om du behöver komprimera textfiler.

Hadoop Codecs

Codec Filförlängning Splittable? Kompressionsgrad Kompressionshastighet
Gzip . GZ Nej Medium Medium
Bzip2 . bz2 Ja Hög Slow
Snappy . Snappy Nej Medium Snabb
LZO . lzo Nej, om inte indexerat Medium Fast

Alla kompressionsalgoritmer måste göra avvägningar mellan graden av kompression och kompressionshastigheten som de kan uppnå. De codecs som listas ger dig lite kontroll över vad balansen mellan kompressionsförhållandet och hastigheten ska vara vid kompressionstiden.

Gzip tillåter dig till exempel att reglera kompressionshastigheten genom att ange ett negativt heltal (eller nyckelord), där -1 anger den snabbaste komprimeringsnivån och -9 anger den sämsta komprimeringsnivån. Standardkompressionsnivån är -6.

Komprimera data i Hadoop - dummies

Redaktörens val

Hur man lägger till text i en sätter () Funktion i C Programmering

Hur man lägger till text i en sätter () Funktion i C Programmering

När du behöver visa en annan textrad, använd C-programmeringsfärdigheterna för att skapa en annan puts () -funktion i källkoden, som visas i Visa två textlinjer. VISA TILL TEXTFINER # inkludera int main () {sätter ("Hickory, Dickory, Dock,"); sätter ("musen sprang klockan."); returnera (0);} Den andra ...

Förklarar variabler i C-dummies

Förklarar variabler i C-dummies

Variabler är det som gör dina program zooma. Programmering kan bara inte bli gjort utan dem. Så om du inte har introducerats till variabler än, här går du. Valerie Variable är en numerisk variabel. Hon älskar att hålla nummer - vilket nummer som helst; det spelar ingen roll. När hon ser ett lika tecken tar hon ett värde och ...

Redaktörens val

Gör rädsla för din vän - dummies

Gör rädsla för din vän - dummies

Rädsla är lika verklig som mod. Även om värdet av rädsla inte är lika uppenbart som modets värde, har det dess fördelar. Rädsla är din instinkt som säger att du är obehaglig - även om situationen inte kommer att skada dig. Alla har haft den känslan när man hellre drar locket ...

Hur man ökar din självmedvetenhet - dummies

Hur man ökar din självmedvetenhet - dummies

Du kommer att vara med dig själv under en livstid. Ingenting kommer att förändra det faktum. Att lära känna, som att lyssna på och uppskatta själv är avgörande för din sanity. Kanske kommer du till att älska, acceptera och omfamna alla du är, är svår för dig att föreställa dig just nu, men du kan göra ...

Hur man ökar din mentala flexibilitet - dummies

Hur man ökar din mentala flexibilitet - dummies

ÄR flexibel i arbete och relationer är ett tecken på en högpresterande. Medan perfektionister är styva och obehagliga i sitt arbete och hur de interagerar med andra, är högpresterande mer öppna och tillmötesgående. Att vara mer flexibel på jobbet gav Ralph aldrig förslag under brainstorming vid gruppmöten. Han kände att hans lag ...

Redaktörens val

Nätverksadministration: Linux-installation och virtuella konsoler - dummies

Nätverksadministration: Linux-installation och virtuella konsoler - dummies

Linux är i sig ett kommandoradsorienterat operativsystem. Grafiska användargränssnitt - inklusive installationsprogrammets GUI - tillhandahålls av en valfri komponent som heter X Window System. Men medan du arbetar med det grafiska användargränssnittet för installationsprogrammet, håller Linux flera ytterligare kommandorads-konsoler öppna. Normalt behöver du inte ...

Nätverksadministration: Linux-loggning, logg och systemavstängning - dummies

Nätverksadministration: Linux-loggning, logg och systemavstängning - dummies

Alla användare som åtkomst ett Linux-system, lokalt eller över ett nätverk, måste verifieras av ett giltigt användarkonto på systemet. I det följande får du veta hur du loggar in och ut på ett Linux-system och hur du stänger av systemet. Logga in När Linux startar upp visas det ...

Nätverksadministration: Licensserver - Dummies

Nätverksadministration: Licensserver - Dummies

I vissa program kan du köpa nätverkslicenser som gör att du kan installera programvaran på många datorer som du vill, men reglera antalet personer som kan använda programvaran vid en viss tidpunkt. För att styra hur många som använder programvaran, är en särskild licensserver inrättad. När en användare börjar ...