dinsdag 3 april 2012

Hadoop


Hadoop? Nog nooit van gehoord waarschijnlijk. U bent niet de enige. Maar dat gaat wel veranderen gelet op de enorme groei in, wat genoemd wordt, ‘Big-Data’ toepassingen.. Daarom in deze column een uitleg over wat Hadoop en soortgelijke technologische ontwikkelingen zijn en waarom u dat straks misschien gaat gebruiken.


Hadoop en andere technologiën als Cloudera, , MongoDB, Cassandra, MapR zijn frameworks voor gebruik in data-intensieve, gedistribueerde toepassingen. Zij zijn ontworpen om simultaan te kunnen werken met duizenden servers en petabytes aan data.

Veel van deze toepassingen maken gebruik van  wat aangeduid wordt als NoSQL. Deze term geeft direct aan wat het is: géén SQL. Voor de niet techneuten: SQL is sinds jaren de standaard manier waarop met databases (gegevensbanken) gewerkt wordt. Gegevens worden op een gestructureerde wijze opgeslagen in gegevensbanken en vervolgens door middel van een ‘Structured Query Language’ kunnen deze gegevens aan elkaar gerelateerd worden en kan informatie verkregen worden uit deze opgeslagen gegevens. Gestructureerd wil zeggen dat de alle gegevens geordend zijn, in IT terminologie betekent het dat gegevens opgeslagen zijn in ‘regels’ en iedere regel bestaat uit een vaste indeling van gedefinieerde ‘velden’. Een beetje zoals grammatica werkt.

SQL heeft echter één groot nadeel: het is geoptimaliseerd voor het werken met gestructureerde gegevens.
Ongestructureerde gegevens hebben geen vaste indeling. Denk aan een stuk tekst, aan een gesproken boodschap, een twitter of facebook bericht of een video. Als je verschillende stukken tekst aan elkaar zou willen relateren om er informatie uit te krijgen, kan dat eigenlijk niet anders dan door de hele tekst te indexeren, de indexen met elkaar te vergelijken, en vervolgens onderling relaties te leggen. Dat gaat op zich nog wel goed als het om het relateren van woorden gaat, maar het wordt al veel lastiger om de verbanden waarin de woorden staan op die manier te relateren.

De oplossing van Google


Google had, toen zij begonnen met het indexeren van websites, uiteraard te kampen met dit probleem. Websites zijn per definitie vormen van ongestructureerde gegevens. Er was voor Google nog een probleem: de hoeveelheid gegevens die geïndexeerd moest worden was gigantisch. Daarnaast had Google nog een uitdaging: het tegelijkertijd kunnen afhandelen van miljoenen opvragingen uit de gegevensbank.
Indien Google uitgegaan was van SQL zouden daarvoor hele grote zware database servers nodig zijn geweest met een hele grote gegevensbank. Zo groot dat deze niet te bouwen zou zijn geweest. Geen machine ter wereld zou daarnaast in staat geweest zijn om miljoenen opvragingen tegelijkertijd af te kunnen handelen.

Google zocht naar een oplossing en bedacht dat deze moest liggen in het verdelen van alle gegevens over heel veel systemen zodat ieder systeem slechts handelingen hoefde uit te voeren op de kleine hoeveelheid gegevens waar dat systeem verantwoordelijk voor was. Daardoor konden goedkope standaard servers ingezet worden, en hoewel het er wel veel zijn, was dit veel efficiënter dan hele zware en dus dure servers inzetten. Bovendien, er was geen limiet meer. Want standaard servers kunnen zo bijgeschakeld worden. En door dezelfde delen van de gegevens te kopiëren op verschillende standaard servers, kon de belasting verdeeld worden, was er automatisch een backup als er een server zou uitvallen, en konden de servers verspreid over de hele wereld opgesteld worden zodat een calamiteit nagenoeg geen invloed zou hebben. En uiteraard was het nu wel mogelijk om miljoenen uitvragen tegelijkertijd af te handelen, zolang er maar voldoende systemen ingezet werden.

Hoewel dit eenvoudig lijkt, is het dat allerminst. Want het proces om de gegevens te verdelen over al die honderdduizenden systemen, bij te houden waar wat opgeslagen wordt, de resultaten van alle bij een uitvraag betrokken systemen samenvoegen, uitvragen te verdelen over alle systemen die daar mogelijk bij betrokken moeten zijn en nog veel meer, is zeer complex.
Maar het is Google gelukt, zoals we elk moment van de dag met miljoenen gelijktijdig ervaren. Google heeft daarvoor ‘MapReduce’ bedacht. En MapReduce is de basis geweest voor Hadoop. Google’s technieken zijn opgenomen in Nutch, een Open Source project, en Apache heeft Hadoop daar op doorontwikkeld. Daarbij is de term ‘NoSQL’ bedacht om Hadoop te onderscheiden van andere database principes. Hadoop is dus bedoeld voor die omgevingen waar informatie uit heel veel opgeslagen ongestructureerde gegevens moet worden gehaald en waar heel veel uitvragen gelijktijdig plaatsvinden, op basis van NoSQL. Apache heeft het Hadoop framework vrij  beschikbaar gesteld, waardoor het mogelijk werd dat anderen op basis van dit framework produkten te ontwikkelen of om Hadoop te integreren in bestaande produkten. Dit heeft geleid tot de verschillende toepassingen die nu bestaan, zoals Cloudera, MongoDB, Cassandra en dergelijke.

