Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door Aad Offerman

Freelancer

Hadoop: raamwerk voor de grote jongens

Inspiratie

Inspiratie

De twee grootste gebruikers van Hadoop zijn Facebook en Yahoo. De eerste gebruikt een cluster met tientallen petabytes aan data onder andere voor het draaien van analyses. Yahoo gebruikt Hadoop voor de indexering voor zijn search engine. Daarnaast levert dit bedrijf de meeste code en is het ook nog eens voormalige werkgever van Cutting. Er zijn echter talloze andere bekende namen op de lijst van Hadoop-gebruikers; zij zetten het platform onder meer in voor data-analyse en log-processing, zoekmachines en beeldbewerking. IBM gebruikt het voor zijn Blue Cloud-dienst, LinkedIn zoekt ermee naar People You May Know, en Twitter zet het in voor de opslag en de verwerking van tweets. Ook de talloze Wikipedia-linkjes in dit artikel worden trouwens met behulp van een Hadoop-systeem uitgeleverd.

Ten slotte nog een laatste alternatief voor wie met Hadoop aan de slag wil gaan: Sector/Sphere. Waar HDFS de bestanden ophakt in blokken, werkt dit platform met de complete, originele files. Bovendien is Sector gemaakt voor wan-verbindingen. Daarvoor is een eigen netwerkprotocol op basis van udp ontwikkeld: UDT. Sector/Sphere is geschreven in C++ en is beschikbaar voor Linux en Windows. De parallelle engine van Sphere lijkt flexibeler dan die MapReduce, en is volgens de ontwikkelaars ook nog eens twee tot vier keer sneller dan Hadoop.

Reacties (39)

Wijzig sortering
Wat mij steeds weer opvalt als ik naar Hadoop en andere soort gelijke oplossingen kijk is de grote afwezigheid van Google. Ze hebben zeer veel gedaan met het MapReduce algoritme en hebben de wereld laten zien dat je naar vrijwel oneindige grote kan schalen. Maar ik zie eigenlijk vrijwel nooit commits van uit de Google organisatie nog zie je dat zij ook maar iets loslaten over hoe zij hun systemen in het echt draaien. Theorie dat wel maar eigenlijk nooit een praktijk voorbeeld. Nu snap ik dat wel het nu eenmaal hun core business en als andere dat zelfde kunnen doen dan verliezen ze veel van hun concurrentie positie maar toch het is en blijft jammer.

Ook denk ik dat als iemand echt groot denkt hij/zij niet noodzakelijkerwijs met een Hadoop achtig platform aan de slag hoeft te gaan om te beginnen. Het belangrijkste is een goede setup maken waarbij er rekening gehouden wordt met het idee dat in de toekomst een overstap naar een andere backend nodig kan zijn. Op die manier kun je om te beginnen met een beperkt budget en beperkte kennis een goed systeem bouwen dat ondanks een aantal beperkingen flink op geschaald kan worden. Kijk naar Facebook ondanks al hun werk aan het Cassandra platform draait een zeer groot deel van de site nog steeds op MySQL en is het in hele erg veel opzichten toch echt nog steeds een MySQL gebaseerde site dus groeien tot een redelijk groot gebruikers aantal is best goed mogelijk.

Als je realistisch bent dan kun je niet zeer snel groeien van een kleine website naar een miljoen bezoekers per dag laat staan de honderden miljoenen per dag die bedrijven als Facebook en Twitter voorbij zien komen. De truck is dus simpel weg groeien van af een simpele basis die met het vervangen van de backend in het achterhoofd is gebouwd.

