Waarom spelen cluster resource managers een belangrijke rol in een modern datacenter

Het vermogen om resources te delen op een elastische wijze door verschillende frameworks vereist een cluster computing framework ook wel cluster resource manager genoemd

Moderne applicaties zijn voor een grote mate afhankelijk van data en de toename van data gegenereerd en verwerkt door organisaties heeft de wijze waarop we deze data opslaan en verwerken verandert.

Als we onze infrastructuur willen afstemmen om deze hoeveelheid data op te slaan en te verwerken is alleen het aankopen van nieuwe hardware onvoldoende en niet de oplossing voor dit probleem.

Frameworks voor batch processing, stream processing, micro-services, graph processing en ad hoc analyse zijn even belangrijk als de hardware waarop zij draaien. Onze moderne datacenters zijn uitgerust met deze applicatie frameworks.

De grootte en variëteit van big data betekend dat scale-up strategieen niet langer van toepassing voor moderne workloads.

Grote organisaties maken gebruik van gedistribueerde verwerking, waar meerdere computers zich gedragen als een enkele computer met meer capaciteit veel aangeduid met "cluster",  zowel on-premise als in cloud datacenters.

Om een hoge utilisatie van een cluster te bereiken dienen we resources (CPU cores en geheugen) op schaal zo efficient mogelijk te delen tussen de verschillende applicatie frameworks met varierende resource behoeftes.

Traditioneel werken frameworks in silos en worden resources statisch gepartitioneerd tussen de verschillende frameworks, hetgeen inefficient gebruik van resources veroorzaakt.

De behoefte om een groter aantal commodity machines als een enkele computer te laten werken en het vermogen om resources op een elastische manier te laten delen door verschillende frameworks vereist een cluster computing framework, vaak ook cluster resource manager genoemd.

 

Een cluster resource manager dient te voorzien in de volgende functionaliteit:

  • Efficientie - het primaire doel is het efficient delen van cluster resources
  • Isolatie - wanneer meerdere taken cluster resources delen is een van de belangrijkste aspecten het garanderen van resource isolatie, gezamelijk met juiste scheduling is dit het fundament voor gegarandeerde SLA's
  • Schaalbaarheid - het vermogen om lineair te kunnen schalen om de continue groei van infrastructuur te kunnen ondersteunen
  • Robuustheid - cluster management is een cruciaal centraal component, robuust gedrag is een vereiste om business continuiteit te kunnen garanderen
  • Uitbreidbaarheid - constraints dienen configurabel to zijn om wijzigingen in organisatie policies en/of hardware te kunnen waarborgen evenals ondersteuning voor meerdere frameworks

 

Waarschijnlijk heeft een ieder wel gehoord van YARN of Yet Another Resource Negotiator, de resource manager die gebruikt wordt in Big data management platforms zoals MapR, Coudera and Hortonworks.

In dit blog artikel zullen we niet ingaan op YARN maar zullen we Apache Mesos introduceren als cluster resource manager.

Apache Mesos is ontwikkelt door de Universiteit van Berkeley in 2009 door een team van PhD studenten en wordt in productie gebruikt door een toonaangevende bedrijven zoals Twitter, Airbnb, eBay, Netflix, Paypal, Atlassian en Hubspot. In Juli 2013 werd het een Apache top-level project. Mesos is een cluster manager gericht op het verbeterd gebruik en dynamisch delen van resources tussen meerdere frameworks. Mesos kan gezien worden als een kernel voor een datacenter die voorziet in een geconsolideerde weergave van resources die beschikbaar zijn het cluster en welke in staat is deze resources te benaderen en beschikbaar te stellen op een identieke wijze zoals een operating system kernel dit doet voor een enkele computer.

Mesos bestaat uit een Master/Slave configuratie en doet een beroep op Zookeeper als gedistribueerde cluster coordinator. Zie architectuur diagram hieronder.

Mesos Master

