sql >> Database >  >> NoSQL >> HBase

Beperkingen van Hadoop, manieren om Hadoop-nadelen op te lossen

We hebben Hadoop-functies besproken in onze vorige Hadoop-tutorial. Nu gaan we de beperkingen van Hadoop behandelen. Er zijn verschillende nadelen van Apache Hadoop-frameworks.

Bijvoorbeeld:probleem met kleine bestanden, trage verwerking, alleen batchverwerking, latentie, beveiligingsprobleem, kwetsbaarheid, geen cache enz.

Al deze beperkingen van Hadoop zullen we in detail bespreken in deze Hadoop-tutorial.

Wat is Hadoop?

Apache Hadoop is een open source software framework voor gedistribueerde opslag en verwerking van enorme hoeveelheden datasets. Open source betekent dat het vrij beschikbaar is en zelfs wij kunnen de broncode wijzigen volgens de vereisten.

Apache Hadoop maakt het ook mogelijk om applicaties te draaien op een systeem met duizenden nodes. Het gedistribueerde bestandssysteem biedt snelle gegevensoverdrachtsnelheden tussen knooppunten.

Het stelt het systeem ook in staat door te blijven werken in het geval van een storing in een knooppunt. De belangrijkste kenmerken van Hadoop zijn als volgt:

  • In Apache Hadoop zijn gegevens beschikbaar ondanks een machinestoring vanwege de vele kopieën van gegevens. Dus als een machine crasht, heeft men toegang tot de gegevens vanaf een ander pad.
  • Apache Hadoop is schaalbaar, omdat het gemakkelijk is om nieuwe hardware aan het knooppunt toe te voegen.
  • Hadoop is zeer fouttolerant, omdat er standaard 3 replica's van elk blok in het cluster worden opgeslagen. Dus als een knooppunt in het cluster uitvalt, kunnen gegevens op dat knooppunt eenvoudig worden hersteld van het andere knooppunt.
  • Apache Hadoop draait op een cluster van standaard hardware die niet erg duur is.
  • In Apache Hadoop worden gegevens betrouwbaar opgeslagen op het cluster, ondanks hardwarestoringen als gevolg van replicatie van gegevens op het cluster.

Hoewel Hadoop de krachtigste tool van Big Data is, zijn er verschillende beperkingen aan. Door de beperkingen van Hadoop zijn Apache Spark en Apache Flink ontstaan.

Beperkingen van Hadoop

Verschillende beperkingen van Apache Hadoop worden hieronder gegeven, samen met hun oplossing-

a. Problemen met kleine bestanden

Het grootste probleem met Hadoop is dat het niet geschikt is voor kleine gegevens. HDFS mist de mogelijkheid om het willekeurig lezen van kleine te ondersteunen vanwege het ontwerp met hoge capaciteit.

Kleine bestanden zijn kleiner dan de HDFS-blokgrootte (standaard 128 MB). Als u deze enorme aantallen kleine bestanden opslaat, kan HDFS deze vele kleine bestanden niet aan.

Omdat HDFS is ontworpen om te werken met een klein aantal grote bestanden voor het opslaan van grote datasets in plaats van een groot aantal kleine bestanden. Als er veel kleine bestanden zijn, wordt de NameNode overbelast omdat deze de naamruimte van HDFS opslaat.

Oplossing: 

Voeg eenvoudig de kleine bestanden samen om grotere bestanden te maken en kopieer ze vervolgens naar HDFS.

Hadoop-archieven (HAR-bestanden) behandelt het probleem van veel kleine bestanden. Hadoop Archives werkt door een gelaagd bestandssysteem te bouwen bovenop HDFS.

Met de Help Hadoop-archiefopdracht worden HAR-bestanden gemaakt; hierdoor wordt een MapReduce-taak uitgevoerd om de bestanden die worden gearchiveerd in een klein aantal HDFS-bestanden in te pakken. Bestanden lezen via HAR is niet efficiënter dan lezen via HDFS.

