Geek Dirt

apr 24, 2021

in de eerste post van de Hadoop-serie introductie van Hadoop en het uitvoeren van een map-reduce programma , legde ik de basisprincipes van Map-Reduce uit. In dit bericht leg ik de verschillende componenten uit zoals partitioneren, Shuffle, Combiner, mergen, eerst sorteren en dan hoe het werkt.

partitionering:

als het aantal reductoren 2 is en de hash-functie is:

#This function would return the data passes in itfunction hash(data){#this is just for example purposereturn data;}

dan voor sleutel 1:

partitienummer = hash(1) % 2 = 1;

voor sleutel 2:

partitienummer = hash(2) % 2 = 0;

voor sleutel 4:

partitienummer = hash(4) % 2 = 0;

dat betekent dat uitvoer voor sleutel 1 in partition_1 zou gaan en uitvoer voor sleutel 2 en 4 in partition_0 zou gaan.

Shuffle:

in de uiteindelijke uitvoer van de map-taak kunnen er meerdere partities zijn en deze partities moeten naar een andere reductietaak gaan. Shuffling is in principe het overbrengen van kaart uitvoer partities naar de overeenkomstige verminderen taken. Map task notified application master over de voltooiing van map task en application master waarschuwt overeenkomstige reducer om de kaart uitvoer te kopiëren naar reduce machine.

Combiner:

Sorteren:

het is gewoon sorteren van de gegevens op basis van sleutels.

samenvoegen:

dit gebeurt aan de reductiezijde. Reducer kan gegevens uit meerdere kaarttaken krijgen en door het samenvoegen worden de gegevens van verschillende kaarttaken samengevoegd in één enkele eenheid, waarbij de sorteervolgorde wordt gehandhaafd.

kaart-in detail verkleinen:

kaart:

het heeft een in geheugen circular buffer en schrijft direct naar buffer. Wanneer de buffer de drempelwaarde bereikt (standaard 80%) begint het te schrijven naar spill file via een aparte background thread. Map taak kan nog steeds schrijven de uitvoer naar buffer terwijl achtergrond thread wordt uitgevoerd. Voor het schrijven naar spill-bestand, kaartuitvoer die sleutel-waarde paren worden gepartitioneerd en gesorteerd. Als er een combiner is, wordt het ook uitgevoerd dat de uitvoergrootte vermindert.

na de taak worden alle spillbestanden opnieuw gesorteerd en wordt een enkel bestand aangemaakt dat wordt gepartitioneerd en gesorteerd. Betekent dat dit uiteindelijke uitvoerbestand meerdere partities heeft. Na map taak in voltooid voor een knooppunt de uitvoer wordt verzonden naar reducer. Daarom zie je taak meer dan 0% verminderen terwijl kaart minder dan <100% is.

wanneer u een map-only taak hebt, is er helemaal geen shuffling, wat betekent dat mappers de uiteindelijke uitvoer direct naar HDFS zullen schrijven.

Reduce:

na het ophalen van gegevens uit de map taak voegt het de gegevens samen in één enkele eenheid tijdens de merge phase. In plaats van alle bestanden direct samen te voegen, gebruikt het het concept naar merge factor , met als doel de hoeveelheid data die naar de schijf geschreven wordt te minimaliseren. Tijdens de reductiefase wordt vervolgens de reduce-functie aangeroepen voor elke sleutel in de gesorteerde uitvoer. De output van deze fase wordt direct naar het output bestandssysteem geschreven, meestal HDFS.

Nuttige Links:

Inleiding en bewerking van garen

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.