ebook img

Big Data Systeme: Konzeptioneller und experimenteller Vergleich von Apache Flink mit Apache PDF

89 Pages·2016·1.48 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Big Data Systeme: Konzeptioneller und experimenteller Vergleich von Apache Flink mit Apache

Bachelorarbeit Timo Lange Big Data Systeme: Konzeptioneller und experimenteller Vergleich von Apache Flink mit Apache Spark anhand eines Anwendungsszenarios FakultätTechnikundInformatik FacultyofEngineeringandComputerScience StudiendepartmentInformatik DepartmentofComputerScience Timo Lange Big Data Systeme: Konzeptioneller und experimenteller Vergleich von Apache Flink mit Apache Spark anhand eines Anwendungsszenarios BachelorarbeiteingereichtimRahmenderBachelorprüfung imStudiengangBachelorofScienceAngewandteInformatik amDepartmentInformatik derFakultätTechnikundInformatik derHochschulefürAngewandteWissenschaftenHamburg BetreuenderPrüfer:Prof.Dr.OlafZukunft Zweitgutachter:Prof.Dr.UlrikeSteffens Eingereichtam:16.Dezember2016 TimoLange ThemaderArbeit BigDataSysteme:KonzeptionellerundexperimentellerVergleichvonApacheFlinkmitApache SparkanhandeinesAnwendungsszenarios Stichworte Apache,Flink,Spark,BigData,AlternatingLeastSquares,ALS,Skalierbarkeit Kurzzusammenfassung BigDataSystemestellenmittlerweileeinenderrelevantestenBereichederDatenverarbeitung dar.EinesdermomentanpopulärstenSystemeindiesemBereichistApacheSpark.Einweiteres System mit zunehmende Popularität ist Apache Flink. Beide Systeme sollen zunächst auf KonzeptionellerundArchitektonischerEbeneverglichenwerden.Anschließendwerdenbeide SystemefürdieprototypischeUmsetzungeinerUser-Storyherangezogen,gefolgtvoneiner EvaluierungderSystememittelsderGoal-Question-MetricMethode.Hierbeizeigtsich,dass SparkdasreifereSystemist,beideSystemeabernichtgeeignetsinddieUser-Storymitgeringem AufwandnachdenzuvorgestelltenAnforderungenumzusetzen. TimoLange Titleofthepaper ScalableBigDataanalysis: ConceptualandpracticalcomparisonofApacheFlinkwithApache Sparkbasedonanapplicationscenario Keywords Apache,Flink,Spark,BigData,AlternatingLeastSquares,ALS,scalability Abstract Today,BigDatasystemsrepresentoneofthemostrelevanttopicsindataprocessing. Oneof the most popular systems in this category is Apache Spark. Another rising System of this categoryisApacheFlink. Withinthescopeofthiswork,laysthecomparisonoftheseSystems. Firstly,theseSystemsarebeingcomparedonaconceptualandanarchitecturallevel. Followed up by the design and implementation of a prototype of a User-Story in the context of an applicationscenario. ThenextstepistheevaluationofFlinkandSparkonthefoundationof theimplementedprototype. ThishappensbytheuseoftheGoal-Question-Metricmethod. It showsthatSparkisthemorematuresystembutbothsystemsarenotcapabletoimplement theUser-Storyaccordingtotherequirementswithasmallinvestment. Inhaltsverzeichnis Tabellenverzeichnis viii Abbildungsverzeichnis ix 1 Einleitung 1 1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 AufbauderArbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 Anwendungssysteme 3 2.1 ApacheFlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.1 Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1.1.1 StreamingWindows. . . . . . . . . . . . . . . . . . . . . . . 4 2.1.1.2 Time&Out-of-orderEvents . . . . . . . . . . . . . . . . . . 4 EventTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.1.3 State&FaultTolerance . . . . . . . . . . . . . . . . . . . . . 6 State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 FaultTolerancedurchCheckpoints . . . . . . . . . . . . . . . . 7 2.1.1.4 Speicherverwaltung . . . . . . . . . . . . . . . . . . . . . . . 7 MemorySegments . . . . . . . . . . . . . . . . . . . . . . . . . 9 TypenSerialisierung . . . . . . . . . . . . . . . . . . . . . . . . 9 Off-heapMemory . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.1.1.5 Iterationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Bulk-Iterationen . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Delta-Iterationen . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.1.1.6 IntegrierteBibliotheken. . . . . . . . . . . . . . . . . . . . . 11 FlinkML-MaschinellesLernen . . . . . . . . . . . . . . . . . . 11 Gelly-GraphVerarbeitung . . . . . . . . . . . . . . . . . . . . 11 Table-RelationaleDatenverarbeitung . . . . . . . . . . . . . . 11 FlinkCEP-ComplexEventProcessing . . . . . . . . . . . . . . 12 2.1.2 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.1.2.1 Komponenten-Stack . . . . . . . . . . . . . . . . . . . . . . . 12 2.1.2.2 Datenstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . 12 Extern(PublicAPI) . . . . . . . . . . . . . . . . . . . . . . . . . 12 Intern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.2.3 Scheduling&Deployment . . . . . . . . . . . . . . . . . . . 14 iv Inhaltsverzeichnis 2.2 ApacheSpark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.1 Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.1.1 Faulttolerance . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Batch(RDD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Streaming(DStream) . . . . . . . . . . . . . . . . . . . . . . . . 18 Accumulators(SharedVariable) . . . . . . . . . . . . . . . . . . 19 2.2.1.2 Speicherverwaltung . . . . . . . . . . . . . . . . . . . . . . . 19 UnifiedMemory-Management . . . . . . . . . . . . . . . . . . 19 Typ-Serialisierung . . . . . . . . . . . . . . . . . . . . . . . . . 21 Off-Heap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2.1.3 Shuffle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 HashShuffle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 SortShuffle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 UnsafeShuffle(orTungstenSort) . . . . . . . . . . . . . . . . . 22 2.2.1.4 IntegrierteBibliotheken. . . . . . . . . . . . . . . . . . . . . 22 SparkStreaming . . . . . . . . . . . . . . . . . . . . . . . . . . 22 SparkSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 SparkMLlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 SparkGraphX. . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2.2 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2.2.1 Komponenten-Stack . . . . . . . . . . . . . . . . . . . . . . . 23 2.2.2.2 Datenstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . 24 ResilientDistributedDatasets(RDD) . . . . . . . . . . . . . . . 24 SharedVariables(gemeinsameVariablen) . . . . . . . . . . . . . 25 2.2.2.3 Scheduling&Deployment . . . . . . . . . . . . . . . . . . . 26 SparkDriver . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 SparkExecutor . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 ClusterManager . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3 Anwendungsszenario 29 Szenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.1 UserStories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.1.1 Produktempfehlungen(Recommendations) . . . . . . . . . . . . . . . 29 Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.1.2 WeitereUser-Storys . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.1.2.1 SalesDashboard . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.1.2.2 Rating/ReviewToplist . . . . . . . . . . . . . . . . . . . . . . 30 3.2 EntwurfProduktempfehlungen(Recommendations) . . . . . . . . . . . . . . . 30 3.2.1 AblaufderUser-Story . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.2.2 Systemkontext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Stakeholder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.2.3 VerwendeteTechnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Empfehlungsalgorithmus(ALS) . . . . . . . . . . . . . . . . . . 33 v Inhaltsverzeichnis Streaming(Kafka) . . . . . . . . . . . . . . . . . . . . . . . . . 37 HistorischeDaten(HDFS) . . . . . . . . . . . . . . . . . . . . . 37 3.3 RealisierungProduktempfehlungen . . . . . . . . . . . . . . . . . . . . . . . . 37 3.3.1 Datenstrukturen/Datenquellen . . . . . . . . . . . . . . . . . . . . . . 37 3.3.1.1 HistorischeDaten . . . . . . . . . . . . . . . . . . . . . . . . 37 3.3.1.2 StreamDaten . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.3.2 UmsetzungmitFlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.3.2.1 ModelTraining . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.3.2.2 Streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.3.3 UmsetzungmitSpark. . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.3.3.1 ModelTraining . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.3.3.2 Streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.3.4 Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4 Diskussion 45 4.1 BeschreibungdesVorgehens . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.1.1 BetrachteteQualitätsfokusse. . . . . . . . . . . . . . . . . . . . . . . . 46 Skalierbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Erlernbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Bedienbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Stabilität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.2 Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.2.1 Skalierbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.2.1.1 Messumgebung . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.2.1.2 AblaufderMessung . . . . . . . . . . . . . . . . . . . . . . . 47 M1: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 M2: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 M3: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.2.1.3 Datenerhebung . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.2.1.4 Messergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.2.1.5 Interpretation . . . . . . . . . . . . . . . . . . . . . . . . . . 50 BeantwortungderFragen . . . . . . . . . . . . . . . . . . . . . 53 4.2.2 Erlernbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.2.2.1 AblaufderMessung . . . . . . . . . . . . . . . . . . . . . . . 55 M1: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 M2: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.2.2.2 Messergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.2.2.3 Interpretation . . . . . . . . . . . . . . . . . . . . . . . . . . 55 BeantwortungderFragen . . . . . . . . . . . . . . . . . . . . . 56 4.2.3 Bedienbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.2.3.1 AblaufderMessung . . . . . . . . . . . . . . . . . . . . . . . 56 M1: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 M2: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 vi Inhaltsverzeichnis M3: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 M4: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 M5: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.2.3.2 Messergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . 58 AufgetreteneProblememitFlink . . . . . . . . . . . . . . . . . 58 AufgetreteneProblememitSpark . . . . . . . . . . . . . . . . . 60 4.2.3.3 Interpretation . . . . . . . . . . . . . . . . . . . . . . . . . . 60 BeantwortungderFragen . . . . . . . . . . . . . . . . . . . . . 60 4.2.4 Stabilität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.2.4.1 AblaufderMessung . . . . . . . . . . . . . . . . . . . . . . . 63 M1: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 M2: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 M3: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 M4: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.2.4.2 Messergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.2.4.3 Interpretation . . . . . . . . . . . . . . . . . . . . . . . . . . 64 BeantwortungderFragen . . . . . . . . . . . . . . . . . . . . . 64 4.3 Auswertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5 Fazit 67 5.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Literaturverzeichnis 69 vii Tabellenverzeichnis 3.1 Hardwareausstattung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.2 VerwendeteSoftware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.1 SammelnvonrelevantenAsspektenzueinemMesszielineinemAbstraction SheetnachDaniloAssmannetal.[2002-12-23] . . . . . . . . . . . . . . . . . . 46 4.2 AbstractionSheetSkalierbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.3 AbgeleiteteFragenzumAbstractionSheetSkalierbarkeit . . . . . . . . . . . . 48 4.4 ALSModelTrainingParameter. . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.5 MessergebnisseSkalierbarkeit.AlleAngabeninSekunden. . . . . . . . . . . . 50 4.6 AbstractionSheetErlernbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.7 AbgeleiteteFragenzumAbstractionSheetErlernbarkeit . . . . . . . . . . . . 54 4.8 AufzählungzuerlernenderKonzepte . . . . . . . . . . . . . . . . . . . . . . . 55 4.9 MessergebnisseErlernbarkeit. . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.10 AbstractionSheetBedienbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.11 AbgeleiteteFragenzumAbstractionSheetBedienbarkeit . . . . . . . . . . . . 58 4.12 MessergebnisseBedienbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.13 AbstractionSheetStabilität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.14 AbgeleiteteFragenzumAbstractionSheetStabilität . . . . . . . . . . . . . . . 63 4.15 MessergebnisseStabilität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.16 ZusammenfassungderEvaluationsergebnisse . . . . . . . . . . . . . . . . . . 66 viii Abbildungsverzeichnis 2.1 TimeWindowsundCountWindowsFoundation[2016c] . . . . . . . . . . . . 4 2.2 FinksverschiedeneArtenvonZeitFoundation[2016c] . . . . . . . . . . . . . 5 2.3 In-order Stream von Events mit logischen timestemps und Watermarks The ApacheSoftwareFoundation[2016d] . . . . . . . . . . . . . . . . . . . . . . . 6 2.4 Out-of-order Stream von Events mit logischen timestemps und Watermarks TheApacheSoftwareFoundation[2016d] . . . . . . . . . . . . . . . . . . . . . 6 2.5 SpeicheraufteilungvonFlinkStephanEwenandHenrySaputra[2015-05-20] . 8 2.6 MehrereRecords,serialisiertinMemorySegments StephanEwenandHenry Saputra[2015-05-20] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.9 ZustandsautomateinerExecutionFoundation[2016d] . . . . . . . . . . . . . . 14 2.7 Architektur und Komponentenübersicht der Apache Flink Plattform Traub etal.[2015] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.8 JobGraphundExecutionGraphFoundation[2016d] . . . . . . . . . . . . . . . 16 2.10 AusführungvonSubtasksinTaskSlotsdesTaskManagerFoundation[2016a,c] 17 2.11 AusführungvonSubtasksinTaskSlotsdesTaskManagerFoundation[2016d] . 17 2.12 SpeicheraufteilungvonSparkAlexeyGrishchenkoand0x0FFF[2016-01-28] . 20 2.13 DerKomponenten-StackvonApacheSparkkar[2015] . . . . . . . . . . . . . 24 2.14 Beispielvonnarrowundwidedependencies.JedeBoxisteinRDD,mitParti- tionendargestelltalsblaueRechteckeZaharia[2016] . . . . . . . . . . . . . . 25 2.15 DieKomponenteneinerVerteiltenSpark-Applikationkar[2015] . . . . . . . . 27 3.1 AblaufderUser-Story"Produktempfehlungen“alsAktivitätsdiagramm . . . . 31 3.2 SystemkontextRecommendations . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3 MatrixFactorizationTillRohrmann[2015-03-18] . . . . . . . . . . . . . . . . . 34 3.4 DeploymentmitFlinkalsDatenverarbeitungskomponente . . . . . . . . . . . 43 3.5 DeploymentmitSparkalsDatenverarbeitungskomponente . . . . . . . . . . . 43 4.1 M1:MessergebnisdesALSModelTrainingsmitFlinkundSpark . . . . . . . . 50 4.2 M2:MessergebnisderALSPredictionmitStreamingvonFlinkundSpark . . . 51 4.3 M2.1: Messergebnis der ALS Prediction mit Streaming von Flink auf einem TaskManager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 ix Listings 3.1 FlinkCSV-Dateilesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.2 FlinkALSModellTraining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.3 FlinkTableAbfrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.4 FlinkAusgabeder50BestenEmpfehlungen. . . . . . . . . . . . . . . . . . . . 40 3.5 SparkCSV-Dateilesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.6 SparkALSModellTraining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.7 SparkSpeicherndesALSModells . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.8 SparkAusgabeder50BestenEmpfehlungen . . . . . . . . . . . . . . . . . . . 42 x

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.