Original post information:
"authorDisplayName": "Carol McDonald","publish": "2018-10-17T08:00:00.000Z","tags": "spark"
I det här blogginlägget kommer vi att ge en introduktion till Apache Spark och dess historia och utforska några av de områden där du kan hitta dess speciella uppsättning funktioner visar det mest lovande. Vi kommer att diskutera förhållandet till andra viktiga tekniker och ge några användbara pekare.
Med Gnista 2.,0 och senare versioner genomfördes stora förbättringar för att göra Spark lättare att programmera och köra snabbare.
Vad är Apache Spark?
Spark är en allmänt distribuerad databehandlingsmotor som är lämplig för användning under många olika omständigheter. På toppen av Spark core Data processing engine finns bibliotek för SQL, maskininlärning, grafberäkning och strömbehandling, som kan användas tillsammans i en applikation. Programmeringsspråk som stöds av Spark inkluderar: Java, Python, Scala och R., Applikationsutvecklare och dataforskare införlivar Spark i sina applikationer för att snabbt fråga, analysera och omvandla data i skala. Uppgifter som oftast förknippas med Spark inkluderar ETL och SQL batch jobb över stora datamängder, bearbetning av strömmande data från sensorer, IoT, eller finansiella system, och maskininlärningsuppgifter.
Historik
för att förstå Spark, hjälper det att förstå dess historia., Innan Spark fanns MapReduce, ett motståndskraftigt distribuerat bearbetningsramverk, vilket gjorde det möjligt för Google att indexera den exploderande volymen av innehåll på webben, över stora kluster av råvaruservrar.
det fanns 3 kärnkoncept till Googles strategi:
- distribuera data: när en datafil laddas upp i klustret delas den upp i bitar, kallas datablock och distribueras bland datanoderna och replikeras över klustret.,
-
distribuera beräkning: användare anger en kartfunktion som behandlar en nyckel/värdepar för att generera en uppsättning mellanliggande nyckel / värdepar och en Minska funktion som sammanfogar alla mellanliggande värden associerade med samma mellanliggande nyckel. Program skrivna i den här funktionella stilen parallelliseras automatiskt och körs på ett stort kluster av råvaru maskiner på följande sätt:
- kartläggningsprocessen körs på varje tilldelad datanod, som endast fungerar på sitt datablock från en distribuerad fil.,
- resultaten från kartläggningsprocesserna skickas till reducerarna i en process som kallas ”shuffle and sort”: nyckel / värdepar från mapparna sorteras efter nyckel, partitioneras av antalet reduktorer och skickas sedan över nätverket och skrivs till Nyckel sorterade ”sekvensfiler” på reducernoderna.
- reducerprocessen körs på sin tilldelade nod och fungerar endast på dess delmängd av data (dess sekvensfil). Utgången från reducerprocessen skrivs till en utdatafil.,
- tolererar fel: både data och beräkning kan tolerera fel genom att misslyckas över till en annan nod för data eller bearbetning.
MapReduce word count exekveringsexempel:
vissa iterativa algoritmer, som PageRank, som Google använde för att rangordna webbplatser i sökmotorns resultat, kräver kedja Flera MapReduce jobb tillsammans, vilket orsakar mycket läsning och skrivning till disk., När flera MapReduce jobb är kedjade tillsammans, för varje MapReduce jobb, läses data från ett distribuerat filblock till en kartprocess, skrivet till och läst från en Sekvensfil däremellan och skrivs sedan till en utmatningsfil från en reducerprocess.
ett år efter att Google publicerat ett vitt papper som beskriver MapReduce framework (2004) skapade Doug Cutting och Mike Cafarella Apache Hadoop™.,
Apache-Spark™ började livet i 2009 som ett projekt inom AMPLab vid University of California, Berkeley. Spark blev ett inkuberat projekt av Apache Software Foundation i 2013, och det främjades tidigt i 2014 för att bli ett av stiftelsens toppnivåprojekt. Spark är för närvarande ett av de mest aktiva projekten som förvaltas av stiftelsen, och det samhälle som har vuxit upp runt projektet omfattar både produktiva enskilda bidragsgivare och välfinansierade företagsbacker, som Databricks, IBM och Kinas Huawei.,
Målet med Spark-projektet var att behålla fördelarna med Mapreduces skalbara, distribuerade, feltoleranta bearbetningsram, samtidigt som det blev effektivare och enklare att använda. Fördelarna med Spark över MapReduce är:
- Spark utför mycket snabbare genom caching data i minnet över flera parallella operationer, medan MapReduce innebär mer läsning och skrivning från disk.
- Spark kör flera gängade uppgifter inuti JVM processer, medan MapReduce körs som tyngre vikt JVM processer., Detta ger gnista snabbare start, bättre parallellitet och bättre CPU-utnyttjande.
- Spark ger en rikare funktionell programmeringsmodell än MapReduce.
- Spark är speciellt användbar för parallell bearbetning av distribuerad data med iterativa algoritmer.
hur en gnista Program körs på ett kluster
diagrammet nedan visar en gnista program som körs på ett kluster.,
- en gnista ansökan körs som oberoende processer, samordnas av SparkSession objektet i drivrutinsprogrammet.
- resursen eller klusterhanteraren tilldelar uppgifter till arbetare, en uppgift per partition.
- en uppgift tillämpar sin arbetsenhet på datauppsättningen i partitionen och matar ut en ny partitionsdatauppsättning. Eftersom iterativa algoritmer tillämpar operationer upprepade gånger på data, drar de nytta av caching datauppsättningar över iterationer.,
- resultat skickas tillbaka till drivrutinsprogrammet eller kan sparas på disk.,anager medföljer Spark
- Apache Mesos – en general cluster manager som också kan köra Hadoop – program
- Apache Hadoop YARN – resurshanteraren i Hadoop 2
- Kubernetes-ett open source-system för automatisering av distribution, skalning och hantering av containeriserade applikationer
spark har också ett lokalt läge, där föraren och exekutörerna körs som trådar på datorn istället för ett kluster, vilket är användbart för att utveckla dina program från en persondator.,
Vad gör Spark?
Spark kan hantera flera petabyte data åt gången, fördelat på ett kluster av tusentals samarbetande fysiska eller virtuella servrar. Den har en omfattande uppsättning utvecklingsbibliotek och API: er och stöder språk som Java, Python, R och Scala; dess flexibilitet gör den väl lämpad för en rad användningsfall., Spark används ofta med distribuerade databutiker som HPE Ezmeral data Fabric, Hadoop s HDFS och Amazons S3, med populära NoSQL-databaser som HPE Ezmeral Data Fabric, Apache HBase, Apache Cassandra och MongoDB, och med distribuerade meddelandebutiker som HPE Ezmeral Data Fabric och Apache Kafka.
typiska användningsfall inkluderar:
strömbehandling: från loggfiler till sensordata behöver applikationsutvecklare i allt högre grad hantera ”strömmar” av data., Dessa data kommer i en stadig ström, ofta från flera källor samtidigt. Även om det är säkert möjligt att lagra dessa dataströmmar på disken och analysera dem retroaktivt, kan det ibland vara förnuftigt eller viktigt att bearbeta och agera på data när den anländer. Strömmar av data relaterade till finansiella transaktioner, till exempel, kan behandlas i realtid för att identifiera– och vägra– potentiellt bedrägliga transaktioner.
maskininlärning: när datavolymerna växer blir maskininlärningsmetoderna mer genomförbara och mer exakta., Programvara kan utbildas för att identifiera och agera på utlösare inom väl förstådda datamängder innan samma lösningar tillämpas på nya och okända data. Spark förmåga att lagra data i minnet och snabbt köra upprepade frågor gör det ett bra val för utbildning maskininlärningsalgoritmer. Att köra i stort sett liknande frågor om och om igen, i skala, minskar avsevärt den tid som krävs för att gå igenom en uppsättning möjliga lösningar för att hitta de mest effektiva algoritmerna.,
Interactive analytics: i stället för att köra fördefinierade frågor för att skapa statiska instrumentpaneler för försäljning eller produktionslinje produktivitet eller aktiekurser, affärsanalytiker och dataforskare vill utforska sina data genom att ställa en fråga, visa resultatet, och sedan antingen ändra den ursprungliga frågan något eller borra djupare i resultat. Denna interaktiva frågeprocess kräver system som Spark som kan reagera och anpassa sig snabbt.,
dataintegration: Data som produceras av olika system i ett företag är sällan ren eller konsekvent nog för att enkelt och enkelt kombineras för rapportering eller analys. Extrahera, omvandla och ladda (ETL) processer används ofta för att dra data från olika system, rengöra och standardisera det och sedan ladda det i ett separat system för analys. Spark (och Hadoop) används alltmer för att minska kostnaden och tiden som krävs för denna ETL-process.
Vem använder Spark?,
ett brett utbud av teknikleverantörer har varit snabb att stödja Spark, erkänner möjligheten att utöka sina befintliga BIG data-produkter till områden där Spark levererar verkligt värde, såsom interaktiv fråga och maskininlärning. Välkända företag som IBM och Huawei har investerat betydande summor i tekniken, och ett växande antal startups bygger företag som helt eller delvis beror på Spark., Till exempel, i 2013 Berkeley laget som ansvarar för att skapa Spark grundade Databricks, som ger en värd end-to-end dataplattform drivs av Spark. Företaget är välfinansierat, efter att ha fått $247 miljoner över fyra investeringsrundor i 2013, 2014, 2016 och 2017, och Databricks anställda fortsätter att spela en framträdande roll för att förbättra och utvidga open source-koden för Apache Spark-projektet.,
Den stora Hadoop-leverantörer, inklusive MapR, Cloudera, och Hortonworks har alla flyttat till stöd GARN-baserade Spark tillsammans med sina befintliga produkter, och varje leverantör arbetar för att skapa mervärde för sina kunder. På andra håll har IBM, Huawei och andra gjort betydande investeringar i Apache Spark, integrera den i sina egna produkter och bidra med förbättringar och tillägg tillbaka till Apache-projektet., Webbaserade företag, som kinesisk sökmotor Baidu, e-handel operation Taobao, och sociala nätverk företaget Tencent, alla kör Spark-baserad verksamhet i skala, med Tencent 800 miljoner aktiva användare enligt uppgift genererar över 700 TB data per dag för bearbetning på ett kluster av mer än 8.000 compute noder.
förutom de webbaserade jättarna beror läkemedelsföretaget Novartis på Spark för att minska den tid som krävs för att få modelleringsdata i forskarnas händer, samtidigt som man säkerställer att etiska och avtalsmässiga skyddsåtgärder upprätthålls.,
Vad sätter gnista isär?
det finns många anledningar att välja Spark, men följande tre är viktiga:
enkelhet: Sparks funktioner är tillgängliga via en uppsättning rika API: er, alla utformade speciellt för att interagera snabbt och enkelt med data i skala. Dessa API: er är väldokumenterade och strukturerade på ett sätt som gör det enkelt för Dataforskare och applikationsutvecklare att snabbt sätta gnista till jobbet.
hastighet: Spark är konstruerad för hastighet, som fungerar både i minnet och på disken., Med hjälp av en Gnista, ett lag från Databricks på delad första plats med ett team från University of California, San Diego, i och med 2014 Daytona GraySort benchmarking utmaning (https://spark.apache.org/news/spark-wins-daytona-gray-sort-100tb-benchmark.html). Utmaningen innebär att bearbeta en statisk datauppsättning; Databricks-teamet kunde bearbeta 100 terabyte data som lagrats på solid state-enheter på bara 23 minuter, och den tidigare vinnaren tog 72 minuter genom att använda Hadoop och en annan klusterkonfiguration. Spark kan fungera ännu bättre när du stöder interaktiva frågor om data som lagras i minnet., I dessa situationer finns det påståenden att gnista kan vara 100 gånger snabbare än Hadoop MapReduce.
stöd: Spark stöder en rad programmeringsspråk, inklusive Java, Python, R och Scala. Spark inkluderar stöd för snäv integration med ett antal ledande lagringslösningar i Hadoop ekosystemet och bortom, inklusive HPE Ezmeral data Fabric (filsystem, databas och event store), Apache Hadoop (HDFS), Apache HBase och Apache Cassandra. Dessutom är Apache Spark-samhället stort, aktivt och internationellt., En växande uppsättning av kommersiella leverantörer, inklusive Databricks, IBM, och alla de viktigaste Hadoop leverantörer, leverera omfattande stöd för Spark-baserade lösningar.
kraften i Dataledningar
mycket av Spark makt ligger i dess förmåga att kombinera mycket olika tekniker och processer tillsammans till en enda, sammanhängande helhet. Utanför Spark kan de diskreta uppgifterna att välja data, omvandla dessa data på olika sätt och analysera de transformerade resultaten enkelt kräva en serie separata bearbetningsramar, såsom Apache Oozie., Spark erbjuder å andra sidan möjligheten att kombinera dessa tillsammans, korsa gränser mellan batch, streaming och interaktiva arbetsflöden på sätt som gör användaren mer produktiv.
Spark jobb utföra flera operationer i följd, i minnet, och endast spilla till disk när det krävs av minnesbegränsningar. Spark förenklar hanteringen av dessa olika processer, erbjuder en integrerad helhet – en dataledning som är lättare att konfigurera, lättare att köra, och lättare att underhålla., I användningsfall som ETL kan dessa rörledningar bli extremt rika och komplexa, vilket kombinerar ett stort antal ingångar och ett brett utbud av bearbetningssteg till en enhetlig helhet som konsekvent ger det önskade resultatet.