Na de Lambda Architectuur

Een logische opvolger voor de Lambda architectuur, low latency en high throughput

Je hebt ongetwijfeld gehoord van de lambda achitectuur, bestaande uit twee verschillende layers om data te verwerken. Historische data verwerkt door de Batch layer en real-time data verwerkt door de Speed layer, waarbij de verwerkte data uit de batch layer over het algemeen wordt opgeslagen op het Hadoop bestandssysteem (HDFS) in een kolom formaat zoals Parquet en de data uit de speed layer wordt opgeslagen in een low latency in memory opslag zoals HBase.

 

Kolom bestandsformaten zoals Parquet zijn niet geschikt voor streaming data, HBase is niet erg goed in queries die aggregaties vereisen vanaf cell nivo, deze leveren niet de gewenste performance en daarom wordt in de meeste implementaties deze data vanuit HBase in Parquet formaat geschreven om vervolgens deze aan te bieden voor bevraging door gebruikers. Dit is niet een ideale situatie en bovendien compliceerd het de oplossing.

 

Dit is waar Apache Kudu zich introduceerd, het biedt de "fast data" benadering van HBase en voegt de "fast query" capaciteiten van een kolom opslag formaat zoals Parquet toe en overwint het probleem van updates op data (vanwege data correcties) welke in het Hadoop bestandsysteem niet plaatsvinden.

In essentie zijn latency en throughput voor een real-time oplossing erg belangrijk en is de lambda architectuur vanwege zijn batch en speed layer en dataopslag op het Hadoop bestandsysteem niet in staat hiervoor de beste resultaten te leveren. Dit probleem probeerd Apache Kudu te verhelpen, hoewel het een compromis betreft tussen beide benaderingen, in specifieke situaties kan het zo zijn dat het Hadoop bestandssysteem of HBase relevanter kan zijn.

Wat is latency

  • hoe lang duurt het om een oplossing op te starten
  • hoe lang duurt het om een configuratie wijziging in de oplossing te activeren 

Wat is throughput

  • activiteiten per seconde, minuut of uur (per tijdseenheid)
  • hoeveel werk wordt er verzet per tijdseenheid
  low throughput high throughput
low latency HBase Kudu
high latency JSON op HDFS Parquet op HDFS

 

Wat is Kudu?

Kudus is een opslag systeem voor tabellen met gestructureerde data. Deze tabellen lijken veel op de tabellen zoals gebruikt in relationele database, elk met een primary key bestaande uit één of meerdere kolommen die ervoor zorgt dat data uniek is en die dient als een index voor efficiente update en delete operaties. Logische subsets van data worden tablets genoemd, maken deel uit van tabellen, vergelijkbaar met partitions in relationele databases. Deze tablets worden gerepliceerd over meerdere commodity hardware nodes gebruik makend van het Raft consensus algoritme. wat er voor zorgt dat elke schrijf operatie persistent wordt opgeslagen op ten minste twee nodes alvorens de data kan worden geraadpleegd, hiermee vindt er bescherming plaats van data tegen eventueel verlies als gevolg van machine falen. Kudu is niet bedoeld om het Hadoop bestandssysteem (HDFS) te vervangen, maar kan perfect naast HDFS opereren.

Waarom Kudu?

Met Kudu kun je data opslaan op het moment dat het arriveerd in real-time en kun je tevens analytics uitvoeren in real-time, queries kunnen worden gecombineerd met lange termijn historische data en korte termijn real-time data. Dit alles wordt gedaan in het geheugen en in een kolom opslag formaat, snelle kolom scans en low latency updates met een consistente performance mogelijk makend. Waar de compressie van het kolom bestandsformaat zorgt voor reductie van opslagcapaciteit en performante data scans.

Ontwikkel doelstellingen van Kudu

  • Sterke performance voor zowel scan als random access opdrachten
  • High CPU efficiencientie en IO efficientie
  • De mogelijkheid om data te kunnen updaten
  • Het vermogen om ondersteuning te bieden voor active-active replicated clusters die meerdere data centers kunnen overspannen in verschillende delen van de wereld

Integratie

Kudus is oorspronkelijk ontwikkelt door Cloudera, volledig open source software en gelicenceerd onder de Apache Software licentie 2.0, het integreerd erg goed met een opslag zoals Impala, voor queries en tevens de beschikking krijgend over INSERT, UPDATE en DELETE statements.

Wat wij bij Scalar Data in het bijzonder interessant vinden is de integratie met Apache Spark, waarmee we in staat zijn het te gebruiken als een "fast storage" voor Spark voor bepaalde scenarios waar high throughput gecombineerd met low latency gewenst is.

Voor meer informatie over Kudu: https://kudu.apache.org/

Ronald Span

Founder of Scalar Data, over 20 years of experience in a variety of national and international IT projects in different roles, development, consultancy, pre-sales, management and business development. Scalar Data is helping organizations to implement their big data strategy.