sql >> Database >  >> NoSQL >> HBase

Prestaties afstemmen in MapReduce voor prestatieverbetering

Prestatieafstemming in Hadoop helpt bij het optimaliseren van Hadoop-clusterprestaties. In dit MapReduce Performance Tuning-artikel onderzoekt u eerst de verschillende manieren om de Hadoop-clusterprestaties te verbeteren en de beste resultaten te behalen met MapReduce-programmering in Hadoop.

Vervolgens behandelt het artikel zeven belangrijke manieren of concepten voor Hadoop MapReduce Performance Tuning. Deze manieren zijn Memory Tuning in Hadoop, Verbetering van IO Performance, Map Disk spill in Hadoop, afstemming van mapper- en reducer-taken, write-combiner, gebruik van scheve joins en speculatieve uitvoering.

Deze technieken kunnen worden gebruikt om Hadoop-clusters in de productie op te zetten met standaardhardware om de prestaties te verbeteren met minimale operationele kosten.

Inleiding tot Hadoop MapReduce Performance Tuning

Het installeren van het Hadoop-cluster in de productie is slechts de helft van de gewonnen strijd. Voor de Hadoop-beheerder is het uiterst belangrijk om de Hadoop-clusterconfiguratie af te stemmen om maximale prestaties te behalen.

Het afstemmen van Hadoop-prestaties helpt bij het optimaliseren van Hadoop-clusterprestaties en het behalen van de beste resultaten bij het uitvoeren van MapReduce-taken in Big Data-bedrijven.

Tijdens de Hadoop-installatie wordt het Hadoop-cluster geconfigureerd met de standaardconfiguratie-instellingen.

Het is erg belangrijk voor de Hadoop-beheerders om bekend te zijn met de verschillende hardwarespecificaties zoals RAM-capaciteit, het aantal schijven dat op de DataNodes is gemonteerd, het aantal CPU-kernen, het aantal fysieke of virtuele kernen, NIC-kaarten, enz.

Als zodanig is er geen enkele techniek voor het afstemmen van prestaties die past bij alle Hadoop-taken, omdat het erg moeilijk is om een ​​evenwicht te bereiken tussen alle bronnen terwijl het big data-probleem wordt opgelost.

We kunnen de tips en trucs voor het afstemmen van prestaties kiezen op basis van de hoeveelheid gegevens die moet worden verplaatst en op het type Hadoop-taak dat in productie moet worden uitgevoerd. De beste en meest effectieve prestatieafstemming helpt bij het bereiken van maximale prestaties.

Om hetzelfde te doen, moeten we het onderstaande proces herhalen totdat de gewenste output op een optimale manier is bereikt.
Taak uitvoeren -> Knelpunt identificeren -> Knelpunt adresseren.

Dus eigenlijk moeten we voor het afstemmen van de prestaties eerst de Hadoop MapReduce-taak uitvoeren, het knelpunt identificeren en vervolgens het probleem oplossen met behulp van de onderstaande methoden. We moeten de bovenstaande stap herhalen totdat het gewenste prestatieniveau is bereikt.

Tips en trucs voor het afstemmen van MapReduce-prestaties

De manieren die worden gebruikt voor het afstemmen van Hadoop MapReduce-prestaties kunnen worden onderverdeeld in twee categorieën. Deze twee categorieën zijn:

1. Op Hadoop runtime parameters gebaseerde prestatieafstemming

2. Toepassingsspecifieke prestatieafstemming van Hadoop

Laten we nu bespreken hoe we de prestaties van het Hadoop-cluster kunnen verbeteren op basis van deze twee categorieën.

1. Op Hadoop Runtime Parameters Gebaseerde Prestatieafstemming

Deze categorie gaat over het afstemmen van de Hadoop-runtimeparameters, zoals het afstemmen van CPU-gebruik, geheugengebruik, schijfgebruik en netwerkgebruik voor prestatieafstemming. De technieken in deze categorie zijn:

a. Geheugen afstemmen

De belangrijkste stap om de maximale prestaties van een Hadoop-taak te garanderen, is het afstemmen van de configuratieparameters voor geheugen door het geheugengebruik op de server te bewaken.

Elke MapReduce-taak in Hadoop verzamelt de informatie over de verschillende gelezen invoerrecords, het aantal reductierecords, het aantal records dat in een pijplijn is geplaatst voor verdere uitvoering, het wisselgeheugen, de heapgrootte-set, enz.

De Hadoop-taken zijn over het algemeen niet gebonden aan de CPU. De voornaamste zorg is dus het optimaliseren van het geheugengebruik en de schijfverspilling.

De beste vuistregel voor het afstemmen van het geheugen om de prestaties te maximaliseren, is ervoor te zorgen dat de MapReduce-taken geen swapping activeren. Dat betekent dat je zoveel mogelijk geheugen gebruikt zonder swapping te activeren.

Software zoals Cloudera Manager, Nagios of Ganglia kan worden gebruikt voor het bewaken van het geheugengebruik van de swap.

