Apache Spark defined
Apache Spark är en databehandlingsram som snabbt kan utföra bearbetningsuppgifter på mycket stora datamängder och kan också distribuera databehandlingsuppgifter över flera datorer, antingen på egen hand eller tillsammans med andra distribuerade datorverktyg. Dessa två egenskaper är nyckeln till världarna av big data och maskininlärning, vilket kräver marskalering av massiv datorkraft att krossa genom stora datalager., Spark tar också några av programmeringsbördorna för dessa uppgifter från utvecklarens axlar med ett lättanvänt API som abstraherar bort mycket av grunt-arbetet med distribuerad databehandling och stor databehandling.
Från dess blygsamma början i AMPLab vid U. C. Berkeley i 2009, Apache Gnista har blivit en av de viktigaste big data distribuerad bearbetning ramar i världen. Spark kan distribueras på olika sätt, ger infödda bindningar för Java, Scala, Python och r programmeringsspråk, och stöder SQL, strömmande data, maskininlärning och grafbehandling., Du hittar den som används av banker, telekommunikationsföretag, spelföretag, regeringar och alla de stora tekniska jättarna som Apple, Facebook, IBM och Microsoft.
Apache Spark architecture
på en grundläggande nivå består en Apache Spark-applikation av två huvudkomponenter: en drivrutin, som omvandlar användarens kod till flera uppgifter som kan distribueras över arbetsnoder och exekutörer, som körs på dessa noder och utför de uppgifter som tilldelats dem. Någon form av kluster manager är nödvändigt att medla mellan de två.,
ur lådan kan Spark köras i ett fristående klusterläge som helt enkelt kräver Apache Spark framework och en JVM på varje maskin i ditt kluster. Det är dock mer troligt att du vill dra nytta av ett mer robust resurs-eller klusterhanteringssystem för att ta hand om att fördela arbetstagare på Efterfrågan för dig. I företaget betyder det normalt att man kör på Hadoop garn (så här kör Cloudera och Hortonworks distributioner Spark jobs), men Apache Spark kan också köras på Apache Mesos, Kubernetes och Docker Swarm.,
Om du söker en hanterad lösning, då Apache Gnista kan hittas som en del av Amazon EMR, Google Cloud Dataproc, och Microsoft Azure HDInsight. Databricks, företaget som använder grundarna av Apache Spark, erbjuder också Databricks Unified Analytics-plattformen, som är en omfattande hanterad tjänst som erbjuder Apache Spark clusters, streaming support, integrerad webbaserad notebook-utveckling och optimerad cloud I/O-prestanda över en standard Apache Spark-distribution.
Apache Spark bygger användarens databehandlingskommandon till ett riktat Acykliskt diagram eller DAG., DAG är Apache Spark schemaläggningslager; det bestämmer vilka uppgifter som utförs på vilka noder och i vilken sekvens.
Spark vs Hadoop: Varför använda Apache Spark?
det är värt att påpeka att Apache Spark vs. Apache Hadoop är lite av en missvisande. Du hittar Spark ingår i de flesta Hadoop distributioner dessa dagar. Men på grund av två stora fördelar har Spark blivit ramen för valet när man bearbetar stora data, övertar den gamla MapReduce paradigmen som förde Hadoop till framträdande.
den första fördelen är hastighet., Spark ’ s in-memory data engine innebär att den kan utföra uppgifter upp till hundra gånger snabbare än MapReduce i vissa situationer, särskilt jämfört med flerstegsjobb som kräver skrivning av tillstånd tillbaka till disk mellan steg. I huvudsak skapar MapReduce ett tvåstegs exekveringsdiagram som består av datakartläggning och minskning, medan Apache Sparks DAG har flera steg som kan distribueras mer effektivt. Även Apache Spark jobb där data inte kan vara helt innesluten i minnet tenderar att vara runt 10 gånger snabbare än deras MapReduce motsvarighet.,
den andra fördelen är den utvecklarvänliga Spark API. Lika viktigt som Spark ’ s speedup är, man kan hävda att vänligheten i Spark API är ännu viktigare.
Spark Core
jämfört med MapReduce och andra Apache Hadoop komponenter, Apache Spark API är mycket vänlig mot utvecklare, gömmer mycket av komplexiteten i en distribuerad processormotor bakom enkla metodanrop., Det kanoniska exemplet på detta är hur nästan 50 rader av MapReduce-kod för att räkna ord i ett dokument kan reduceras till bara några rader Apache Spark (här visas i Scala):
genom att ge bindningar till populära språk för dataanalys som Python och R, liksom den mer företagsvänliga Java och Scala, tillåter Apache Spark alla från applikationsutvecklare till Dataforskare att utnyttja sin skalbarhet och hastighet på ett tillgängligt sätt.,
Spark rdd
i hjärtat av Apache Spark är begreppet fjädrande distribuerade Dataset (RDD), en programmering abstraktion som representerar en oföränderlig samling av objekt som kan delas över en dator kluster. Operationer på rdd: erna kan också delas över klustret och utföras i en parallell satsprocess, vilket leder till snabb och skalbar parallell bearbetning.
RDDs kan skapas från enkla textfiler, SQL-databaser, NoSQL-butiker (som Cassandra och MongoDB), Amazon S3 hinkar och mycket mer., Mycket av Spark Core API bygger på detta rdd-koncept, vilket möjliggör traditionell karta och minskar funktionaliteten, men ger också inbyggt stöd för att ansluta datamängder, filtrering, provtagning och aggregering.
Spark körs på ett distribuerat sätt genom att kombinera en driver core process som delar en gnista ansökan i uppgifter och distribuerar dem bland många exekutör processer som gör arbetet. Dessa exekutörer kan skalas upp och ner som krävs för programmets behov.,
Spark SQL
ursprungligen känd som Shark har Spark SQL blivit allt viktigare för Apache Spark-projektet. Det är sannolikt det gränssnitt som oftast används av dagens utvecklare när du skapar applikationer. Gnista SQL är fokuserad på att bearbeta strukturerad data med hjälp av en dataframe strategi lånat från R och Python (i Pandor). Men som namnet antyder ger Spark SQL också ett SQL2003-kompatibelt gränssnitt för att fråga data, vilket ger kraften i Apache Spark till analytiker såväl som utvecklare.,
Vid sidan av standard SQL-stöd ger Spark SQL ett standardgränssnitt för läsning från och skrivning till andra databutiker, inklusive JSON, HDFS, Apache Hive, JDBC, Apache ORC och Apache Parquet, som alla stöds ur lådan. Andra populära butiker—Apache Cassandra, MongoDB, Apache HBase och många andra—kan användas genom att dra i separata kontakter från Spark Packages ekosystemet.,
att välja några kolumner från en dataframe är lika enkelt som den här raden:
citiesDF.select("name”, "pop”)
med hjälp av SQL-gränssnittet registrerar vi dataframe som en tillfällig tabell, varefter vi kan utfärda SQL-frågor mot det:
citiesDF.createOrReplaceTempView("cities”)
spark.sql("SELECT name, pop FROM cities”)
bakom kulisserna använder Apache Spark en query optimizer som heter Catalyst som undersöker data och frågor för att producera en effektiv frågeplan för Dataort och beräkning som kommer att utföra de nödvändiga beräkningarna över klustret. I Apache Gnista 2.,X era, gnista SQL-gränssnittet för dataframes och dataset (i huvudsak en typad dataframe som kan kontrolleras vid kompileringstid för korrekthet och dra nytta av ytterligare minne och beräkningsoptimeringar vid körning) är det rekommenderade tillvägagångssättet för utveckling. Rdd-gränssnittet är fortfarande tillgängligt, men rekommenderas endast om dina behov inte kan åtgärdas inom Spark SQL paradigm.
Spark 2.4 introducerade en uppsättning inbyggda högre orderfunktioner för att manipulera arrayer och andra datatyper med högre order direkt.,
Spark mllib
Apache Spark buntar också bibliotek för att applicera maskininlärning och grafanalysteknik till data i skala. Spark MLlib innehåller ett ramverk för att skapa maskininlärningsledningar, vilket möjliggör enkel implementering av funktionsutvinning, val och transformationer på alla strukturerade dataset. MLlib levereras med distribuerade implementeringar av klustring och klassificeringsalgoritmer som k-betyder klustring och slumpmässiga skogar som enkelt kan bytas in och ut ur anpassade rörledningar., Modeller kan utbildas av dataforskare i Apache Spark med hjälp av R eller Python, sparas med MLlib och importeras sedan till en Java-baserad eller Scala-baserad rörledning för produktionsanvändning.
Observera att medan Spark MLlib täcker grundläggande maskininlärning, inklusive klassificering, regression, klustring och filtrering, inkluderar den inte faciliteter för modellering och träning av djupa neurala nätverk (för detaljer se InfoWorld Spark MLlib review). Dock är djupa lärande rörledningar i verk.,
Spark GraphX
Spark GraphX levereras med ett urval av distribuerade algoritmer för bearbetning av grafstrukturer, inklusive en implementering av Googles PageRank. Dessa algoritmer använder Spark Core rdd inställning till modelleringsdata; GraphFrames paketet kan du göra grafoperationer på dataframes, inklusive att dra nytta av Catalyst optimizer för graffrågor.
Spark Streaming
Spark Streaming var ett tidigt tillägg till Apache Spark som hjälpte det att få dragkraft i miljöer som krävde realtid eller nära realtidsbearbetning., Tidigare var batch och strömbehandling i Apache Hadoops Värld separata saker. Du skulle skriva MapReduce-kod för dina batchbehandlingsbehov och använda något som Apache Storm för dina realtidsströmningskrav. Detta leder naturligtvis till olika kodbaser som måste synkroniseras för applikationsområdet trots att de bygger på helt olika ramar, kräver olika resurser och involverar olika operativa problem för att driva dem.,
Spark Streaming utökade Apache Spark-konceptet för batch-bearbetning till streaming genom att bryta strömmen ner i en kontinuerlig serie mikrobatcher, som sedan kunde manipuleras med Apache Spark API. På så sätt kan kod i batch-och streamingverksamhet dela (mestadels) samma kod, som körs på samma ram, vilket minskar både utvecklare och operatörskostnader. Alla vinner.,
en kritik av Gnistströmmningsmetoden är att mikrobatching, i scenarier där ett låglatensrespons på inkommande data krävs, kanske inte kan matcha prestandan hos andra streaming-kapabla ramar som Apache Storm, Apache Flink och Apache Apex, som alla använder en ren strömmande metod snarare än mikrobatcher.
strukturerad Streaming
strukturerad Streaming (tillagd i Spark 2.x) är att gnista Streaming vad Spark SQL var till Spark Core API: en högre nivå API och enklare abstraktion för att skriva program., När det gäller struktur Streaming, högre nivå API tillåter i huvudsak utvecklare att skapa oändliga strömmande dataframes och datauppsättningar. Det löser också några mycket verkliga smärtpunkter som användarna har kämpat med i den tidigare ramen, särskilt när det gäller att hantera händelsetidsaggregationer och sen leverans av meddelanden. Alla frågor om strukturerade strömmar går igenom Catalyst query optimizer, och kan även köras på ett interaktivt sätt, så att användarna kan utföra SQL-frågor mot live streaming data.,
strukturerad Streaming förlitade sig ursprungligen på Spark streamings mikrobatchsystem för hantering av strömmande data. Men i Spark 2.3 lade Apache Spark-teamet till ett kontinuerligt bearbetningsläge med låg latens till strukturerad Streaming, vilket gör det möjligt att hantera svar med latenser så låga som 1ms, vilket är mycket imponerande. Från och med gnista 2.4 anses kontinuerlig bearbetning fortfarande experimentell. Medan strukturerad Streaming är byggd ovanpå Spark SQL-motorn, stöder kontinuerlig Streaming endast en begränsad uppsättning frågor.,
strukturerad Streaming är framtiden för strömmande program med plattformen, så om du bygger en ny strömmande program, bör du använda strukturerad Streaming. Äldre Spark Streaming API: er kommer att fortsätta att stödjas, men projektet rekommenderar att överföra över till strukturerad Streaming, eftersom den nya metoden gör att skriva och underhålla strömmande kod mycket mer uthärdligt.
Deep Learning Pipelines
Apache Spark stöder djupt lärande via Deep Learning Pipelines., Med hjälp av den befintliga ledningen struktur MLlib, kan du ringa till lägre nivå djupt lärande bibliotek och konstruera klassificerare på bara några rader kod, samt tillämpa anpassade TensorFlow grafer eller Keras modeller för inkommande data. Dessa grafer och modeller kan även registreras som anpassade gnista SQL UDFs (användardefinierade funktioner) så att de djupa inlärningsmodeller kan tillämpas på data som en del av SQL-satser.
Apache Spark tutorials
redo att dyka in och lära Apache Spark?, Vi rekommenderar Evan Heitman är en Neanderthals Guide till Apache Spark i Python, som inte bara lägger ut grunderna i hur Apache Spark fungerar i relativt enkla termer, men också guidar dig genom processen att skriva en enkel Python-applikation som använder ramen. Artikeln är skriven ur ett dataforskarperspektiv, vilket är meningsfullt eftersom datavetenskap är en värld där stordata och maskininlärning blir alltmer kritiska.,
om du letar efter några Apache Spark-exempel för att ge dig en känsla av vad plattformen kan göra och hur den gör det, kolla in Spark By {Examples}. Det finns gott om provkod här för ett antal av de grundläggande uppgifter som utgör byggstenarna i Spark programmering, så att du kan se de komponenter som utgör de större uppgifter som Apache gnista görs för.
behöver du gå djupare? DZone har vad det blygsamt hänvisar till som den kompletta Apache Spark-samlingen, som består av en massa användbara handledning på många Apache Spark-ämnen. Glad inlärning!