Snel naar content
Collegezaal zonder mensen erin

Apache NiFi

Het is een vogel!
Nee, het is een vliegtuig!
Nee, het is…super grover?

apache1.jpg

Nou, dat gevoel bekroop mij een beetje toen ik voor het eerst Apache NiFi zag en de documentatie doornam.

Het is een ETL-tool voor Hadoop!
Nee, het een grafische versie van Flume!
Nee, het is…Apache NiFi?

Het zoveelste incubator project van Apache. By the way. Als je je ooit afvraagt of Apache ook wel eens projecten stopt; ja dat doen ze. Projecten worden dan verplaatst naar de Attic.

Maar goed terug naar NiFi. NiFi is een Apache project dat ze hebben gedoneerd gekregen van de NSA (jawel, die van Snowden). Na er acht jaar aan gesleuteld te hebben vond de NSA blijkbaar dat de rest van de wereld ook maar eens iets mee moest gaan doen met hun Niagarafiles. Dit is overigens het tweede project dat Apache van de NSA heeft gekregen, de eerste was de NoSQL database Accumulo.

Maar vanwaar die verwarring? Nou laten we eens beginnen met een plaatje van een zelf in elkaar geknutselde flow.

Apache2.png

Dat ziet er verdacht veel uit als een ETL-tool nietwaar? En toch is het dat zeker niet. Dus in het kader van het begrijpen van NiFi laat de gedachte dat je er ETL mee kan doen los. Echt waar, Let It Go… NiFi is gebaseerd op het idee van flow-bases-programming 

Flow-Based Programming defines applications using the metaphor of a “data factory”. It views an application not as a single, sequential process, which starts at a point in time, and then does one thing at a time until it is finished, but as a network of asynchronous processes communicating by means of streams of structured data chunks, called “information packets” (IPs)

Apache3.png

Als basis gebruikt NiFi een FlowFile (dit is overigens niet een echt bestand). Een FlowFile is een informatiepakket dat bestaat uit een header met attributen en de content, de data zelf. De data kan van alles zijn. Gestructureerd, semi- of ongestructureerd dat maakt niet. Op basis van de header kan NiFi geprogrammeerd worden om bepaalde acties uit te voeren. Denk bijvoorbeeld aan het routeren naar een ander systeem (RouteOnAttribute) of een inhoudelijke actie op de data in de FlowFile. De NiFi applicatie heeft maar een beperkt aantal componenten dat je op het canvas kan slepen.

Het belangrijkste component is de Processor. De processor kan van alles doen; data ophalen, data wegschrijven, routeren (context en content driven), zoek-vervang, loggen, dedupliceren you name it. Standaard zijn er 76 processor types aanwezig en mocht je de skills hebben dan kan je zelf een eigen processor type ontwikkelen.

Apache4.png

Nu is een van dingen waar ik in het begin maar niet aan kon wennen is dat je maar één canvas hebt waarop je alles neerzet. Het is dus niet zo dat je een NiFi-flow kan openen, wijzigingen, opslaan en sluiten om daarna de volgende te openen. Je NiFi installatie is je NiFi-flow. Je bouwt alles dus in de ene flow. Mocht je flow heel complex worden dan kan je zogenaamde Process Groups aanmaken (voor mensen die toch nog in ETL termen denken; een maplet). Hiermee kan je enige structuur aanbrengen in je NiFi flow. Een Process Group kan overigens ook een zogenaamde Remote Process Group zijn. Dit is een andere NiFi installatie die je dan vanuit jouw NiFi aanroept.

Elke processor kan op zijn eigen manier geconfigureerd worden en gescheduled worden. Zou kan ik een GetFile processor hebben die via een CRON schedule draait en een DuplicateFlowFile die timer driven is.

Apache5.pngApache6.png

De connectie tussen Processor noemt men een Connection en deze vormen een soort queue. Per connection kunnen er diverse instelling worden geconfigureerd.

Apache7.png

NiFi komt verder met uitgebreide monitoring opties, is schaalbaar (clustering), security (authenticatie en autorisatie) ,performance-statistieken, auditing tools en last but not least data lineage.

Apache8.png

Al met al een indrukkende hoeveelheid opties voor een 0.2 versie.

Maar nu de hamvraag; is het iets voor ons? Ik denk zeker van wel, hoewel ik nu nog niet mijn geld op de 0.2 versie zou zetten. Qua toepassingsgebied past het wat mij betreft prima in de hoek van Apache Camel en consorten.

Apache9.png

Nu maar hopen dat het niet op de Attic belandt.

MAik.jpg  MyCloudMaik.jpeg

Blijf op de hoogte

De auteur

Inergy
Inergy

Wij eten, drinken en ademen data – en wat je ermee kan doen. Dat delen we graag met jou. Meer weten over Inergy? Neem contact met ons op via 0348 45 76 66 of info@inergy.nl.

Meer berichten

Alle berichten

Superperformance met Snowflake & Direct Query in Power BI

Superperformance met Snowflake & Direct Query in Power BI

Optimalisatie van Power BI met DirectQuery (DQ) op Snowflake is dé oplossing voor snel, kostenefficiënt en AVG-proof werken in Power BI. Lees in deze (blog) longread alles over de geweldige werkwijze die Inergy heeft ontwikkeld in Snowflake. 

Lees verder

Hoe bereik je efficiëntie en samenwerking in het P&C proces?

Hoe bereik je efficiëntie en samenwerking in het P&C proces?

Het schrijven van P&C publicaties is een terugkerende taak waarbij de hele organisatie gedisciplineerd moet werken. Zonder discipline heb je weinig aan versiebeheer en van de workflow met deadlines komt dan niks terecht. In deze blog hebben we het over discipline en versiebeheer. Hoe komen ze samen in het proces van het schrijven binnen LIAS.

Lees verder

Tips voor veilig online shoppen

Tips voor veilig online shoppen

Online shoppen biedt ons het gemak van winkelen vanuit huis, met een eindeloze selectie aan leuke kleding, schoenen, accessoires en spullen voor in huis. Met slechts een paar klikken kunnen we dit enorme assortiment aan producten vinden en bestellen. Ondanks dit gemak, is het belangrijk om ons bewust te zijn van potentiële risico’s die gepaard gaan met online shoppen.

Lees verder