Wat is het Hadoop framework?

Het Hadoop framework bestaat inmiddels uit vele componenten die het werken met big data makkelijker maakt. Big data betekent data met een hoge volume, snelheid en verscheidenheid. Dit vraagt andere oplossingen dan het enkel werken met gestructureerde data die eenvoudig te verwerken is in relationele databases.

Hadoop Framework

In de basis bestaat het Hadoop platform uit opslag van blokken van data. Dit is de data lake waar de ruwe data opgeslagen wordt. Dit wordt ook wel het Hadoop Distributed File System (HDFS) genoemd. Dit file system wordt gedistribueerd over verschillende clusters van servers om ervoor te zorgen dat data die wordt opgeslagen op een van deze clusters meteen gerepliceerd kan worden naar andere clusters. Deze clusters bestaan uit servers met ‘commodity hardware’. Anders gezegd, standaard hardware die overal te koop is. Wat Hadoop sterk maakt is dat processen op deze data altijd worden uitgevoerd binnen de clusters (een node) waar de data ook daadwerkelijk is. Dit vergoot de kracht waarmee analyses gedaan kunnen worden, zeker als de data is verdeeld over vele clusters.

Deze processen kunnen ook parallel uitgevoerd worden. Iedere node binnen een cluster kan daarmee een deel van de processen uitvoeren waarna het later wordt samengevoegd. Deze parallelle processen maken het Hadoop framework enorm krachtig voor het verwerken en analyseren van big data.

Zodra data wordt opgeslagen op een node binnen het Hadoop framework, zorgt Hadoop er in de achtergrond voor dat de data nog naar 2 andere nodes wordt gerepliceerd. De coordinatie node zorgt voor zowel het lezen als schrijven van data binnen alle clusters. De NameNode houdt de metadata bij zodat datablokken makkelijk terug gevonden kunnen worden. Op de DataNodes worden de datablokken opgeslagen. Dit zijn meestal blokken van 64MB en kunnen txt, json, xml maar ook video bestanden zijn. Dit is dus veelal ongestructureerde of semigestructureerde data, maar zal altijd geïnterpreteerd en dus gestructureerd moeten worden voordat je er analyses op kunt doen. Hierover later meer.

Kortom, de NameNode weet waar de data zich bevindt binnen de Hadoop clusters. De DataNodes bevatten de daadwerkelijke datablokken. Valt een DataNode uit, dan zorgt Hadoop er automatisch voor dat de datablokken die verloren zijn, gerepliceerd worden naar een andere DataNode. Dit om ervoor te zorgen dat er altijd 3 kopieën beschikbaar zijn van de data.

Welke componenten kennen we binnen het Hadoop framework:

ComponentBeschrijving
HadoopHadoop is eigenlijk het ecosysteem van alle componenten die werken op het Hadoop platform zoals ze hieronder staan opgenoemd. Deze lijst bevat echter de meest bekende frameworks die worden gebruikt binnen het Hadoop ecosysteem.
HDFSDit is het filesystem waar alle datablokken (van meestal 64MB) worden opgeslagen voor later gebruik. Het is in principe niks anders dan een structuur van folders en bestanden met datablokken. HDFS is daarmee dus eigenlijk je data lake om ruwe data op te slaan. Het verwerken van deze data voor bepaalde analyses doe je met andere componenten binnen het Hadoop platform. Het is daarmee vergelijkbaar met de Data lake (bij.v BLOB) binnen de Azure cloud. Alle datablokken binnen HDFS zijn ‘immutable’ wat betekent dat er alleen data op geschreven en gelezen kan worden. Aanpassen en verwijderen van datablokken is daarmee niet mogelijk.
MapReduceDit is een batch georiënteerd framework waarmee data binnen HDFS verwerkt en geanalyseerd kan worden. MapReduce doet dit in hoofdlijnen door data te splitsen, mappen (uitvoeren van logica), te sorteren en te aggregeren/reduceren.
HBaseDit is vergelijkbaar met MapReduce maar dan voor real-time processen op een SQL gebaseerde syntax. MapReduce kan enkel in batch worden uitgevoerd.
HiveHive wordt gebruikt om met een SQL achtige taal/structuur analyses te doen op data binnen HDFS.
KuduOmdat vanwege het HDFS filesystem geen data aangepast of verwijderd kan worden was er een noodzaak voor dataopslag die snel aangepast kan worden. Kudu vult dit gat. Kudu is een kolom georiënteerde relationele database en lijkt daarmee het meest op bijvoorbeeld bestaande SQL oplossingen. Kudu bevat enkel gestructureerde data en heeft als voordeel dat het net als MapReduce gebruik maakt van het HDFS filesystem waarmee grote hoeveelheden gestructureerde data opgeslagen kunnen worden binnen de Kudu kolommen.
PigPig is een platform om grote hoeveelheden data te analyseren middels een taal die veel lijkt op SQL. Hiermee kunnen snel ETL en analyses gedaan worden op de data binnen het Hadoop cluster.
Zookeeper
Impala
SparkSpark biedt ook de mogelijkheid om zeer snel analyses te doen op data binnen HDFS. Het werkt ‘in-memory’ wat betekent dat data veel sneller toegankelijk is en berekeningen enorm snel kunnen worden gedaan. Spark biedt ook de mogelijkheid om met streaming data om te gaan.

MapReduce is een van de eerste en meest bekende frameworks/componenten binnen het Hadoop platform. MapReduce is erop gericht om in een korte tijd batch georiënteerde processen uit te voeren op de data binnen het diverse clusters. Zoals eerder aangegeven is de kracht van Hadoop dat deze processen altijd worden uitgevoerd op de betreffende Node waar de data zich bevindt. Ook zijn de MapReduce processen altijd ‘stateless’. In andere woorden, ze hebben enkel input nodig om de output te genereren. Daarna starten de processen weer met nieuwe input. Exact om deze reden kunnen dit soort analyse en verwerkingsprocessen op big data parallel uitgevoerd worden waardoor in een korte tijd heel veel data geanalyseerd kan worden. Om die reden is het een enorm krachtige oplossing voor situaties waar veel (ongestructureerde) data geanalyseerd moet worden.

MapReduce bestaat uit een aantal stappen om data te verwerken en analyseren. Allereerst worden data gesplitst en gemapt. Daarna wordt het gesorteerd en samengevoegd. De output in de laatste stap geeft in essentie het antwoord op de analyse vraag. Bijvoorbeeld hoevaak ieder woord terugkomt in een bepaalde tekst (dit kan dus heel veel tekst zijn om te analyseren) of om te bepalen hoeveel gemeenschappelijke vrienden je hebt op Facebook of Linkedin. Dit zijn typische voorbeelden van vraagstukken die perfect door de MapReduce batch opgelost kunnen worden binnen een korte tijd, mede door de mogelijkheid om parallel data te analyseren over de verschillende DataNodes waar de datablokken beschikbaar zijn.

MapReduce uitgelegd

Hoe past Apache Nifi in dit alles?

Apache Nifi is niks anders dan een platform waarbinnen je middels een no-code achtige structuur datastromen kunt maken tussen verschillende systemen. Daarmee dus ook voor het ophalen van bijvoorbeeld externe data om deze vervolgens op te slaan binnen je data lake (bijvoorbeeld HDFS van Hadoop).

Ook bevat Nifi de mogelijkheid om data weg te schrijven in json formaat of om input data in een bepaalde structuur op te slaan, bijvoorbeeld in een SQL database of Apache Kudu (zie hierboven meer informatie over Kudu).