Het enige probleem dat ik met Hadoop en vergelijkbare oplossingen heb is dat het zo ver weg staat van de "standaard" oplossingen die iedereen kent dat ondersteuning en ontwikkeling me simpel weg veel te veel geld gaat kosten. Als ik zo'n systeem bouw moet ik er minimaal 15 jaar mee kunnen werken zonder dat ik over vervanging na wil hoeven denken. Schalen doet het wel maar wie kan het ondersteunen en er voor ontwikkelen? Natuurlijk zijn er wel mensen maar de markt is beperkt en dus zijn de kosten hoog. Het is als het verschil tussen Java en C++ ik kan zonder enig probleem een heel blik Java developers open trekken en ze met tientallen tegelijk aannemen, maar C++ developers zijn een stuk moeilijker te vinden en kosten om die reden simpel weg een stuk meer. Zeker als ik op zoek ben naar goede developers en niet naar mensen die al wel eens C++ geschreven hebben op school of voor het een of andere hobby projectje.
Ik zou dan ook zeker om te beginnen nooit met Hadoop of iets dergelijks aan de slag gaan simpel weg omdat ik de kosten zeker in het begin onder controle wil houden en later altijd als nog kan overstappen naar een platform dat beter schaalt maar meer geld gaat kosten.
Je moet niet vergeten dat Hadoop eigenlijk vooral wordt gebruikt voor offline processing. Voor zover ik weet is het daar ook niet in eerste instantie voor bedoeld. Als er gezegd wordt dat Twitter Hadoop gebruikt, gaat dat vooral om de analytics zoals trending topics uitrekenen (ja ook storage, maar dat is minder essentieel). Typisch iets dat niet hoeft te gebeuren wanneer een bezoeker op een link klikt, maar iets dat als proces op de achtergrond draait en af en toe updates produceert. Hetzelfde geldt voor zoekindexen bouwen, dat is ook een achtergrond proces. Dus of je er iets mee moet hangt ook af van de vraag: heb jij dergelijk grote data problemen dat je tegen schaal problemen aanloopt (dus het helpt niet meer om meer machines neer te zetten)? dan is hadoop je vriend.
Google gebruikt Map reduce voor zijn Cafeine database (de Google zoek machine). Deze database wordt geschat op zo'n 200 PetaByte :-)
Met Federation kan een uitgevallen master node worden opgevangen. Deze recente uitbreiding van HDFS creëert een aantal alternatieve ingangen voor het file system. Met deze extra NameNodes is een veelbesproken single-point-of-failure verholpen
Dit klopt niet helemaal. HDFS Federation verzorgd een sharding concept voor je namenode namespace. Dit houdt in dat je je namenode metadata over verschillende servers kan verspreiden, en dus beter schaalt. Als er dan een namenode uitvalt wordt een deel van je data niet beschikbaar.

Met Hadoop HA heb je dus een Backup Node die i.c.m. een shared filesysteem / fencing. Een beetje ala de Red Hat Cluster Suite. Dit lost de namenode SPOF op, en niet Federation zoals het artikel doet vermoeden.

