Skriv en Hadoop MapReduce jobb i et hvilket som helst programmeringsspråk - 💡 Fix My Ideas

Skriv en Hadoop MapReduce jobb i et hvilket som helst programmeringsspråk

Skriv en Hadoop MapReduce jobb i et hvilket som helst programmeringsspråk


Forfatter: Ethan Holmes, 2019

Hadoop er et Java-basert distribuert applikasjons- og lagringsramme som er designet for å kjøre på tusenvis av råvarer. Du kan tenke på det som en åpen kildekode tilnærming av Googles søkeinfrastruktur. Yahoo! Kjører faktisk mange komponenter av sine søke- og annonseprodukter på Hadoop, og det er ikke så overraskende at de er en stor bidragsyter til prosjektet.

MapReduce er en metode for å skrive programvare som kan parallelliseres på tvers av tusenvis av maskiner for å behandle enorme mengder data. For eksempel, la oss si at du vil telle antall henvisninger, etter domene, i alle verdens Apache-serverlogger. Her er kjennetegnet av hvordan du vil gjøre det:

  1. Få hele verden til å laste opp sine serverlogger til ditt gigantor-distribuerte filsystem. Du kan automatisere og omtrentliggjøre dette ved å ha hver webadministrator legge til noe javascript-kode på deres nettsted som får sine besøkende til å pinge din egen server, noe som resulterer i en gigantisk loggfil av alle verdens serverlogger. Ditt valgte filsystem er HDFS, Hadoop Distributed File System, som håndterer partisjonering og replikerer denne enorme filen mellom alle klyngenoder.
  2. Del verdens største loggfil i små biter, og få tusenvis av klyngemaskiner å analysere brikkene, se etter henvisninger. Dette er "Map" -fasen. Hver bit behandles, og henvisningene som er funnet i den delen, sendes tilbake til systemet, som lagrer utdataene som er tastet av referentens vertsnavn. Klumpoppdragene er optimalisert slik at klusternoderne vil behandle klumper av data som tilfeldigvis lagres på sitt lokale fragment av det distribuerte filsystemet.
  3. Til slutt blir alle utgangene fra kartfasen samlet. Dette kalles "Reduce" -fasen. Klyngenavnene er tildelt en vertsnavn-nøkkel som ble opprettet under kartfasen. Alle utgangene for den nøkkelen leses inn av noden og telles. Nodeen gir deretter et enkelt resultat som er referansens domenenavn, og totalt antall henvisninger som ble produsert fra den henviseren. Dette er gjort hundretusenvis av ganger, en gang for hvert henvisningsdomene, og distribuert over tusenvis av klusternoder.

På slutten av denne hypotetiske MapReduce-jobben, er du igjen med en kort liste over hvert domene som er referert til trafikk, og en telling av hvor mange henvisninger det er gitt. Hva er kult om Hadoop og MapReduce er at det gjør skrive distribuerte applikasjoner som dette overraskende enkelt. De to funksjonene for å utføre eksemplet referrer parsing kan bare være omtrent 20 linjer med kode. Hadoop tar vare på de enorme utfordringene med distribuert lagring og prosessering, og lar deg fokusere på din spesifikke oppgave.

Siden Hadoop er skrevet i Java, er den naturlige måten for deg å lage distribuerte jobber å inkapslere dine kart- og reduksjonsfunksjoner i en java-klasse. Hvis du ikke er en Java-junkie, skjønner du ikke, det er et jobbomslag som heter HadoopStreaming, som kan kommunisere med ethvert program du skriver med vanlig STDIN og STDOUT. Dette lar deg skrive din distribuerte jobb i Perl, Python eller til og med et shell script! Du oppretter to programmer, en for mapper og en for reduksjonsenheten, og HadoopStreaming håndterer opplasting av dem til alle klusternoder og overføring av data til og fra programmene dine.

Hvis du vil leke med dette, anbefaler jeg virkelig et par howtos skrevet av tysk hacker Michael G. Noll. Han satte sammen et walkthrough for å få Hadoop opp og kjører på Ubuntu, og også en fin introduksjon til å skrive et MapReduce-program ved hjelp av HadoopStreaming (med Python som et eksempel).

Er det noen Hackszine-lesere som bruker Hadoop? Gi oss beskjed om hva du gjør og pek oss til mer informasjon i kommentarene.

Hadoop Running Hadoop på Ubuntu Linux Skrive et Hadoop MapReduce Program i Python



Du Kan Være Interessert

Dine prosjekter

Dine prosjekter


Fixperts: Fixing er en måte å tenke på

Fixperts: Fixing er en måte å tenke på


Jeg trenger en Spider Tank Robot Kit

Jeg trenger en Spider Tank Robot Kit


Maker Faire Calendar - august-oktober 2013

Maker Faire Calendar - august-oktober 2013






Siste Innlegg