Deze opinie is van een externe deskundige. De inhoud vertegenwoordigt dus niet noodzakelijk het gedachtegoed van de redactie.

Apache Spark zevende hemel voor ontwikkelaar

Computable Expert

Danilo Poccia
Technical Evangelist, Amazon Web Services. Expert van Computable voor de topics Development en Cloud Computing.

Apache Spark is een krachtige processing engine voor big data, ontwikkeld voor snelheid, gebruiksgemak en complexe analytics. Het is de afgelopen jaren een rijzende ster in het big data landschap en houdt gelijke tred met de snelle opkomst van big data analytics. Maar waarom worden developers zo blij van Apache Spark?

Apache Spark is in essentie een framework voor parallelle dataverwerking, waarmee je eenvoudig razendsnelle big data-applicaties kunt ontwikkelen voor machine learning, stream processing en graph analytics. Als het gaat om het verwerken van big data, dan is snelheid essentieel. Een belangrijk verschil tussen Spark en Hadoop Mapreduce is dat Spark een geoptimaliseerde ‘directed acyclic graph’ (dac)-execution engine heeft, waardoor er efficiëntere query planning voor datatransformaties kan worden gemaakt.

Bovendien slaat Apache Spark input, output en tussentijdse data in-memory op als ‘resilient distributed datasets’ (rdd’s), wat snelle processing zonder i/o belasting mogelijk maakt, omdat de meeste reads en writes van en naar de harddisk worden vermeden. Dit verhoogt de prestaties van herhalende of interactieve toepassingen aanzienlijk. Zo zorgt Spark ervoor dat applicaties in Hadoop-clusters tot wel honderd keer sneller in het geheugen draaien en tot tien keer sneller vanaf harddisk.

Makkelijker ontwikkelen voor Spark

De meeste developers kennen de snelheidswinst van Spark ten opzichte van Mapreduce wel, maar de flexibiliteit in ondersteunde talen is wellicht minder bekend. Apache Spark ondersteunt Java, Scala en Python, wat enorm veel mogelijkheden geeft bij het bouwen van applicaties. Wat al deze talen gemeen hebben, is dat ze efficiënte manieren bieden om operations in ‘closures’ en lambdafuncties uit te drukken. Met closures kunnen gebruikers functies definiëren die afgestemd zijn op de kernlogica van de applicatie, wat een gestroomlijnde applicatie oplevert, met geordende, eenvoudig te lezen code.

Bovendien kunnen er SQL of HiveQL queries naar Apache Spark worden gestuurd, met de Spark SQL-module. Spark biedt meer dan tachtig high-level operators, waarmee eenvoudig parallelle apps kunnen worden gebouwd. Naast het draaien van applicaties, kan de Apache Spark api ook interactief met Python of Scala worden gebruikt, direct in de Apache Spark shell op een cluster. Handig!

Apache Spark gebruikt verschillende libraries, als SQL, Dataframes en Mlib, waarmee applicaties voor machine learning (mllib), stream processing (Spark Streaming) en graph processing (GraphX) kunnen worden gebouwd. Deze libraries zijn volledig geïntegreerd in het Apache Spark ecosysteem en kunnen naadloos worden gecombineerd in een en dezelfde applicatie. En waar Mapreduce voornamelijk data verwerkt die al opgeslagen is, kan Spark de data in realtime manipuleren, dankzij Spark Streaming.

Spark draait overal

Hoewel je Spark prima onafhankelijk kunt draaien in de standalone clustermodus, zijn de mogelijkheden veel uitgebreider dan dat. Zo draait het bijvoorbeeld ook op Hadoop’s Yarn cluster-manager. Hierdoor kunnen bestaande Hadoop-applicaties eenvoudig worden gemigreerd, wanneer het gebruik beter past bij Spark.

Daarnaast draait Spark op EC2 en Apache Mesos, en kan er data worden gelezen uit Cassandra, Hive, Tachyon HBase, HDFS en vrijwel alle Hadoop databronnen.

Groeiende Spark-community

Spark wordt gebouwd door een steeds grotere groep developers. Het project startte in 2009 en inmiddels hebben al meer dan 250 developers een bijdrage geleverd aan Spark. Dit zorgt ervoor dat functionaliteiten voortdurend worden uitgebreid en issues snel worden opgelost. Met versie 2.0 zijn er bovendien veel nieuwe functionaliteiten, waar ik erg enthousiast van word.

Zo is de SQL-functionaliteit verbeterd, hebben we native CSV data source, zijn er aanzienlijke snelheidsverbeteringen (2-10x), user-defined functionaliteiten met SparkR en structured streaming, een high level streaming-api die op Spark SQL is gebouwd.

Spark the future; waardevolle investering

De groei van Apache Spark staat niet op zich, maar valt samen met allerlei opkomende trends. Neem bijvoorbeeld het internet of things: de hoeveelheden data die hier de komende jaren verzameld gaan worden, zijn bijna onvoorstelbaar. Het IoT is bij uitstek gebaat bij de snelheid en de realtime dataverwerking van Spark; alles moet immers aan alles worden verbonden en vaak moet de data ook nog eens direct worden verwerkt om betekenisvolle resultaten op te leveren waarop direct gestuurd kan worden. Ook nieuwe toepassingen in bijvoorbeeld de gezondheidszorg, de financiële sector en het onderwijs, moeten steeds grotere datasets verwerken op een steeds grotere snelheid.

Het is dus niet verwonderlijk dat developers erg blij worden van Spark: het kan de ontwikkeling van applicaties enorm versnellen en vereenvoudigen, dankzij de geïntegreerde libraries zijn er geen externe pakketten meer nodig en applicaties zijn eenvoudiger te migreren en draaien tot wel honderd keer sneller. Spark vereist weliswaar een grotere investering in geheugen dan Hadoop, maar die investering betaalt zichzelf binnen afzienbare tijd terug.

Spark en open data

Ik verwacht dat er in de nabije toekomst meer en meer data publiekelijk gedeeld gaat worden door centrale en lokale overheden en publieke instellingen. Al die informatie gaat zorgen voor een nieuw niveau van participatie door burgers, voor het verbeteren van onze levens en het optimaliseren van publieke uitgaven. Apache Spark is een fantastische tool om iedereen met een goed idee te faciliteren en de ideeën snel te valideren op basis van relevante data. Een goed voorbeeld wordt geleverd door Transport for London, met hun open data initiatief. Er werden hackathons georganiseerd waar teams de strijd met elkaar aangingen om nieuwe use cases voor de data te vinden. Het is de beste tijd ooit voor het bouwen van datacentrische oplossingen!

x

Om te kunnen beoordelen moet u ingelogd zijn:

Dit artikel delen:

Lees verder


Nieuwsbrief

Wil je dagelijks op de hoogte gehouden worden van het laatste ict-nieuws, trends en ontwikkelingen? Abonneer je dan op onze gratis nieuwsbrief.

Vul een geldig e-mailadres in

Stuur dit artikel door

Uw naam ontbreekt
Uw e-mailadres ontbreekt
De naam van de ontvanger ontbreekt
Het e-mailadres van de ontvanger ontbreekt

×
×
article 2016-10-13T13:10:00.000Z Danilo Poccia


Wilt u dagelijks op de hoogte worden gehouden van het laatste ict-nieuws, achtergronden en opinie?
Abonneer uzelf op onze gratis nieuwsbrief.