Om wat meer achtergrond info te geven: De HDFS metadata wordt in de namenode metadata opgeslagen. Je kan dit zien als de metadata van een filesysteem (wat het eigenlijk ook is - de namenode namespace heeft de metadata van HDFS). In de namenode metadata staat exact welke datanode welk HDFS block heeft en welk bestandje op HDFS in welk HDFS block staat. Elk bestandje gebruikt pakweg 150 bytes (volgens de HDFS guru's, niet zo snel een bron bij de hand) in de namenode namespace, en aangezien dit allemaal in memory staat heb je bij 500 miljoen files flink wat geheugen nodig (pakweg 80GB aan heap space).

Hier komt HDFS Federation om de hoek kijken - door je namespace metadata over verschillende namenodes te verdelen c.q. sharden kan je je namenode namespace en dus je Hadoop cluster beter opschalen naar hele grote getallen. Op een gegeven moment ga je gewoon tegen de heap space limitaties aanlopen van de namenode.

Lang verhaal kort: Federation heeft wel eens waar niet echt een spof maar een deel van je cluster gaat nogsteeds offline bij een namenode die uitvalt. Hadoop HA is de enige echte oplossing voor de namenode SPOF.

Voor de mensen die ermee willen spelen. CDH4 Beta 1 is sinds een paar dagen uit een heeft alle toeters en bellen aan boord die ik hierboven heb beschreven.
Met de cloudera manager is het mogelijk om in één keer een compleet Hadoop cluster uit te rollen. Ik heb dit zelf gebruikt in een project en moet zeggen dat het erg fijn werkt. De installatie van het cluster verloopt via een duidelijke webinterface. Ook het toevoegen van extra nodes kan via deze webinterface.

Zie: http://www.cloudera.com/products-services/tools/
Ik begrijp niet helemaal wat je punt is. Er zijn inmiddels overal diensten rondom hadoop als paddestoelen uit de grond aan het schieten, dit is er inderdaad een van. Cloudera is misschien wel de meest profilerende (=goede marketing) hadoop service verlener, het is lang niet de enige. Het rijtje aan Hadoop gerelateerde service verleners is niet niet klein: Amazon en Microsoft (!) voor platforms, Datastax, Splunk en ik kan nog wel even doorgaan aan hele rijen leveranciers van eigen Hadoop distributies (zoals Cloudera doet)
Overigens: onder "Internet-raamwerk voor de grote jongens" zouden wel heel wat meer technologien genoemd mogen worden. O.A. Mark Logic en Lexis Nexis hebben ook wat ijzers in het vuur die qua performance totaal niet onder doen voor Hadoop (sterker nog: uit tests die wij hebben gedaan was de maturity van die tooling groter). De community achter Hadoop is groter, ja dat is waar.
Grappig dat je MarkLogic noemt. Ze hebben vorig jaar versie 5 uitgebracht met heel veel nieuwe functionaliteit én een connector voor Hadoop. Daarbij verzorgt (als ik me niet al te zeer vergis) Hadoop de procesflow, terwijl MarkLogic voor de storage en (een deel van) het feitelijke werk gebruikt kan worden.
Interessant artikel!
Watson, die computer van IBM die Jeopardy won, draait volgens mij ook Hadoop :)

Overigens lijkt me zo'n cluster wel lastiger debuggen als b.v. een hoge load hebt. Je kan minder makkelijk problemen isoleren en optimaliseren. Maar je kan er aan de andere kant wel heel makkelijk er een paar nodes bijzetten.
Yup, op SUSE Linux Enterprise: http://en.wikipedia.org/wiki/Watson_(computer)#Software

Talen onder andere Java, C++ en Prolog :D
Ik heb tot nu toe tweemaal met Hadoop mogen spelen; eenmaal voor een grote Nederlandse webshop en eenmaal met een Nederlandse handelswebsite. In beide gevallen Hadoop losgelaten op de access logs, en daar kun je best wel veel info uit krijgen.

Zie bijv. ook een blogpost van mijn collega die veel met Hadoop etc doet, laat zien wat je met een bakkes aan Twitter data kunt.

Nog een opmerking: Programmeren voor Hadoop is op zich goed te doen, maar in Java is het nogal 'code-intensief' - voor elke Map of Reduce mag je een interface implementeren en nog meer van dat boilerplate inkloppen.

Voor Scala is er nu het Scoobi framework, waarmee je met weinig code en functionele statements complexe Hadoop map-reduce jobs kunt bouwen. Als je veel met Hadoop doet is het zeker iets om naar te kijken.
Interessant artikel :) Zou wel graag meer van dit soort artikelen willen zien.
Ja inderdaad! Meer nerd artikelen over nerd software! Al die nieuwe video kaarten en nieuwe quad cpu's voor telefoons ken ik nu wel. Meer meer meer!
Hadoop is niet voor Nerds. Hadoop is geen nerd software.
met Hadoop kan je zeer snel zeer grote databestanden minen. Er is bv een storage leverancier die gebuikt Hadoop om trending in fouten te analyseren.
Juist, maar de hr afdeling verzint die oplossing niet.... dit is vrij serieuze software, niet voor het gemiddelde mkb inzetbaar en voor a technische mensen niet te bevatten. Voor ons wel. Wij zijn nerds. Dus Hadoop is voor nerds.
Wij gebruiken het ook voor onze website en we zijn qua grootte toch echt een mkb. Dat iets geschikt is voor de grote jongens maakt het nog niet ineens ongeschikt voor de kleinere :+
Toevallig op techdays ook naar een presentatie geweest die vooral over Hadoop ging. Mocht je dus wat meer informatie willen moet je even zoeken naar de presentatie van Gert Drapers - Big Data Big Deal.