De Master is verantwoordelijk voor bemiddeling tussen de Slaves resources en de frameworks. Het biedt Slaves resources aan aan de frameworks en voerd taken uit op de Slaves voor geaccepteerde aanbiedingen. Mesos heeft alleen één actieve Master welke wordt gekozen wordt door Zookeeper op basis van gedistribueerde consensus. In geval van een fault-tolerant mode bevinden zich de overige Master nodes in standby mode en wordt ene nieuwe Master verkozen als de huidige Master onderuit gaat.

Mesos Slave

De Slave doet het werk ofwel voert de taak uit. Slaves beheren de resources zoals CPU, geheugen, poorten etc. en voeren taken uit welke ingediend worden door de frameworks.

Frameworks

In het bovenstaande architectuur diagram draaien twee frameworks op Mesos, Spark een in memory data processing framework en Marathon een container orchestration platform. Marathon kan Mesos Docker containers aanbieden evenals Docker images zonder afhankelijk te zijn van de externe Docker-engine.

 

Omdat we bij Scalar gebruik maken van Spark als data processing framework for batch-, real-time data analytics en machine learning voor big data zoomen we in op het uitvoeren van Spark op Mesos.

Spark op Mesos

Spark is in een later stadium van hun carriere ontwikkelt door enkele van dezelfde PhD studenten die Mesos hebben ontwikkelt, vanwege deze achtergrond is het gebruik van Spark op Mesos een perfect huwelijk gebleken.

Spark kan in twee modi op Mesos worden uitgevoerd, Client mode en Cluster mode. Het gaat voorbij aan de scope van dit artikel om hier de verschillen tussen beide modi toe te lichten. Het architectuur diagram toont de Client mode waarbij het Spark framework wordt gedistribueerd via hdfs op de Mesos-Master node naar de Mesos-Slave node waar de Spark taak uiteindelijk wordt uitgevoerd. In het algemeen zal in Client mode de job worden ingediend via een dedicated client, bijvoorbeeld via onze laptop. Je kunt zowel het spark-submit als het spark-shell commando hiervoor gebruiken.

In de web UI van Mesos kunnen we de frameworks zien die zichzelf hebben aangemeldt bij de Mesos Master welke de beschikbare cluster resources aangeboden door de Mesos Slaves zal verdelen over deze frameworks zodra ze hierop een beroep willen doen. In onze situatie hebben zich de volgende frameworks zichzelf aangemeldt: Marathon, Chronos (een job scheduler framework) en Spark-shell.

 

Onder Agents kunnen we de cluster resource pool zien. In onze situatie zijn er twee Mesos Slave met 8 CPU cores met elk 1.3Gb geheugen beschikbaar. Normaal gesproken in een productie omgeving zal het aantal Mesos Slave nodes vele malen groter zijn evenals de hoeveelheid beschikbaar geheugen per Mesos Slave en mogelijk ook het aantal CPU cores. De Mesos Slaves communiceren hun beschikbare resources aan de Mesos Master.

Spark-shell

We kunnen het sprark-shell framework bij de Mesos Master registreren via de syntax zoals getoond in onderstaande afbeelding. Default wordt spark-shell uitgevoerd in client mode als we de volgende flag niet specificeren --deploy-mode <client of cluster>  Als we spark-shell uitvoeren in client mode, wordt de SparkContext en het Driver programma buiten het cluster gestart; in het geval de spark-shell wordt gestart van een dedicated client, bijvoorbeeld onze laptop (in onderstaande situatie is hebben we de spark-shell gestart via de Mesos master, zoals je kunt zien in de afbeelding). Het Driver programma connecteerd direct aan de Mesos Master in het cluster om resources aan te vragen voor de pending taken. Mesos Master antwoord op de aanvraag en alloceerd resources van het cluster. Het Driver programma zal indien het de aanbieding accepteerd van de Mesos Master het Executor process starten via de Mesos Master interface en de taken verzenden naar de Executors, welke op de Mesos Slaves draaien binnen het cluster. De spark-shell stelt ons in staat om op ineractieve wijze commando's uit te voeren via de Scala console om zo in real-time data te bevragen en te analyseren.

