Video: V2 R17 Oprydning af terrænfil Reducering af filstørrelse Tilpasning af faser bja 2025
Reduktionsfasen behandler nøgler og deres individuelle værdilister, så det, der normalt returneres til klientprogrammet, er et sæt nøgle / værdipar. Her er blow-by-blow hidtil: Et stort datasæt er opdelt i mindre stykker, kaldet input splits, og individuelle forekomster af mapper opgaver har behandlet hver enkelt af dem.
I nogle tilfælde er denne enkelt fase af behandling alt, hvad der er nødvendigt for at generere den ønskede applikationsudgang. Hvis du for eksempel kører en grundlæggende transformationsoperation på dataene - konverterer al tekst til store bogstaver, f.eks. Eller udtreder nøglebilleder fra videofiler - er den eneste fase alt, hvad du behøver. (Dette kaldes kun et kort-kun job.)
Men i mange andre tilfælde er jobbet kun halvt færdigt, når mapperopgaverne har skrevet deres output. Den resterende opgave er at koge ned alle foreløbige resultater til et enkelt, samlet svar.
På samme måde som mapper-opgaven, som behandler hver enkelt rekord en-for-en, reducerer reduceren hver enkelt nøgle individuelt. Normalt returnerer reduceren et enkelt nøgle / værdipar for hver nøgle, den behandler. Disse nøgle / værdipar kan dog være så ekspansive eller så små, som du har brug for, at de skal være.
Når reduktionsopgaverne er færdige, returnerer hver af dem en resultatfil og gemmer den i HDFS (Hadoop Distributed File System). Som vist her replikerer HDFS-systemet automatisk disse resultater.
Hvor ressourceadministratoren (eller JobTracker, hvis du bruger Hadoop 1) forsøger at tildele ressourcer til mapper-opgaver for at sikre, at input splitsning behandles lokalt, er der ingen sådan strategi for reduktionsopgaver. Det antages, at mapper task resultatsæt skal overføres via netværket for at blive behandlet af reduktionsopgaverne.
Dette er en rimelig implementering, fordi med hundredvis eller endda tusindvis af mapper opgaver, ville der ikke være nogen praktisk måde at reducere opgaver for at have samme lokalitetsprioritering.