Video: Undrstanding Input Splits in MapReduce | Input Splits tutorial in Comprehensive MapReduce | Edureka 2025
Den måde, hvorpå HDFS er oprettet, bryder ned meget store filer i store blokke (for eksempel måling 128 MB) og gemmer tre kopier af disse blokke på forskellige knudepunkter i klyngen. HDFS har ingen bevidsthed om indholdet af disse filer.
I YARN, når et MapReduce-job er startet, er ressourceadministratoren (klyngen ressource ledelse og jobplanlægning facilitet) opretter en Application Master daemon for at se efter jobets livscyklus. (I Hadoop 1 overvåger JobTracker individuelle job samt håndtering af jobplanlægning og cluster ressourcehåndtering.)
Nøglen til effektiv MapReduce-behandling er, at det er muligt at behandle data lokalt - på slaveknuden, hvor den er gemt. Før du ser på, hvordan datablokkerne behandles, skal du se nærmere på, hvordan Hadoop lagrer data. I Hadoop er filer sammensat af individuelle poster, som i sidste ende behandles en efter en ved mapperopgaver.
Eksempeldatasættet indeholder f.eks. Oplysninger om gennemførte flyvninger inden for USA mellem 1987 og 2008.
Du har en stor fil for hvert år, og inden for hver fil repræsenterer hver enkelt linje et enkelt fly. Med andre ord repræsenterer en linje en post. Husk nu, at blokstørrelsen til Hadoop-klyngen er 64 MB, hvilket betyder at de lyse datafiler er brudt i klumper af præcis 64 MB.
Kan du se problemet? Hvis hver kortopgave behandler alle poster i en bestemt datablok, hvad sker der med de poster, der spænder over blokgrænser? Filblokke er præcis 64 MB (eller hvad du endda angiver blokstørrelsen), og fordi HDFS ikke har en opfattelse af, hvad der er inde i filblokkene, kan det ikke måle, hvornår en rekord kan springe over i en anden blok.
For at løse dette problem bruger Hadoop en logisk repræsentation af de data, der er gemt i filblokke, kendt som
input splits . Når en MapReduce-jobklient beregner indgangssplitningerne, viser den, hvor den første hele post i en blok begynder, og hvor den sidste post i blokken slutter. I de tilfælde, hvor den sidste post i en blok er ufuldstændig, indgår indtastningsopdelingen placeringsoplysninger for den næste blok og byteforskydningen af de data, der er nødvendige for at fuldføre posten.
Figuren viser dette forhold mellem datablokke og input-splittelser.
Du kan konfigurere Application Master daemon (eller JobTracker, hvis du er i Hadoop 1) til at beregne input splittelsen i stedet for jobklienten, hvilket ville være hurtigere for job, der behandler et stort antal datablokke.
MapReduce databehandling er drevet af dette koncept for input splits. Antallet af indgangssplitninger, der beregnes for en bestemt applikation, bestemmer antallet af mapperopgaver. Hver af disse mapper opgaver er så vidt muligt tildelt en slave node, hvor indgangssplitningen er gemt. Resource Manager (eller JobTracker, hvis du er i Hadoop 1) gør sit bedste for at sikre, at input splits behandles lokalt.