Omdat voor elke HAR-bestandstoegang twee indexbestanden nodig zijn, en het gegevensbestand om te lezen, wordt het langzamer.

Sequentiebestanden overwinnen ook het probleem met kleine bestanden. Waarin we de bestandsnaam gebruiken als de sleutel en de bestandsinhoud als de waarde.

Door een programma voor bestanden (100 KB) te schrijven, kunnen we ze in een enkel Sequence-bestand plaatsen en ze vervolgens op een streamingmanier verwerken die op het Sequence-bestand werkt.

MapReduce in Hadoop kan het Sequence-bestand in stukken opsplitsen en op elk stuk afzonderlijk werken, omdat het Sequence-bestand splitsbaar is.

Door bestanden in Hbase op te slaan, kunnen we het probleem met kleine bestanden oplossen. We slaan niet echt miljoenen kleine bestanden op in HBase, maar voegen de binaire inhoud van het bestand toe aan een cel.

b. Trage verwerkingssnelheid

MapReduce verwerkt een enorme hoeveelheid data. In Hadoop werkt MapReduce door de verwerking in fasen op te splitsen:Kaart en Verminderen . MapReduce heeft dus veel tijd nodig om deze taken uit te voeren, waardoor de latentie toeneemt. Verlaagt daarom de verwerkingssnelheid.

Oplossing:

Door gegevens in het geheugen te verwerken, ondervangt Apache Spark dit probleem. Net als bij verwerking in het geheugen, wordt er geen tijd besteed aan het verplaatsen van de gegevens/processen naar en van de schijf, waardoor het sneller gaat.

Apache Spark is 100 keer sneller in vergelijking met MapReduce omdat het alles in het geheugen verwerkt.

Flink kan dit probleem ook oplossen. Flink verwerkt sneller dan Spark vanwege de streamingarchitectuur.

c. Alleen ondersteuning voor batchverwerking

Hadoop ondersteunt alleen batchverwerking, het is niet geschikt voor het streamen van gegevens. Daarom zijn de algehele prestaties langzamer. MapReduce-framework maakt niet optimaal gebruik van het geheugen van het Hadoop-cluster.

Oplossing

Apache Spark lost dit probleem op omdat het streamverwerking ondersteunt. Maar Spark-streamverwerking is niet zo efficiënt als Flink, omdat er microbatchverwerking wordt gebruikt. Apache Flink verbetert de algehele prestaties omdat het een enkele runtime biedt voor zowel streaming als batchverwerking.

d. Geen realtime verwerking

Apache Hadoop is een batchverwerkingsframework. Het betekent dat er een enorme hoeveelheid gegevens nodig is, deze verwerkt en het resultaat oplevert.

Batchverwerking is zeer efficiënt voor het verwerken van een grote hoeveelheid gegevens, maar hangt af van de grootte van de gegevens die worden verwerkt en de rekenkracht van het systeem; een output kan aanzienlijk worden vertraagd. Apache Hadoop is niet geschikt voor realtime verwerking.

Oplossing:

Spark is geschikt voor streamverwerking. Stomen verwerking bieden continue input/output data. Het verwerkt gegevens binnen de korte tijd.

Flink biedt een enkele runtime voor zowel streaming als batchverwerking.

e. Iteratieve verwerking

Apache Hadoop is niet erg efficiënt voor iteratieve verwerking. Omdat Hadoop niet wordt ondersteund door een cyclische gegevensstroom (d.w.z. een keten van fasen waarin elke uitvoer van de vorige fase de invoer is voor de volgende fase).

Oplossing:

Spark lost dit probleem op. Omdat Apache Spark toegang heeft tot gegevens van RAM in plaats van de schijf. Dit verbetert de prestaties van een iteratief algoritme dat herhaaldelijk toegang heeft tot dezelfde dataset aanzienlijk.

In Apache Spark moet voor iteratieve verwerking elke iteratie afzonderlijk worden gepland en uitgevoerd.

v. Latentie