Spark-submit

We kunnen ook het spark-submit commando gebruiken om het Spark framework zich te laten aanmelden bij Mesos, in onderstaande shell-script specificeren we expliciet het aantal executors, het driver-geheugen en het executor geheugen om de taak uit te voeren.

 

Onder Frameworks, completed frameworks kunnen we zien dat het spark-shell framework is uitgevoerd op Mesos en afgesloten is en eveneens kunnen we zien dat de simple_demo is uitgevoerd op Mesos en gesloten, welke we hebben gestart middels het shell-script.

 

 

Voor meer details over de taak kunnen we op framework ID drukken en zien we dat de taken succesvol zijn uitgevoerd, eveneens kunnen we onder sandbox logging details terugvinden voor deze taken.

Normaal gesproken zullen er in een data center verschillende applicaties draaien op hetzelfde tijdstip welke elk hun eigen specifiek framework benodigen, cluster resources (een pool van beschikbaar geheugen en CPU cores) zullen worden gedeeld tussen deze frameworks om effectiever gebruik te maken van deze cluster resources. Een applicatie "client" request zal een aanbieding ontvangen voor beschikbare resources via de Mesos Master, de client kan besluiten het aanbod te accepteren of te weigeren afhankelijk van de resources die benodigd zijn voor het uitvoeren van de applicatie taken.

Deze elasticiteit van cluster resources en de mogelijkheid om applicaties te kunnen schalen op basis van vraag is beschikbaar binnen handbereik als we bijvoorbeeld gebruik maken van Google Cloud Platform, Microsoft Azure of Amazon AWS, achter al deze oplossingen bevindt zich een cluster resource manager.

 

Waarom Mesos?

Mesos biedt significante voordelen ten opzichte van traditionele op virtualisatie-gebaseerde infrastructuur:

  • De meeste applicaties vereisen geen sterke isolatie zoals geboden door VMs en kunnen draaien op container-gebaseerde isolatie in Mesos. Omdat containers een veel lagere overhead hebben (ze draaien bovenop een OS en vereisen geen OS als onderdeel van de container) den VMs leidt dit niet alleen tot een grotere consolidatie maar eveneens to snellere start-up tijden
  • Infrastructuur complexiteit wordt middels Mesos enrorm gereduceerd ten opzichte van VMs
  • Fault tolerance en high availability voor VMs is erg kostbaar en niet eenvoudig in vergelijk met Mesos waar hardware fouten transparant zijn voor de applicatie en de Mesos API helpt developers in het reduceren van fouten

Naast deze voordelen ten opzichte van een VM infrastructuur vindt je hieronder enkele redenen waarom organisaties gebruik maken van Mesos:

  • Mesos is open source
  • Mesos heeft de vuurdoop reeds doorstaan van vele grote bedrijven
  • Ondersteuning voor een grote varieteit van workloads, batch processing (Hadoop), interactieve analyse (Spark), real-time processing (Spark, Storm en overigen), graph processing, data storage (HDFS, Tachyon en Cassandra)
  • Mesos verbeterd gebruik van cluster resources middels het elastisch delen ervan
  • Mesos is het perfecte huwelijk voor het uitvaardigen van containers op schaal
  • Meta scheduling frameworks zoals Marathon en Aurora kunnen de meeste applications op Mesos uitvoeren zonder noodzakelijke modificaties
  • Mesos stelt ontwikkelaars in staat om moderne applicaties te bouwen (bijvoorbeeld microservices op basis van Docker) met verhoogde productiviteit, waarbij de developer zich geen zorgen hoeven te maken over de gedistribueerde architectuur

Apache Mesos is ook onderdeel van een complete oplossing voor datacenters genaamd DC/OS waarmee Data Analyse, Microservices op basis van Containers en Monitoring als totaal oplossing wordt aangeboden voor on-premise of op cloud gebaseerde datacenters.

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.