Apache Hadoop

Ämne: BI-verktyg

Senast förra veckan kunde man läsa en artikel i Computer of Sweden om ännu ett exempel där man har löst hanteringen av Big Data med hjälp av Hadoop. I det fallet var det spelföretaget King som använder Hadoop för att läsa och analysera deras loggfiler. Men vad är Hadoop och vad är det bra till? Det finns hur mycket som helst att skriva om Hadoop och dess teknologi då den skiljer sig ganska rejält från de mer traditionella databaserna, men här kommer några aspekter.

I slutet av 2011 släpptes den första skarpa versionen 1.0 av Apache Hadoop efter sex års utveckling. Hadoop är inspirerat av Googles egenutvecklade filsystem GFS och Googles MapReduced ramverk men Hadoop är huvudsakligen utvecklat av Yahoo. Grundstenen i Hadoop är deras distrubuerade filsystem HDFS. Det är ett filsystem som är designat för att distribuera beräkningar på vanlig standardhårdvara och inte kräver dyr special designad hårdvara. På detta filsystem kan man sedan köra flera olika applikationer för olika ändamål. Det mest omtalade är MapReduced ramverket som handlar om att distribuera beräkningar. Man kan även köra HBase som är en kolumnbaserad databas, elller Mahout som är ett maskininlärningsbibliotek eller Hive som erbjuder ett SQL liknande språk för ad-hoc frågor och analys. Det finns egentligen ingen färdig lösning utan en massa komponenter som man bygger sin egen Hadoop stack med beroende på vilka behov man har.

Alla BI leverantörer stödjer numera Hadoop, men det är skillnad på vilket sätt företagen har valt att stödja Hadoop. Vissa företag har valt att integrera själva Hadoop plattformen i deras databasprodukter medan andra erbjuder connectors till deras existerande databaser. För att förvirra ännu mera så finns Hadoop också i olika versioner, eller distributioner likt Linux. De två mest kända är Cloudera och MapR som är två kommersiella alternativ. BI leverantörerna stödjer normalt connectors till endast vissa av dessa distributioner och inte generellt.

När ska man då använda Hadoop? På den här frågan finns det inget bra svar. Om man tittar på vilka företag som har varit tidiga att anamma Hadoop så är det internet företag som Yahoo, Facebook, LinkedIn, Twitter, Amazon, m.fl. Anledningen till detta är att det är främst dessa företag som har hanterat datamängder i storleksordningen petabyte, d.v.s. en miljon gigabyte. Inte nog med att de hanterar enorma datamändger, det är dessutom ostrukturerat data som saknar datamodell och inte passar att lagra i en relationsdatabas. Generellt kan man nog säga att om man har datamängder uppåt petabytes eller ostrukturerat data som inte passar att lagra i en relationsdatabas ska man absolut titta ifall Hadoop kan hjälpa till. Hadoop lagrar sitt dock sitt data i filer utan index vilket innebär att om du vill hitta någonting måste alltid ett MapReduced jobb gå igenom allt data. Detta tar tid och det är den huvudsakliga anledningen till att Hadoop aldrig kommer att ersätta er nuvarande databas lika lite som er nuvarande databas kommer att ersätta Hadoop. Den optimala data warehouse lösningen är en hybrid av databaser där man utnyttjar respektives styrka. Ifall det kostar mer än det smakar får man helt enkelt kompromissa och välja de komponenter som ger ”good enough” prestanda.

Det finns en sida på Hadoops wiki som listar företag som använder Hadoop samt vilken hårdvara de kör på och vilka komponenter de använder. Där ser man tydligt att det varierar väldigt mycket bland användningsområdena.