Google’s MapReduce architectuur was een van de eerste methoden om de uitdagingen met enorme hoeveelheden data en bijna real-time analyse aan te gaan. Inmiddels, MapReduce stamt al uit 2001, zijn er verbeteringen aangebracht en specifieke architecturen bedacht en ontwikkeld voor specifieke situaties.

Zo gebruikt Google nu de Percolator architectuur voor Google Instant en de Dremel architectuur om interactieve uitvragen over miljarden gegevens te ondersteunen, daarmee MapReduce overbodig makend. En Hadoop is, zoals al aangegeven, ook een verdere ontwikkeling van MapReduce waaraan nog steeds verbeteringen worden aangebracht en op basis waarvan nieuwe Bigdata toepassingen ontwikkeld worden. Pas eind 2011 heeft Apache de versie 1.0 van Hadoop vrijgegeven.

Bigdata voor bedrijven

Niet alleen worden er door bedrijven steeds meer gegevens opgeslagen, bedrijven gebruiken ook steeds vaker de onmetelijke hoeveelheid data op internet voor business decisions. Steeds meer van die gegevens zijn ongestructureerd. En door het steeds intensiever gebruik van webportals komen er steeds meer gelijktijdige uitvragen van gegevens. En die uitvragen betreffen steeds vaker het naar behoefte kunnen relateren van op zich niet gerelateerde gegevens om informatie te verkrijgen over bijvoorbeeld klantgedrag, financiële onderzoeken, investeringsrisico’s etc.

De oude vertrouwde SQL omgevingen voldoen daarvoor niet. Ze zijn er ook nooit voor ontworpen. Naarmate we meer en meer gegevens opslaan, moeten die database servers steeds zwaarder worden. Termen als ’12-core’, ’64-core’ processors, terrabytes aan ‘internal memory’, en Terrabit verbindingen tussen de server en de feitelijk opslag van de data geven al aan dat er immens zware apparatuur nodig is. Maar ook die kunnen niet verhelpen dat het steeds meer tijd en kracht kost om die informatie te krijgen die op een bepaald moment nodig is om een onderbouwde ‘business decision’ te maken. Bovendien worden deze systemen onbetaalbaar.

Wel moet opgemerkt worden dat op Hadoop gebaseerde frameworks die gebruik maken van NoSQL meestal voorbij gaan aan het fundamentele uitgangspunt van SQL: het zogeheten ‘ACID’, wat staat voor ‘atomicity, consistency, isolation, durability’, kortweg vertaald als: ondeelbaarheid, eenduidigheid, geïsoleerdheid en duurzaamheid. Eigenschappen die essentieel zijn voor de echte transactie gebaseerde systemen omdat een transactie slechts succesvol kan zijn als aan alle vier de voorwaarden is voldaan.
Bigdata systemen gebaseerd op NoSQL zullen dus niet zozeer ingezet gaan worden voor transacties, temeer ook omdat deze vrijwel altijd gebaseerd zijn op gestructureerde gegevens waardoor de noodzaak voor NoSQL niet zo groot is. Daarbij blijft natuurlijk de uitdaging om systemen te ontwerpen die miljarden transacties gelijktijdig kunnen uitvoeren. Gelukkig vinden er ook bij SQL ontwikkelingen plaats die deze uitdaging moeten gaan verhelpen (NextGen SQL). Maar dat is iets voor een volgende column.

Ik verwacht dat het Hadoop framework of doorontwikkelingen daarvan door steeds meer fabrikanten van database servers en systemen geïmplementeerd gaan worden. Zo zal Microsoft Hadoop implementeren in het Azure platform en andere fabrikanten zullen volgen, Onder welke noemer dat zal zijn, Bigdata, NoSQL, Hadoop of iets anders, weet ik niet. Iedere fabrikant zal zijn eigen methodieken of architecturen bedenken. Maar in de basis zijn ze min of meer gelijk aan Hadoop. En omdat grote bedrijven steeds meer gebruik maken van het internet als gegevensbron en daarom te maken krijgen met Bigdata, zullen deze Bigdata systemen een grote vlucht gaan nemen.
Facebook bijvoorbeeld is volledig gebaseerd op Hadoop, en zij claimen dat hun Hadoop cluster 30 Petabyte (30.000.000 Gigabyte) omvat. Andere applicaties die gebaseerd zijn op Hadoop zijn Yahoo, Amazon. AOL, eBay, LinkedIn, Twitter en Foursquare. Maar ook de hardware leveranciers ondersteunen of gebruiken Hadoop: Microsoft, IBM, HP en zelfs Apple bieden allen producten op basis van Hadoop.
Daarom: misschien heeft u nu nog nooit van Hadoop gehoord, maar het lijkt erop dat dit in de toekomst zal veranderen.

Voor meer informatie:

Hadoop: The Definitive Guide
MapReduce for the Cloud
Publisher: O'Reilly Media
Released: May 2009
Pages: 528



Geen opmerkingen:

Een reactie posten