MapReduce in Hadoop is langzamer omdat het verschillende formaten, gestructureerde en enorme hoeveelheden gegevens ondersteunt. In MapReduce neemt Map een set gegevens en converteert deze naar een andere set gegevens, waarbij een afzonderlijk element wordt opgesplitst in een sleutel-waardepaar.

Reduce neemt de output van de kaart als input en Reduce neemt de output van de kaart als input en proces verder. MapReduce heeft veel tijd nodig om deze taken uit te voeren, waardoor de latentie toeneemt.

Oplossing:

Apache Spark kan dit probleem verminderen. Hoewel Spark het batchsysteem is, is het relatief sneller, omdat het veel van de invoergegevens in het geheugen opslaat door RDD. Apache Flink-gegevensstreaming bereikt een lage latentie en een hoge doorvoer.

g. Geen gebruiksgemak

De MapReduce-ontwikkelaar in Hadoop moet voor elke bewerking code overhandigen, wat het erg moeilijk maakt om te werken. In Hadoop heeft MapReduce geen interactieve modus, maar het toevoegen van hive en pig maakt het werken met MapReduce iets eenvoudiger.

Oplossing:

Spark heeft dit probleem overwonnen, omdat de Spark een interactieve modus heeft. Zodat zowel ontwikkelaars als gebruikers tussentijdse feedback kunnen krijgen voor vragen en andere activiteiten.

Omdat Spark talloze operators op hoog niveau heeft, is het gemakkelijk om Spark te programmeren. Men kan ook Apache Flink gebruiken omdat het ook operators op hoog niveau heeft.

u. Beveiligingsprobleem

Apache Hadoop is een uitdaging in het onderhouden van de complexe applicaties. Hadoop mist encryptie op opslag- en netwerkniveau, wat een belangrijk punt van zorg is. Apache Hadoop ondersteunt Kerberos-authenticatie, wat moeilijk te beheren is.

Oplossing:

Apache Spark biedt een beveiligingsbonus. Als u Apache Spark in HDFS uitvoert, kan het HDFS ACL's en machtigingen op bestandsniveau gebruiken.

ik. Van nature kwetsbaar

Apache Hadoop is geschreven in Java. Java is de meest populaire taal, vandaar dat Java het meest wordt uitgebuit door cybercriminelen.

j. Geen caching

Apache Hadoop is niet efficiënt voor caching. MapReduce kan de tussentijdse gegevens niet in het geheugen cachen voor de verdere vereisten en dit vermindert de prestaties van Hadoop.

Oplossing:

Spark en Flink lossen dit probleem op. Spark- en Flink-cachegegevens in het geheugen voor verdere iteraties die de algehele prestaties verbeteren.

k. Lange code

Apache Hadoop heeft 1, 20.000 regels code. Het aantal regels produceert het aantal bugs. Daarom zal het meer tijd kosten om de programma's uit te voeren.

Oplossing:

Spark en Flink zijn geschreven in Scala en Java. Maar de implementatie is in Scala, dus het aantal regels code is kleiner dan bij Hadoop. Het kost dus minder tijd om de programma's uit te voeren.

Conclusie

Als gevolg van de beperking van Hadoop ontstond de behoefte aan Spark en Flink. Maak het systeem dus gebruiksvriendelijker om met een enorme hoeveelheid gegevens te spelen.

Apache Spark zorgt voor in-memory verwerking van gegevens, waardoor de verwerkingssnelheid wordt verbeterd. Flink verbetert de prestaties omdat het een enkele runtime biedt voor zowel streaming als batchverwerking.

Spark biedt beveiligingsbonus. Daarom kan men al deze Hadoop-beperkingen oplossen door andere big data-technologieën zoals Apache Spark en Flink te gebruiken.

Als u andere beperkingen van Hadoop tegenkomt, laat het ons dan weten door een opmerking achter te laten in een gedeelte hieronder.


  1. Mongo-volgorde op lengte van array

  2. mangoest/mongoest aangepaste sortering

  3. Paginering implementeren met MongoDB, Express.js &Slush

  4. Hoe de datum in MongoDB te formatteren?