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