Beste antwoord
Voor wat het betreft het framework als geheel: op dit moment is Apache Spark zijn concurrenten een stap voor , vanwege enkele kenmerken zoals implementatie (en integratie) van verschillende en zeer nuttige tools (Spark SQL en MLlib om er maar twee te noemen) en de mogelijkheid om tussentijdse gegevens op te slaan in de RDDs. Vanwege dit motief concentreren veel ontwikkelaars zich erop, en ik vermoed dat tot er een nieuwe doorbraak in de onderliggende technologie komt, elke concurrent te verwaarlozen zal zijn.
Anders, als je kijkt naar de enkele implementaties op Apache Spark kun je een aantal concurrenten identificeren: H2O is een uitdager van Spark MLlib, Storm (heeft opgemerkt door Joe) is een alternatief voor Spark-streaming, en er zijn verschillende SQL-achtige engines die kunnen worden vergeleken met Spark SQL .
Antwoord
Hier zijn enkele JARGONS van Apache Spark die ik zal gebruiken.
Taak: – Een stuk code dat invoer uit HDFS of lokaal leest, wat berekeningen uitvoert op de gegevens en wat uitvoergegevens schrijft.
Stadia: -Jobs zijn onderverdeeld in fasen . Stadia worden geclassificeerd als een kaart of verkleinen stadia (het is gemakkelijker te begrijpen als u aan Hadoop hebt gewerkt en wilt correleren). Stadia zijn verdeeld op basis van rekengrenzen, alle berekeningen (operatoren) kunnen niet in een enkele Stage worden bijgewerkt. Het gebeurt over vele fasen.
Taken: – Elke fase heeft een aantal taken, één taak per partitie. Eén taak wordt uitgevoerd op één gegevenspartitie op één uitvoerder (machine).
DAG – DAG staat voor Directed Acyclic Graph, in de huidige context is het een DAG van operators.
Uitvoerder – Het proces dat verantwoordelijk is voor het uitvoeren van een taak.
Driver – Het programma / proces dat verantwoordelijk is voor het uitvoeren van de Job via de Spark Engine
Master – De machine waarop het Driver-programma draait
Slave – De machine waarop het Executor-programma draait
Alle jobs in spark bestaan uit een reeks operators en draaien op een set gegevens. Alle operators in een taak worden gebruikt om een DAG (Directed Acyclic Graph) te maken. De DAG is geoptimaliseerd door operators waar mogelijk te herschikken en te combineren. Laten we bijvoorbeeld aannemen dat u een Spark-taak moet indienen die een kaartbewerking bevat, gevolgd door een filterbewerking. De Spark DAG-optimizer zou de volgorde van deze operators herschikken, aangezien filteren het aantal records dat kaartbewerking moet ondergaan, zou verminderen.
Spark heeft een kleine codebasis en het systeem is verdeeld in verschillende lagen. Elke laag heeft een aantal verantwoordelijkheden. De lagen zijn onafhankelijk van elkaar.
- De eerste laag is de interpreter , Spark gebruikt een Scala-interpreter, met enkele aanpassingen.
- Terwijl u uw code invoert in de Spark-console (RDDs maken en operators toepassen ), Maakt Spark een operatorgrafiek.
- Wanneer de gebruiker een actie uitvoert (zoals verzamelen), wordt de grafiek verzonden naar een DAG-planner. De DAG-planner verdeelt de operatorgrafiek in (kaart en verklein) fasen.
- Een fase bestaat uit taken op basis van partities van de invoergegevens. De DAG-planner leidt operators samen om de grafiek te optimaliseren. Voor bijv. kaartoperatoren kunnen in één fase worden gepland. Deze optimalisatie is de sleutel tot de prestaties van Sparks. Het uiteindelijke resultaat van een DAG-planner is een reeks fasen.
- De fasen worden doorgegeven aan de Taakplanner . De taakplanner start taken via clustermanager . (Spark Standalone / Yarn / Mesos). De taakplanner is niet op de hoogte van de afhankelijkheden tussen fasen.
- De Worker voert de taken uit op de Slave. Een nieuwe JVM wordt gestart per JOB. De medewerker weet alleen van de code die eraan wordt doorgegeven.
Spark slaat de te verwerken gegevens op in het cachegeheugen, waardoor ik deze 100 keer sneller kan gebruiken dan hadoop. Spark gebruikt Akka voor multithreading, het beheren van de status van de uitvoerder, het plannen van taken. Het gebruikt Jetty om bestanden (Jars en andere bestanden) te delen, Http Broadcast, Spark Web UI uit te voeren. Spark is zeer configureerbaar en kan de bestaande componenten gebruiken die al bestaan in het Hadoop Eco-System. Hierdoor is spark exponentieel gegroeid, en in korte tijd gebruiken veel organisaties het al in productie.
Je kunt kijken naar
om dingen in meer detail te begrijpen.