Utvärdering av Apache Spark on AWS

spark-logo-trademark      AmazonWebservices_Logo.svg

Ahlin Helena - Version 2Under Ferrologics senaste två R&D-dagar valde några av oss att utvärdera Apache Spark on Amazon Web Services (AWS), med hjälp av programmeringsspråket Scala. Anledningen till att vi valt just detta område är att prestandamässigt anses vara ett av de absolut snabbaste modelleringsverktygen på marknaden.

Målet med övningen var att bygga några enklare prediktiva modeller med hjälp av exempelvis random forrest och logistisk regression. Syftet med övningen var att utvärdera och reflektera kring Sparks för- och nackdelar kopplade till analysprocessen.

Apache Spark är ett ramverk och en snabb och generell motor för storskalig dataprocessering och är just nu en av de mest intressanta komponenterna kopplade till Hadoop. Ramverket kan processera data i minnet, är snabbare än MapReduce och enkel att använda. Man kan skriva syntax i Java, Scala, Python och R. Spark kan accessa data lagrat i bland annat HDFS, Cassandra, HBase och S3, och kan användas till både batch-processering, streaming, interaktiv analys och machine learning. Spark är tänkt att användas till avancerad analys, processering av stora datamängder, machine learning, realtidsanalys mm. För att lagra data har vi använt oss av den molnbaserade tjänsten S3 inom AWS.

R&D-dagarna har gett upphov till en del slutsatser och reflektioner. De största fördelarna är verktygets skalbarhet, stödet för SQL samt möjlighet för snabba queries via cashning i minnet. Vi anser att fördelarna med Spark kommer till sin rätt då det är stora mängder data som ska analyseras, har man med mindre datamängder att göra finns det andra verktyg som är mer användarvänliga och därför passar bättre. I jämförelse med mer traditionella verktyg ställer Spark högre krav på användarens tekniska kunskaper. Spark förutsätter en förståelse för ramverkets olika koncept som kan uppfattas som mer komplexa vid jämförelse med mer traditionella verktyg. Vidare ställer Spark större krav på en förståelse för olika datastrukturer och datatyper samt användarens programmeringsvana.

Slutligen, för att analysprocessen ska bli så effektiv som möjligt är det viktigt att skapa en arkitektur som stödjer processen. En majoritet av nedlagd tid i en analysprocess går åt till att manipulera, bearbeta och visualisera data. För att göra denna process så effektiv som möjligt så är vår bedömning att det till Spark (där vi exekverat Spark-kod från ett shell) behövs kompletterande verktyg för exempelvis datavisualisering. Detta område har inte ingått i vårat scope , utan kräverer mer efterforskning.

Detta är våra egna insikter och åsikter kring Spark. Vi gör detta helt av eget intresse utan stöd från sponsorer, vilket gör att vi inte kan lägga hur mycket tid som helst samt att vi inte låter våra åsikter färgas. Vi uppskattar att få ta del av engagerade kommentarer, åsikter och erfarenheter.

Peter Saltin – Christian Bobeck – Niklas Johnson – Leo Brouwers – Helena Ahlin