Wanneer er een enorm wisselgeheugengebruik is, moet het geheugengebruik worden geoptimaliseerd via het configureren van de mapred.child.java.opts eigenschap door de hoeveelheid RAM te verminderen die aan elke taak is toegewezen in de mapred.child.java.opts .

We kunnen het geheugen voor de taak aanpassen door de mapred.child.java.opts in te stellen tot -Xmx2048M in een mapred-site.xml.

b. Minimaliseer het morsen van de kaartschijf

Disk IO is het prestatie-bottleneck in Apache Hadoop. Er waren veel parameters die we kunnen afstemmen om morsen te minimaliseren. We kunnen de parameters afstemmen zoals:

  • Compressie van mapper-uitvoer
  • Zorg ervoor dat de mapper 70% van het heapgeheugen gebruikt voor de overloopbuffer.

Maar denk je dat regelmatig morsen echt een goed idee is?

Het wordt ten zeerste aangeraden om niet meer dan één keer te morsen, want als we één keer morsen, moeten we alle gegevens opnieuw lezen en herschrijven:3x de IO.

c. Mapper-taken afstemmen

We kunnen impliciet het aantal kaarttaken instellen. De meest gebruikelijke en effectieve manier voor het afstemmen van Hadoop-prestaties voor de mapper is om het aantal mappers en de grootte van elke taak te regelen.

Terwijl het omgaat met de grote bestanden, splitst het framework het bestand in kleinere brokken, zodat de mapper het parallel kan uitvoeren. De initialisatie van een nieuwe mapper-taak duurt echter meestal een paar seconden, wat ook een overhead is en moet worden geminimaliseerd. Dus de suggesties voor hetzelfde zijn:

  • Jvm-taak opnieuw gebruiken
  • Richt op de kaarttaken die elk 1 tot 3 minuten duren. Dus als de gemiddelde looptijd van de mapper minder dan één minuut is, verhoog dan de mapred.min.split.size om minder mappers in de sleuf toe te wijzen en zo de initialisatie-overhead van de mapper te verminderen.
  • Gebruik het bestandsinvoerformaat Combineren voor een aantal kleinere bestanden.

2. Hadoop-toepassingsspecifieke prestatieafstemming

De technieken in deze categorie zijn:

a. Mapper-uitvoer minimaliseren

Door de uitvoer van de mapper te minimaliseren, kunnen we de prestaties verbeteren, aangezien de uitvoer van de mapper erg gevoelig is voor de schijf-IO, netwerk-IO en de geheugengevoeligheid in de shuffle-fase. We kunnen dit bereiken door:

  • De records aan de mapper-kant filteren in plaats van aan de reducer-kant.
  • Minimale gegevens gebruiken voor het vormen van onze mapper-uitvoersleutel en waarde in de MapReduce.
  • Uitvoer van mapper comprimeren
b. Balanceren van reducer laden

De onevenwichtige vermindering van taken leidt tot prestatieproblemen. Sommige verloopstukken nemen het grootste deel van de output van de mapper en werken extreem lang in vergelijking met de andere verloopstukken. We kunnen de belasting van het reductiemiddel in evenwicht brengen door:

  • Een betere hash-functie implementeren in de klasse Partitioner.
  • Het schrijven van een preprocess-taak voor het scheiden van sleutels met behulp van de meerdere uitgangen. Gebruik dan een andere taak voor het verkleinen van de kaart voor het verwerken van de speciale sleutels die het probleem kunnen veroorzaken.
c. Verminder tussentijdse gegevens met Combiner in Hadoop

Verder kunnen we de prestaties van het Hadoop-cluster afstemmen door een combiner te schrijven. Combiner vermindert de hoeveelheid gegevens die van mapper naar reducer moet worden overgedragen. Dit blijkt gunstig te zijn omdat het de netwerkcongestie vermindert.

d. Speculatieve uitvoering

De prestaties van de MapReduce-taken worden ernstig beïnvloed wanneer de uitvoering van de taken langer duurt. Speculatieve uitvoering in Hadoop is de gebruikelijke aanpak om dit probleem op te lossen door een back-up te maken van de langzame taken op de alternatieve machines.

We kunnen de speculatieve uitvoering inschakelen door de configuratieparameters ‘mapreduce.map.tasks.speculative.execution’ in te stellen en ‘mapreduce.reduce.tasks.speculative.execution’ naar waar. Dit zal de uitvoeringstijd van de taak verkorten.

Samenvatting

Ten slotte hebben we gezien dat prestatieafstemming in Hadoop helpt bij het optimaliseren van Hadoop-clusterprestaties. In het artikel werden verschillende tips en trucs uitgelegd voor het afstemmen van de prestaties van het Hadoop-cluster.

Het artikel heeft enkele van de beste en meest effectieve trucs uitgelicht om de prestaties te maximaliseren.

Als u echter vragen heeft over dit onderwerp, kunt u deze met ons delen in het opmerkingengedeelte.


  1. GSSException:geen geldige referenties verstrekt (mechanismeniveau:kan geen Kerberos-tgt vinden)

  2. MongoDB-sortering

  3. MongoDB-replicasets in de cloud onderhouden met Ansible

  4. Hoe converteer ik een eigenschap in MongoDB van tekst naar datumtype?