Table Of ContentBachelorarbeit
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:die Big Graphs spezielle Systeme, um diese zu verarbeiten und zu analysieren. Die Open Source gegenüber Graph (Spark) bietet und dass die Systeme unterschiedlich skalieren. Marc Kaepke. Title of the paper Graphs are ideal for mapping relations between objects. However, the Big Graphs