Erg interessante materie. Jammer dat ik nog niet in het vakgebied opereer waar het eventueel in te zetten is.
Naar mijn idee is dit artikel volledig (op pagina 4 en 5 na) op deze presentatie gebaseerd. Misschien te ver gedacht, maar de opbouw en informatie van de eerste drie pagina's komt zo goed als exact overeen inclusief de illustraties.

Helaas worden in dit artikel geen benchmarks gegeven in vergelijking met Microsoft Sql Server Parallel Data Warehouse of Oracle Data Warehousing. Deze (hard- en software)oplossingen gebruiken SQL dus voor het gros van programmeurs toegankelijk en direct bruikbaar.

Daarnaast is naar mijn idee Big Data, Hadoop, MapReduce vooral een nieuwe (marketing) term voor Full Text Search, alleen dan op commodity hardware.

Edit: 'Sql' aan tweede paragraaf toegevoegd en 'commodity hardware' aan derde.
Edit 2: Naar aanleiding van reactie van Wilbert de Vries strike-though toegevoegd.

[Reactie gewijzigd door Junketsu op 22 februari 2012 09:50]

Dat lijkt me onmogelijk aangezien dit artikel al voor Techdays is geschreven :)
Bedankt voor de informatie, ik heb mijn reactie op jouw info aangepast.
Tweakers was zover ik weet aanwezig op de TechDays, dus ik vermoed hetzelfde. Opbouw is inderdaad zo goed als identiek.

Binnenkort dus een special over Windows Azure :+
Ik kreeg als Expert Panellid al we(e)k(en) voor TechDays een mailtje of ik input wilde leveren voor een Hadoop artikel, dus het is waarschijnlijk toeval of Microsoft heeft de presentatie geleend van Tweakers ;)

PS: ik weet geen snars van Hadoop, niet mijn vakgebied zegmaar :+
Uitstekend geschreven artikel!

Ik ben zelf een tijdje bezig geweest om te kijken naar de mogelijkheden van Hadoop, maar kwam al snel tot de conclusie dat het veel te groot is voor onze situatie...

Geinige is wel dat EMC onlangs de Greenplum oplossing wilde aanbieden voor een ander probleem waar we mee worstelen, maar dat is niet doorgegaan...

Hoe dan ook: Leuk stuk, en ik hoop dat je er nog wat meer gaat schrijven! :)
Hadoop is geen wondermiddel omdat Facebook en Yahoo het gebruiken.
Zie het meer als een kant en klare tool om BigTable achtige zaken op een flexibelere manier te verwerken en beheren.
Hadoop heeft het voordeel dat je eenvoudig je analyses kan wijzigen maar
als je heel veel data moet verwerken en bijna altijd hetzelfde ermee moet doen dan zijn er oplossingen die vele malen efficienter werken dan Hadoop.

Ook kunnen de kosten van een Hadoop cluster in een Amazon cloud nogal uit de klauwen lopen omdat je waarschijnlijk nogal veel data aan het verslepen bent. En daar rekent Amazon je ook graag nog even op af.
Zeer interessant artikel. Kunnen we hier meer naar krijgen?

Ik denk dat er veel Tweakers.net-bezoekers naar een hoger level getild willen worden. :-)
Wat is 'veel voldoende kennis'?

En eerste alinea suggereert dat je een prachtig internetbedrijf uit de grond kan trekken, maar dat je daarvoor wel een groot serverpark nodig hebt. Een serverpark is nog altijd een middel, en geen doel op zich ;-)

Op dit item kan niet meer gereageerd worden.


Apple iPhone XS Red Dead Redemption 2 LG W7 Google Pixel 3 XL OnePlus 6T (6GB ram) FIFA 19 Samsung Galaxy S10 Google Pixel 3

Tweakers vormt samen met Tweakers Elect, Hardware.Info, Autotrack, Nationale Vacaturebank, Intermediair en Independer de Persgroep Online Services B.V.
Alle rechten voorbehouden © 1998 - 2019 Hosting door True