Apache Flink vs Spark – Kommer den ena att ta över den andra?
Sist uppdaterad: 25 jan 2021
Apache Spark och Apache Flink är båda öppna ramverk för distribuerad bearbetning som byggdes för att minska latenserna för Hadoop Mapreduce vid snabb databehandling. Det finns en vanlig missuppfattning om att Apache Flink kommer att ersätta Spark eller om det är möjligt att båda dessa tekniker för stora datamängder kan samexistera och därmed tillgodose liknande behov av feltolerant och snabb databehandling. Apache Spark och Flink kan verka likadana för någon som inte har arbetat med någon av dessa och bara är bekant med Hadoop, och det är uppenbart att de kommer att tycka att utvecklingen av Apache Flink mest är överflödig. Men Flink lyckades hålla sig framme i spelet på grund av sin strömbearbetningsfunktion, som klarar av att bearbeta rader efter rader av data i realtid – vilket inte är möjligt med Apache Spark’s batchbearbetningsmetod. Detta gör Flink snabbare än Spark.
Enligt denna IBM-studie skapar vi omkring 2,5 kvintiljoner bytes data varje dag – och denna hastighet av datagenerering fortsätter att öka i en aldrig tidigare skådad takt. För att sätta saker och ting i ett annat perspektiv kan man säga att ungefär 90 procent av alla data som finns i världen har skapats under de senaste två åren, trots att World Wide Web har varit tillgänglig för allmänheten i mer än två decennier. I takt med att Internet växte, ökade också antalet användare, och den ständigt ökande efterfrågan på innehåll banade väg för Web 2.0 under det senaste decenniet. Det var första gången som användarna tilläts skapa sina egna data på internet och de var redo att konsumeras av en datahungrig publik.
Därefter var det sociala mediers tur att invadera våra liv. Enligt wersm-rapporten (we are social media) får Facebook mer än 4 miljoner likes på en minut! De data som genereras av andra populära källor nämns i infografiken (hämtad från samma wersm-studie) innan vi tar en titt på hur dessa data konsumeras.
”Hur ska man lagra dessa enorma datamängder?” var en problembeskrivning som höll tekniknördarna sysselsatta under större delen av det föregående decenniet. De sociala mediernas plötsliga uppkomst gjorde inte deras uppgifter lättare. Nya lagringslösningar som Cloud Computing har dock revolutionerat branschen och presenterat den bästa möjliga lösningen. Under det nuvarande årtiondet har problemställningen förskjutits till ”Vad ska man göra med enorma datamängder?”. Dataanalys har blivit det slutgiltiga målet, men innan dess måste mycket arbete göras för att integrera data som lagrats i olika format från olika källor och förbereda dem för bearbetning och analys, vilket är en krävande uppgift.
För en fullständig lista över företag som arbetar med stora data och deras löner- KLICKA HÄR
Våra två ämnen för idag – Apache Spark och Apache Flink – försöker besvara den frågan och mer därtill.
Apache Spark
Spark är ett ramverk för klusterberäkningar med öppen källkod som har en stor global användarbas. Det är skrivet i Scala, Java, R och Python och ger programmerare ett gränssnitt för tillämpningsprogrammering (API) som bygger på en feltolerant, skrivskyddad mängd av distribuerade dataelement. På en kort tid av två år sedan den först släpptes (maj 2014) har den fått stor acceptans för avancerad analys i realtid i minnet – på grund av dess snabbhet, användarvänlighet och förmåga att hantera sofistikerade analytiska krav.
Om du vill ha mer information om Big Data-karriärer klickar du på den orange ”Request Info”-knappen högst upp på den här sidan.
Fördelar med Spark
Apache Spark har flera fördelar jämfört med traditionell Big Data- och MapReduce-baserad teknik. De mest framträdande är följande. Den tar i huvudsak MapReduce till nästa nivå med en prestanda som är flera gånger snabbare. En av de viktigaste skillnaderna för Spark är dess förmåga att hålla mellanliggande resultat i själva minnet, i stället för att skriva tillbaka till disken och läsa från den igen, vilket är avgörande för iterationsbaserade användningsfall.
- Snabbhet – Spark kan utföra batchbehandlingsjobb 10 till 100 gånger snabbare än MapReduce. Det betyder inte att den släpar efter när data måste skrivas till (och hämtas från) disk, eftersom den är världsrekordhållare för storskalig sortering på disk.
- Användarvänlighet – Apache Spark har lättanvända API:er som är byggda för att hantera stora datamängder.
- Enhetlig motor – Spark kan köras ovanpå Hadoop, och använder sig av klusterhanteraren (YARN) och underliggande lagringsutrymmen (HDFS, HBase, etc.). Men den kan också köras oberoende av Hadoop och samarbeta med andra klusterhanterare och lagringsplattformar (t.ex. Cassandra och Amazon S3). Det finns också bibliotek på högre nivå som stöder SQL-frågor, dataströmning, maskininlärning och grafbehandling.
- Välj mellan Java, Scala eller Python – Spark binder dig inte till ett visst språk utan låter dig välja mellan de populära språken Java, Scala, Python, R och till och med Clojure.
- Delning av data i minnet – Olika jobb kan dela data i minnet, vilket gör det till ett idealiskt val för iterativa, interaktiva och händelseströmbehandlingsuppgifter.
- Aktivt, växande användargemenskap – Ett aktivt användargemenskap har lett till en stabil utgåva av Spark (i juni 2016) inom två år från den första utgåvan. Detta talar för dess globala acceptans, som ökar.
Apache Flink
Tysk för ”snabb” eller ”smidig”, Apache Flink är den senaste nykomlingen på listan över ramverk med öppen källkod som fokuserar på analys av stora data och som försöker ersätta Hadoops åldrande MapReduce, precis som Spark. Flink fick sin första API-stabila version släppt i mars 2016 och är byggd för in-memory-bearbetning av batchdata, precis som Spark. Den här modellen är verkligen praktisk när upprepade övergångar måste göras på samma data. Detta gör den till en idealisk kandidat för maskininlärning och andra användningsfall som kräver adaptiv inlärning, självlärande nätverk osv. Med det oundvikliga uppsvinget för Internet of Things (IoT)-utrymmet har Flink-användargemenskapen några spännande utmaningar att se fram emot.
Fördelar med Flink
- Verklig strömbearbetningsmotor som kan tillnärma sig batchbearbetning, snarare än att vara tvärtom.
- Bättre minneshantering – Explicit minneshantering gör sig av med de tillfälliga toppar som finns i Spark-ramverket.
- Snabbhet – Den hanterar högre hastigheter genom att iterativ bearbetning kan ske på samma nod i stället för att klustret kör dem oberoende av varandra. Prestandan kan justeras ytterligare genom att justera den så att den endast bearbetar den del av data som har ändrats på nytt i stället för hela uppsättningen. Den erbjuder upp till fem gånger högre hastighet jämfört med standardbehandlingsalgoritmen.
- Mindre konfiguration
Apache Flink vs Spark
När Flink kom var Apache Spark redan de facto det ramverk för snabba, in-memory-analyser av stora datamängder som krävs för ett antal organisationer runt om i världen. Detta fick Flink att framstå som överflödig. Varför skulle man trots allt behöva ytterligare en databehandlingsmotor medan juryn fortfarande var ute efter den befintliga? Man måste gräva djupare i Flinks kapacitet för att observera vad som skiljer den åt, även om ett antal analytiker har kallat den för ”4G of Data Analytics”.
Djupt inbäddad i Spark:s inställningar finns en liten svaghet som Flink har riktat in sig på och försöker utnyttja. Även om det stämmer för avslappnade diskussioner är Spark inte enbart en motor för strömbearbetning. Som Ian Pointer observerade i InfoWorld-artikeln ”Apache Flink: New Hadoop contender squares off against Spark”, är Spark i huvudsak en snabb batchoperation som endast behandlar en liten del av inkommande data under en tidsenhet. Spark kallar detta för ”micro batching” i sin officiella dokumentation. Det är osannolikt att denna fråga kommer att ha någon praktisk betydelse för verksamheten om inte användningsfallet kräver låg latenstid (finansiella system) där en fördröjning i storleksordningen millisekunder kan få betydande konsekvenser. Med detta sagt är Flink ett pågående arbete och kan ännu inte göra anspråk på att ersätta Spark.
Flink är ett ramverk för strömbearbetning som kan utföra de uppgifter som kräver batchbearbetning, vilket ger dig möjlighet att använda samma algoritm i båda lägena, utan att du behöver vända dig till en teknik som Apache Storm, som kräver svar med låg latenstid.
Både Spark och Flink har stöd för in-memory-bearbetning, vilket ger dem en tydlig fördel i fråga om snabbhet jämfört med andra ramverk. När det gäller realtidsbehandling av inkommande data kan Flink inte mäta sig med Spark, även om den har kapacitet att utföra realtidsbehandlingsuppgifter.
Spark och Flink kan båda hantera iterativ behandling i minnet. När det gäller snabbhet får Flink övertaget eftersom den kan programmeras för att endast bearbeta de data som har ändrats, och det är där som den kommer över Spark.
Växthistorier – Spark och Flink
Varje mjukvaruramverk behöver mer än teknisk expertis för att kunna hjälpa företag att få ut maximalt värde. I det här avsnittet gräver vi i artikeln Apache Spark 2015 Year in Review från Databricks för att se hur det har gått i den globala gemenskapen av användare och utvecklare. Under året släpptes fyra versioner (1.3 till 1.6), var och en med hundratals korrigeringar för att förbättra ramverket. Det som har fångat vår uppmärksamhet är ökningen av antalet bidragande utvecklare – från 500 under 2014 till över 1000 under 2015! En annan märkbar sak med Spark är den lätthet med vilken användarna övergår till de nya versionerna. Rapporten nämner att inom tre månader övergår majoriteten av användarna till den senaste versionen. Dessa fakta stärker dess rykte som det mest aktivt utvecklade (och antagna) dataverktyget med öppen källkod.
Flink har kommit relativt sent in i loppet, men 2015 års översikt på dess officiella webbplats visar varför det är här för att stanna som det mest kompletta ramverket för strömbearbetning med öppen källkod som finns tillgängligt. Flinks github-repository (Get the Repository – Here) visar att gemenskapen fördubblades i storlek under 2015 – från 75 bidragsgivare till 150. Repository forks mer än tredubblades under året och det gjorde även antalet stjärnor i repositoriet. Med utgångspunkt i Berlin, Tyskland, har användargruppen vuxit över kontinenterna till Nordamerika och Asien. Flink Forward-konferensen var en annan milstolpe för Flink, där över 250 deltagare deltog. Över 100 deltagare reste från hela världen för att lyssna på tekniska föredrag från organisationer som Google, MongoDB, Telecom, NFLabs, RedHat, IBM, Huawei, Ericsson, Capital One, Amadeus och många fler.
Tyvärr är det fortfarande tidigt att peka ut en av dessa två som en klar vinnare, men vi anser att i stället för att ha många ramverk som gör samma sak skulle teknikvärlden vara bättre betjänt av att nya aktörer gör olika saker och kompletterar de befintliga i stället för att konkurrera med dem.
PREVIOUS |
NEXT |