Hadoop is een open source, op Java gebaseerd raamwerk dat wordt gebruikt voor de opslag en verwerking van big data. De gegevens worden opgeslagen op goedkope commodity-servers die als clusters draaien. Het gedistribueerde bestandssysteem maakt gelijktijdige verwerking en fouttolerantie mogelijk. Hadoop is ontwikkeld door Doug Cutting en Michael J. Cafarella en maakt gebruik van het MapReduce-programmeermodel om gegevens sneller op te slaan en op te halen op de knooppunten. Het framework wordt beheerd door de Apache Software Foundation en is gelicenseerd onder de Apache License 2.0.
Jarenlang is de verwerkingskracht van applicatieservers enorm toegenomen, maar databases zijn daarbij achtergebleven vanwege hun beperkte capaciteit en snelheid. Maar nu veel toepassingen big data genereren die moeten worden verwerkt, speelt Hadoop een belangrijke rol in het geven van een hoognodige opknapbeurt aan de databasewereld.
Download Hadoop and Data Lakes nu.
Lees nu
Ook vanuit zakelijk oogpunt zijn er directe en indirecte voordelen. Door gebruik te maken van open-sourcetechnologie op goedkope servers die meestal in de cloud staan (en soms on-premises), realiseren organisaties aanzienlijke kostenbesparingen.
Daarnaast leidt de mogelijkheid om massaal gegevens te verzamelen en de inzichten die het kraken van deze gegevens oplevert, tot betere zakelijke beslissingen in de echte wereld – zoals de mogelijkheid om je op het juiste consumentensegment te richten, foutieve processen uit te roeien of te herstellen, vloeroperaties te optimaliseren, relevante zoekresultaten te bieden, voorspellende analyses uit te voeren, enzovoort.
- Hoe Hadoop traditionele databases verbetert
- Capaciteit: Hadoop slaat grote hoeveelheden gegevens op.
- Snelheid: Hadoop slaat gegevens sneller op en haalt ze sneller op.
- 5 voordelen van Hadoop voor Big Data
- Het Hadoop Ecosysteem: Core Components
- HDFS: onderhoud van het gedistribueerde bestandssysteem
- YARN: Yet Another Resource Negotiator
- MapReduce
- Het Hadoop-ecosysteem: Aanvullende componenten
- Hive: Data Warehousing
- Pig: Reduce MapReduce Functions
- Hive Versus Pig
- Flume: Big Data Ingestion
- Sqoop: Data Ingestion for Relational Databases
- Zookeeper: Coördinatie van gedistribueerde applicaties
- Kafka: Snellere gegevensoverdracht
- HBase: Non-Relational Database
- Uitdagingen van Hadoop
- Steile leercurve
- Verschillende datasets vereisen verschillende benaderingen
- Beperkingen van MapReduce
- Gegevensbeveiliging
- Hadoop vs Apache Spark
- Een toekomst met veel mogelijkheden
Hoe Hadoop traditionele databases verbetert
Hadoop lost twee belangrijke uitdagingen met traditionele databases op:
Capaciteit: Hadoop slaat grote hoeveelheden gegevens op.
Door gebruik te maken van een gedistribueerd bestandssysteem, HDFS genaamd (Hadoop Distributed File System), worden de gegevens opgesplitst in brokken en opgeslagen over clusters van commodity-servers. Aangezien deze commodity-servers zijn gebouwd met eenvoudige hardwareconfiguraties, zijn ze economisch en gemakkelijk schaalbaar als de gegevens groeien.
Snelheid: Hadoop slaat gegevens sneller op en haalt ze sneller op.
Hadoop maakt gebruik van het functionele programmeermodel MapReduce om parallelle verwerking uit te voeren over datasets. Wanneer een query naar de database wordt gestuurd, worden de taken opgesplitst en gelijktijdig uitgevoerd over gedistribueerde servers, in plaats van de gegevens opeenvolgend te verwerken. Ten slotte wordt de output van alle taken samengevoegd en teruggestuurd naar de applicatie, waardoor de verwerkingssnelheid drastisch wordt verbeterd.
5 voordelen van Hadoop voor Big Data
Voor big data en analytics is Hadoop een redder in nood. Verzamelde gegevens over mensen, processen, objecten, hulpmiddelen enzovoort zijn alleen nuttig als er zinvolle patronen ontstaan die op hun beurt leiden tot betere beslissingen. Hadoop helpt de uitdaging van de uitgestrektheid van big data aan te gaan:
- Veerkracht – Gegevens die in een knooppunt zijn opgeslagen, worden ook gerepliceerd in andere knooppunten van het cluster. Dit zorgt voor fouttolerantie. Als een node uitvalt, is er altijd een back-up van de gegevens beschikbaar in het cluster.
- Schaalbaarheid – In tegenstelling tot traditionele systemen die een beperking hebben op gegevensopslag, is Hadoop schaalbaar omdat het in een gedistribueerde omgeving werkt. Als de behoefte zich voordoet, kan de opzet eenvoudig worden uitgebreid met meer servers die tot meerdere petabytes aan gegevens kunnen opslaan.
- Lage kosten – Omdat Hadoop een open-source framework is, waarvoor geen licentie hoeft te worden aangeschaft, zijn de kosten aanzienlijk lager in vergelijking met relationele databasesystemen. Het gebruik van goedkope commodity-hardware werkt ook in zijn voordeel om de oplossing economisch te houden.
- Snelheid – Hadoop’s gedistribueerde bestandssysteem, gelijktijdige verwerking en het MapReduce-model maken het mogelijk complexe query’s binnen enkele seconden uit te voeren.
- Gegevensdiversiteit – HDFS kan verschillende gegevensindelingen opslaan, zoals ongestructureerd (bijv. video’s), semigestructureerd (bijv. XML-bestanden) en gestructureerd. Bij het opslaan van gegevens hoeft niet te worden gevalideerd aan de hand van een vooraf gedefinieerd schema. In plaats daarvan kunnen de gegevens in om het even welk formaat worden gedumpt. Later, wanneer de gegevens worden opgehaald, worden ze geparseerd en in elk gewenst schema ingepast. Dit geeft de flexibiliteit om verschillende inzichten af te leiden met dezelfde gegevens.
Download O’Reilly Report: Moving Hadoop to the Cloud nu.
Lees nu
Het Hadoop Ecosysteem: Core Components
Hadoop is niet slechts één applicatie, het is eerder een platform met verschillende integrale componenten die gedistribueerde dataopslag en -verwerking mogelijk maken. Deze componenten vormen samen het Hadoop-ecosysteem.
Sommige van deze componenten zijn kerncomponenten, die de basis van het raamwerk vormen, terwijl sommige aanvullende componenten zijn die extra functionaliteiten in de Hadoop-wereld brengen.
De kerncomponenten van Hadoop zijn:
HDFS: onderhoud van het gedistribueerde bestandssysteem
HDFS is de pijler van Hadoop die het gedistribueerde bestandssysteem onderhoudt. Het maakt het mogelijk om data op te slaan en te repliceren over meerdere servers.
HDFS heeft een NameNode en DataNode. DataNodes zijn de commodity servers waar de gegevens daadwerkelijk worden opgeslagen. De NameNode daarentegen bevat metadata met informatie over de gegevens die op de verschillende nodes zijn opgeslagen. De applicatie heeft alleen interactie met de NameNode, die naar behoefte communiceert met de gegevensknooppunten.
YARN: Yet Another Resource Negotiator
YARN staat voor Yet Another Resource Negotiator. Het beheert en plant de bronnen, en beslist wat er in elk gegevensknooppunt moet gebeuren. De centrale master node die alle verwerkingsverzoeken beheert wordt de Resource Manager genoemd. De Resource Manager werkt samen met Node Managers; elke slave datanode heeft zijn eigen Node Manager om taken uit te voeren.
MapReduce
MapReduce is een programmeermodel dat voor het eerst door Google werd gebruikt voor het indexeren van zijn zoekoperaties. Het is de logica die wordt gebruikt om gegevens op te splitsen in kleinere sets. Het werkt op basis van twee functies – Map() en Reduce() – die de gegevens op een snelle en efficiënte manier ontleden.
Eerst groepeert, filtert en sorteert de Map-functie meerdere gegevensverzamelingen parallel om tupels (sleutel-waardeparen) te produceren. Vervolgens aggregeert de Reduce-functie de gegevens uit deze tuples om de gewenste uitvoer te produceren.
Het Hadoop-ecosysteem: Aanvullende componenten
Hierna volgen enkele aanvullende componenten die op grote schaal in het Hadoop-ecosysteem worden gebruikt.
Hive: Data Warehousing
Hive is een data warehousing systeem dat helpt bij het bevragen van grote datasets in het HDFS. Vóór Hive moesten ontwikkelaars complexe MapReduce-jobs maken om de Hadoop-gegevens te doorzoeken. Hive gebruikt HQL (Hive Query Language), dat lijkt op de syntaxis van SQL. Aangezien de meeste ontwikkelaars een SQL-achtergrond hebben, is Hive gemakkelijker aan te leren.
Het voordeel van Hive is dat een JDBC/ODBC-stuurprogramma fungeert als interface tussen de applicatie en het HDFS. Het stelt het Hadoop-bestandssysteem bloot als tabellen, zet HQL om in MapReduce-jobs, en vice versa. Dus terwijl de ontwikkelaars en databasebeheerders het voordeel krijgen van batchverwerking van grote datasets, kunnen ze eenvoudige, vertrouwde query’s gebruiken om dat te bereiken. Hive is oorspronkelijk ontwikkeld door het Facebook team, maar is nu een open source technologie.
Pig: Reduce MapReduce Functions
Pig, oorspronkelijk ontwikkeld door Yahoo!, is vergelijkbaar met Hive in die zin dat het de noodzaak wegneemt om MapReduce functies te maken om de HDFS te bevragen. Vergelijkbaar met HQL, is de gebruikte taal – hier “Pig Latin” genoemd – dichter bij SQL. “Pig Latin” is een high-level data flow taallaag bovenop MapReduce.
Pig heeft ook een runtime omgeving die interfaced met HDFS. Scripts in talen als Java of Python kunnen ook in Pig worden ingebed.
Hive Versus Pig
Hoewel Pig en Hive vergelijkbare functies hebben, kan de een effectiever zijn dan de ander in verschillende scenario’s.
Pig is nuttig in de datavoorbereidingsfase, omdat het complexe joins en queries gemakkelijk kan uitvoeren. Het werkt ook goed met verschillende gegevensformaten, waaronder semi-gestructureerde en ongestructureerde. Pig Latin staat dichter bij SQL, maar wijkt ook genoeg af van SQL om een leercurve te hebben.
Hive werkt echter goed met gestructureerde gegevens en is daarom effectiever bij data warehousing. Het wordt gebruikt aan de serverkant van het cluster.
Onderzoekers en programmeurs gebruiken Pig meestal aan de clientkant van een cluster, terwijl gebruikers van business intelligence, zoals data-analisten, Hive als de juiste fit vinden.
Flume: Big Data Ingestion
Flume is een big data ingestion tool die fungeert als koeriersdienst tussen meerdere databronnen en het HDFS. Het verzamelt, aggregeert en verstuurt enorme hoeveelheden streaming data (bijv. logbestanden, events) die worden gegenereerd door applicaties zoals social media sites, IoT apps en e-commerce portals naar de HDFS.
Flume is rijk aan functies, het:
- Heeft een gedistribueerde architectuur.
- Zorgt voor betrouwbare dataoverdracht.
- is fouttolerant.
- heeft de flexibiliteit om gegevens in batches of real-time te verzamelen.
- kan horizontaal worden geschaald om meer verkeer te verwerken, als dat nodig is.
Data bronnen communiceren met Flume agenten – elke agent heeft een bron, kanaal, en een sink. De bron verzamelt gegevens van de verzender, het kanaal slaat de gegevens tijdelijk op, en ten slotte stuurt de sink de gegevens naar de bestemming, een Hadoop-server.
Sqoop: Data Ingestion for Relational Databases
Sqoop (“SQL,” voor Hadoop) is een andere data ingestion tool zoals Flume. Terwijl Flume werkt op ongestructureerde of semi-gestructureerde data, wordt Sqoop gebruikt om data te exporteren van en te importeren in relationele databases. Aangezien de meeste bedrijfsgegevens zijn opgeslagen in relationele databases, wordt Sqoop gebruikt om die gegevens in Hadoop te importeren zodat analisten ze kunnen onderzoeken.
Databasebeheerders en ontwikkelaars kunnen een eenvoudige opdrachtregelinterface gebruiken om gegevens te exporteren en importeren. Sqoop converteert deze commando’s naar MapReduce-formaat en stuurt ze naar de HDFS met behulp van YARN. Sqoop is ook fouttolerant en voert gelijktijdige bewerkingen uit zoals Flume.
Zookeeper: Coördinatie van gedistribueerde applicaties
Zookeeper is een service die gedistribueerde applicaties coördineert. In het Hadoop-framework fungeert het als een beheertool met een gecentraliseerd register dat informatie bevat over de cluster van gedistribueerde servers die het beheert. Enkele van de belangrijkste functies zijn:
- Het bijhouden van configuratie-informatie (gedeelde staat van configuratiegegevens)
- Namingservice (toewijzing van namen aan elke server)
- Synchronisatieservice (behandelt deadlocks, race condition en inconsistentie van gegevens)
- Leiderverkiezing (kiest een leider onder de servers via consensus)
De cluster servers waarop de Zookeeper-service draait, wordt een “ensemble” genoemd. Het ensemble kiest een leider onder de groep, waarbij de rest zich gedraagt als volgers. Alle schrijfoperaties van cliënten moeten via de leider worden geleid, terwijl leesoperaties direct naar elke server kunnen gaan.
Zookeeper biedt hoge betrouwbaarheid en veerkracht door fail-safe synchronisatie, atomiciteit, en serialisatie van berichten.
Kafka: Snellere gegevensoverdracht
Kafka is een gedistribueerd publish-subscribe berichtensysteem dat vaak met Hadoop wordt gebruikt voor snellere gegevensoverdracht. Een Kafka-cluster bestaat uit een groep servers die als intermediair tussen producenten en consumenten fungeren.
In de context van big data zou een voorbeeld van een producent een sensor kunnen zijn die temperatuurgegevens verzamelt om naar de server terug te sturen. Consumenten zijn de Hadoop-servers. De producenten publiceren berichten over een onderwerp en de consumenten halen berichten op door naar het onderwerp te luisteren.
Een enkel onderwerp kan verder worden opgesplitst in partities. Alle berichten met dezelfde sleutel komen aan bij een specifieke partitie. Een consument kan naar een of meer partities luisteren.
Door berichten onder één sleutel te groeperen en een consument op specifieke partities te laten inspelen, kunnen veel consumenten tegelijkertijd naar hetzelfde onderwerp luisteren. Zo wordt een onderwerp geparallelliseerd, waardoor de verwerkingscapaciteit van het systeem toeneemt. Kafka wordt algemeen gebruikt vanwege zijn snelheid, schaalbaarheid en robuuste replicatie.
HBase: Non-Relational Database
HBase is een kolom-georiënteerde, non-relationele database die bovenop HDFS zit. Een van de uitdagingen van HDFS is dat het alleen batchverwerking kan doen. Dus voor eenvoudige interactieve queries moeten gegevens nog steeds in batches worden verwerkt, wat leidt tot hoge latency.
HBase lost dit op door queries voor enkele rijen in enorme tabellen met lage latency mogelijk te maken. Het bereikt dit door intern gebruik te maken van hash tabellen. Het is gemodelleerd naar het voorbeeld van Google BigTable, dat toegang biedt tot het Google File System (GFS).
HBase is schaalbaar, heeft ondersteuning bij uitval van een node, en is goed met zowel ongestructureerde als semi-gestructureerde data. Daarom is het ideaal voor het bevragen van big data stores voor analytische doeleinden.
Download O’Reilly Report: Moving Hadoop to the Cloud nu.
Lees nu
Uitdagingen van Hadoop
Hoewel Hadoop alom wordt gezien als een belangrijke enabler van big data, zijn er nog enkele uitdagingen waarmee rekening moet worden gehouden. Deze uitdagingen komen voort uit de aard van het complexe ecosysteem en de behoefte aan geavanceerde technische kennis om Hadoop-functies uit te voeren. Met het juiste integratieplatform en de juiste tools wordt de complexiteit echter aanzienlijk verminderd en wordt het werken ermee dus ook gemakkelijker.
Steile leercurve
Om het Hadoop-bestandssysteem te bevragen, moeten programmeurs MapReduce-functies in Java schrijven. Dit is niet eenvoudig en vergt een steile leercurve. Bovendien zijn er te veel componenten die samen het ecosysteem vormen, en het kost tijd om daarmee vertrouwd te raken.
Verschillende datasets vereisen verschillende benaderingen
Er is geen ‘one size fits all’-oplossing in Hadoop. De meeste van de hierboven besproken aanvullende componenten zijn gebouwd als reactie op een hiaat dat moest worden opgevuld.
Zo bieden Hive en Pig een eenvoudigere manier om de datasets te bevragen. Daarnaast helpen data ingestion tools als Flume en Sqoop bij het verzamelen van gegevens uit meerdere bronnen. Er zijn nog tal van andere componenten en het vergt ervaring om de juiste keuze te maken.
Beperkingen van MapReduce
MapReduce is een uitstekend programmeermodel om big data sets batchgewijs te verwerken. Het heeft echter zijn beperkingen.
De bestandsintensieve aanpak, met meerdere lees- en schrijfbewerkingen, is niet geschikt voor real-time, interactieve data-analyse of iteratieve taken. Voor dergelijke operaties is MapReduce niet efficiënt genoeg, en het leidt tot hoge latencies. (Er zijn workarounds voor dit probleem. Apache is een alternatief dat het gat van MapReduce opvult.)
Gegevensbeveiliging
Naarmate big data naar de cloud worden verplaatst, worden gevoelige gegevens in Hadoop-servers gedumpt, waardoor de noodzaak ontstaat om de gegevensbeveiliging te waarborgen. Het uitgestrekte ecosysteem telt zoveel instrumenten dat het belangrijk is ervoor te zorgen dat elk instrument de juiste toegangsrechten tot de gegevens heeft. Er moet worden gezorgd voor passende authenticatie, provisioning, gegevenscodering en regelmatige auditing. Hadoop heeft de mogelijkheden om deze uitdaging aan te gaan, maar het is een kwestie van expertise en zorgvuldigheid bij de uitvoering.
Hoewel veel techreuzen de hier besproken componenten van Hadoop al gebruiken, is het nog relatief nieuw in de industrie. De meeste uitdagingen komen voort uit deze nieuwkomer, maar een robuust big data-integratieplatform kan ze allemaal oplossen of verlichten.
Hadoop vs Apache Spark
Het MapReduce-model is, ondanks de vele voordelen, niet efficiënt voor interactieve query’s en real-time gegevensverwerking, omdat het afhankelijk is van schijfschrijvingen tussen elke verwerkingsfase.
Spark is een gegevensverwerkingsengine die deze uitdaging oplost door in-memory gegevensopslag te gebruiken. Hoewel het begon als een sub-project van Hadoop, heeft het zijn eigen clustertechnologie.
Vaak wordt Spark bovenop HDFS gebruikt om alleen het opslagaspect van Hadoop te benutten. Voor het verwerkingsalgoritme gebruikt het zijn eigen bibliotheken die SQL-query’s, streaming, machine learning en grafieken ondersteunen.
Datawetenschappers gebruiken Spark uitgebreid vanwege zijn bliksemsnelheid en elegante, functierijke API’s die het werken met grote datasets eenvoudig maken.
Hoewel Spark een voordeel lijkt te hebben ten opzichte van Hadoop, kunnen beide in tandem werken. Afhankelijk van de vereisten en het type datasets vullen Hadoop en Spark elkaar aan. Spark heeft geen eigen bestandssysteem en is voor zijn opslag dus afhankelijk van HDFS of andere dergelijke oplossingen.
De echte vergelijking gaat eigenlijk tussen de verwerkingslogica van Spark en het MapReduce-model. Als RAM een beperking is, en voor nachtelijke taken, is MapReduce een goede keuze. Maar voor het streamen van gegevens, toegang tot machine learning-bibliotheken en snelle realtime bewerkingen is Spark de ideale keuze.
Een toekomst met veel mogelijkheden
In slechts tien jaar tijd heeft Hadoop een grote rol gespeeld in de computerindustrie. Dit komt omdat het eindelijk de mogelijkheid van data-analyse werkelijkheid heeft gemaakt. Van het analyseren van sitebezoeken tot fraudedetectie tot banktoepassingen, de toepassingen zijn divers.
Met Talend Open Studio for Big Data is het eenvoudig om je Hadoop setup te integreren in elke data-architectuur. Talend biedt meer ingebouwde dataconnectors dan welke andere datamanagementoplossing ook, zodat je naadloze datastromen kunt bouwen tussen Hadoop en elk belangrijk bestandsformaat (CSV, XML, Excel, enz.), databasesysteem (Oracle, SQL Server, MySQL, enz.), pakket enterprise-applicatie (SAP, SugarCRM, enz.), en zelfs cloud data services zoals Salesforce en Force.com.