Bachelorarbeit Marc Kaepke Graphen im Big Data Umfeld - Experimenteller Vergleich von Apache Flink und Apache Spark FakultätTechnikundInformatik FacultyofEngineeringandComputerScience StudiendepartmentInformatik DepartmentofComputerScience Marc Kaepke Graphen im Big Data Umfeld - Experimenteller Vergleich von Apache Flink und Apache Spark BachelorarbeiteingereichtimRahmenderBachelorprüfung imStudiengangBachelorofScienceAngewandteInformatik amDepartmentInformatik derFakultätTechnikundInformatik derHochschulefürAngewandteWissenschaftenHamburg BetreuenderPrüfer:Prof.Dr.OlafZukunft Zweitgutachter:Prof.Dr.UlrikeSteffens Eingereichtam:11.September2017 MarcKaepke ThemaderArbeit GraphenimBigDataUmfeld-ExperimentellerVergleichvonApacheFlinkundApacheSpark Stichworte ApacheFlink,ApacheSpark,Graphen,verteilteGraphverarbeitung,Gelly,GraphX,BigData, Experimente,Semi-Clustering,PageRank,Implementierung Kurzzusammenfassung Grapheneignensichideal,umRelationenzwischenObjektenabzubilden.Allerdingsbenötigen dieBigGraphsspezielleSysteme,umdiesezuverarbeitenundzuanalysieren.DieOpenSource FrameworksApacheFlinkundApacheSparkstellenBibliothekenfürverteilteGraphverar- beitungenbereit.ImRahmendieserThesissollverglichenwerden,welchesFrameworksich besserfürdiesenZweckeignet.MehrereExperimentezeigen,dassGelly(Flink)leichteVorteile gegenüberGraph(Spark)bietetunddassdieSystemeunterschiedlichskalieren. MarcKaepke Titleofthepaper GraphsinBigData-experimentalcomparisonofApacheFlinkandApacheSpark Keywords ApacheFlink,ApacheSpark,graphs,distributedgraphprocessing,Gelly,GraphX,BigData, experiments,Semi-Clustering,PageRank,implementation Abstract Graphs are ideal for mapping relations between objects. However, the Big Graphs require specialsystemstoprocessandanalyzethem. TheopensourceframeworksApacheFlinkand Apache Spark provide libraries for distributed graph processing. Within the framework of thisbachelor’sthesisitisintendedtocomparewhichframeworkismoreconvenientforthis purpose. SeveralexperimentsshowthatGelly(ApacheFlink)offersslightadvantagesover GraphX(ApacheSpark)andthatthesystemsscaledifferently. Inhaltsverzeichnis 1 Einleitung 1 2 ApacheSpark 3 2.1 Ökosystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.1 BibliothekenundAPIs . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.2 Cluster-ManagerundDatenquellen . . . . . . . . . . . . . . . . . . . . 5 2.2 ResilientDistributedDataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 GraphX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3.1 Graph-Partitionierung . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3.2 PregelAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3 ApacheFlink 10 3.1 Ökosystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2 StreamingDataflowModell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2.1 DataflowGraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.2.2 Spezialfall:DataSetAPI . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3 BatchIterationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4 Gelly 18 4.1 RepräsentationvonGraphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.2 Modifikation,TransformationundNachbarschaft . . . . . . . . . . . . . . . . 19 4.3 VerteilteGraphverarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.3.1 vertex-centric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.3.2 scatter-gather . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.3.3 gather-sum-apply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.3.4 GellyspezifischeModell-Konfiguration . . . . . . . . . . . . . . . . . . 25 4.3.5 GegenüberstellungderModelle . . . . . . . . . . . . . . . . . . . . . . 27 4.4 BibliothekundAlgorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5 ErweiterungderGellyBibliothek 30 5.1 AllgemeineszumSemi-Clustering . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.2 Konzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.3 UmsetzunginGelly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.3.1 Vorverarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.3.2 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 iv Inhaltsverzeichnis 6 Experimente 36 6.1 AufbauderExperimente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.1.1 Hypothesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.1.2 Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.1.3 Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.1.4 Algorithmen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6.2 ExperimentelleDurchführung . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.2.1 Hypothese1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6.2.2 Hypothese2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 6.2.3 Hypothese3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.2.4 Hypothese4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.2.5 Hypothese5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 6.3 KorrektheitderExperimente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 6.4 AuswertungderExperimente . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7 ZusammenfassungundAusblick 55 7.1 Flinkvs.Spark-Gegenüberstellung . . . . . . . . . . . . . . . . . . . . . . . . 55 7.1.1 Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 7.1.2 Speichermanagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 7.1.3 Graph-Partitionierung . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 7.1.4 GraphProgrammiermodelle . . . . . . . . . . . . . . . . . . . . . . . . 57 7.2 FazitundAusblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Literaturverzeichnis 59 v Abbildungsverzeichnis 2.1 ApacheSparkKomponentenübersicht . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 edge-cutvs.vertex-cut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 GraphX-tabellarischeRepräsentationvomvertex-cut . . . . . . . . . . . . . . 8 2.4 BSP-AusführungmitsynchronisiertemSuperstep . . . . . . . . . . . . . . . . 9 3.1 ApacheFlinkKomponetenübersicht . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 ApacheFlinkArchitektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3 StreamingDataflowProgrammunterFlink . . . . . . . . . . . . . . . . . . . . 14 3.4 SchemenhafteDarstellungeinesDirectedAcyclicGraph . . . . . . . . . . . . 15 3.5 Iterations-OperatoreninApacheFlink . . . . . . . . . . . . . . . . . . . . . . 17 4.1 Beispieleinervertex-centricIteration . . . . . . . . . . . . . . . . . . . . . . . 22 4.2 Beispieleinerscatter-gatherIteration . . . . . . . . . . . . . . . . . . . . . . . 23 4.3 Beispieleinergather-sum-applyIteration . . . . . . . . . . . . . . . . . . . . . 24 5.1 BeispielergebnisvomSemi-Clustering . . . . . . . . . . . . . . . . . . . . . . . 31 5.2 VorbereitungsschrittebeimSemi-Clustering . . . . . . . . . . . . . . . . . . . 34 5.3 AusschnittvomSemi-ClusteringKlassendiagramm . . . . . . . . . . . . . . . 35 6.1 Hypothese1-Ergebnisvisualisierung . . . . . . . . . . . . . . . . . . . . . . . 42 6.2 Hypothese2-ErgebnisvisualisierungvonPageRank(10xGraphskalierung) . . 45 6.3 Hypothese2-ErgebnisvisualisierungvonPageRank(2xGraphskalierung) . . 46 6.4 Hypothese3-ErgebnisvisualisierungvomPageRank . . . . . . . . . . . . . . 47 6.5 Hypothese3-ErgebnisvisualisierungvomSemi-Clustering . . . . . . . . . . . 48 6.6 Hypothese4-VisualisierungdesSpeicherverbrauchs . . . . . . . . . . . . . . 50 6.7 Hypothese5-Ergebnisvisualisierung . . . . . . . . . . . . . . . . . . . . . . . 51 7.1 FlinkundSparkimKontext. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 7.2 SchemaderIterationenunterApacheFlinkundApacheSpark . . . . . . . . . 56 vi Listings 4.1 Gelly-Knotenerzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.2 Gelly-Kanteerzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.3 Gelly-AusschnitteinerGraphanalyse. . . . . . . . . . . . . . . . . . . . . . . 28 vii Tabellenverzeichnis 4.1 GraphXundGellyimÜberblick . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.2 GellyKonfigurationsparameterderGraphProgrammiermodelle . . . . . . . . 25 4.3 Vergleichvonvertex-centric,scatter-gatherundGSAModell . . . . . . . . . . 27 6.1 AngepassteKonfigurationsparameterfürApacheFlinkundApacheSpark . . 41 6.2 Hypothese1-Laufzeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 6.3 Hypothese2-Laufzeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.4 LaufzeitverbesserungbeiunterschiedlichenDatentypen . . . . . . . . . . . . . 53 viii 1 Einleitung Graphen,auchNetzwerkegenannt,gewinnenfortlaufendanWichtigkeitimBigDataUmfeld und sind allgegenwärtig. Jedes soziale Netzwerk, wie Facebook oder Instagram, weist um- fangreicheGraphstrukturenauf.Ime-CommerceBereichlassensichKaufempfehlungenauf BasisvonGraphenberechnen.EbensosindGrapheninderOffline-WeltbeimAnalysierenoder KoordinierenvonEnergie-undTransportnetzwerkenvorzufinden.AberauchinderMedizin zurErforschungvonKrebstumorenwirdaufGraphstrukturenzurückgegriffen,umTeilnetze miteinererheblichenAnzahlanmutiertenPatientenaufzuspüren[vgl.Ste17]. GraphenrepräsentierendabeiInformationenauseinerspezifischenDomäne.DieKnoten spiegelnbeliebigeObjekte,wiePersonenoderFlughäfen,widerunddieKantensymbolisieren RelationenzwischenObjekten,wieFreundschaftenoderFlugverbindungen.DurchAttribute andenKantenlassensichzusätzlicheAngabenzurRelationfesthalten,wiebeispielsweiseder BeginneinerFreundschaftoderdieDauerderFlugreise. UmgroßeGraphenmöglichsteffizientverarbeitenundanschließendanalysierenzukönnen, sindCluster-Systemenotwendig.ApacheFlinkundApacheSparksindmoderneOpen-Source Frameworks,diekonzipiertwurden,umgroßeundverteilteDatenmengenzuverarbeiten.Die SchwerpunktebeiderFrameworksliegenimklassischenBatch-Processingunddemneueren Stream-Processing.ZusätzlichbeinhaltenbeideSystemespezielleBibliothekenundAPIszur VerarbeitungundAnalysevonGraphen. Ziel dieser Thesis ist, festzustellen, inwieweit sich Apache Flink besser oder schlechter zur Graphverarbeitung eignet als Apache Spark. Die Bewertungsgrundlage hierfür bilden Experimente,indenenGraph-AlgorithmenmitunterschiedlichenDatenausgeführtwerden. In den Experimenten wird die Laufzeit der Algorithmen ermittelt, die diese benötigen, um unterschiedlicheGraphausdehnungenzuverarbeiten.ZusätzlichwerdendieLaufzeitenbei einerhorizontalenSkalierungdesClustersgemessen. In den beiden nachfolgenden Kapiteln werden zunächst die Frameworks Apache Spark (2)undApacheFlink(3)vorgestelltundaufeinigeBesonderheiteneingegangen.Daszweite KapitelbehandeltzusätzlichdieGraphBibliothekvonApacheSpark. 1 1 Einleitung Im 4. Kapitel liegt der Fokus auf Gelly und dessen Operatoren zur Graphverarbeitung. Ein Abschnitt befasst sich unter anderem mit den Funktionsweisen der unterschiedlichen ProgrammiermodellefürGraphen. AneinempraktischenBeispielwirddieGellyBibliothekim5.KapitelumeinenAlgorithmus erweitert.DerimplementierteSemi-ClusteringAlgorithmusdientderVergleichbarkeitbeider Frameworks.DasKapitelbeschreibtdasKonzeptdesAlgorithmusundwiediesermitHilfe vonApacheFlinkumgesetztwird. Im 6. Kapitel finden die Experimente statt. Hierfür werden zunächst der Aufbau und die Durchführungbeschrieben,umanschließendeinResümeederErgebnissezuziehen.DieExpe- rimenteorientierensichdabeianaufgestelltenHypothesen,dieaufGrundlagedervorherigen Theoriebasisdefiniertsind. DasletzteKapitel(7)bieteteinenkompaktenÜberblickderbeidenFrameworksbezüglich einigerAspektezurGraphverarbeitung.AufBasisderErgebnisseausdenExperimentenerfolgt zumSchlusseinFazit,außerdemwirdeseinenAusblickfürweiterführendeExperimentein diesemBereichgeben. 2
Description: