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:
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