Bachelorarbeit Tim Horgas Performance-Analyse von Apache Spark und Apache Hadoop FakultätTechnikundInformatik FacultyofEngineeringandComputerScience StudiendepartmentInformatik DepartmentofComputerScience Tim Horgas Performance-Analyse von Apache Spark und Apache Hadoop BachelorarbeiteingereichtimRahmenderBachelorprüfung imStudiengangBachelorofScienceWirtschaftsinformatik amDepartmentInformatik derFakultätTechnikundInformatik derHochschulefürAngewandteWissenschaftenHamburg BetreuenderPrüfer:Prof.Dr.Zukunft Zweitgutachter:Prof.Dr.Steffens Eingereichtam:24.09.15 TimHorgas ThemaderArbeit Performance-AnalysevonApacheSparkundApacheHadoop Stichworte ApacheSpark,ApacheHadoop,BigData,Benchmarking,Performance-Analyse Kurzzusammenfassung DieseBachelorarbeitbeschäftigtsichimKontextBigDatamitderAnalysederPerformance vonApacheSparkimVergleichzuApacheHadoop.DabeiwerdenApacheHadoopundApache SparkinFormeinesBenchmarksverglichenundanschließenddurcheineNutzwertanalyse bewertet. TimHorgas Titleofthepaper Performance-AnalysisofApacheSparkandApacheHadoop Keywords ApacheSpark,ApacheHadoop,BigData,Benchmarking,Performance-Analysis Abstract ThisBachelor-ThesisdescribesaPerformance-AnalysesoftheframeworksApacheSparkand ApacheHadoopincontextofBigData. ThePerformance-Analysescontainsabenchmarkof ApacheHadoopandApacheSparkwithanevaluationachievedasvaluebenefitanalysisof bothframeworks. Inhaltsverzeichnis 1 Einleitung 1 1.1 BigDataalsGrundlagefürneueTechnologien . . . . . . . . . . . . . . . . . . 1 1.2 TechnologienzurUmsetzungvonBigDataAnalysen . . . . . . . . . . . . . . 2 1.3 ApacheHadoopundApacheSpark . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 MapReduce 5 2.1 VerwendungundAufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.1 Map-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.2 Reduce-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 BewertungdesMapReduce-Verfahrens . . . . . . . . . . . . . . . . . . . . . . 7 2.2.1 Vorteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.2 Nachteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3 HDFS 9 3.1 AnwendungsmöglichkeitenundZielevonHDFS . . . . . . . . . . . . . . . . . 9 3.2 Master-Slave-Replikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.3 AufbauvonHDFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3.2 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.4 BewertungvonHadoopHDFS . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.4.1 Vorteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.4.2 Nachteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4 ApacheHadoop 17 4.1 AnwendungsmöglichkeitenundZielevonApacheHadoop . . . . . . . . . . . 17 4.2 AufbauvonHadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.2.1 ArchitekturvonYARN . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.2.2 HadoopMapReduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.2.3 ApacheHive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.3 BewertungvonApacheHadoop . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.3.1 Vorteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.3.2 Nachteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5 ApacheSpark 25 5.1 AnwendungsmöglichkeitenundZielevonApacheSpark . . . . . . . . . . . . 25 iv Inhaltsverzeichnis 5.2 AufbauvonApacheSpark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.2.1 Programmiermodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.2.2 ArchitektureinesSpark-Clusters . . . . . . . . . . . . . . . . . . . . . 30 5.2.3 SparkSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.3 BewertungvonApacheSpark . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.3.1 Vorteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.3.2 Nachteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6 Performance-Test 34 6.1 AufbaudesBenchmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.1.1 Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.1.2 Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.1.3 Hypothesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.1.4 Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.1.5 AusführungsmodelldesBenchmarks . . . . . . . . . . . . . . . . . . . 37 6.2 Benchmark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.2.1 Hypothese1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.2.2 Hypothese2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6.2.3 Hypothese3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.2.4 Hypothese4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.2.5 Hypothese5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.3 KorrektheitdesBenchmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.4 ErgebnissedesPerformance-Tests . . . . . . . . . . . . . . . . . . . . . . . . . 53 7 Auswertung 56 7.1 NutzwertanalysedesPerformance-Tests . . . . . . . . . . . . . . . . . . . . . . 56 7.1.1 Benennung des Entscheidungsproblemsund Auswahl derEntschei- dungsalternativen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 7.1.2 SammlungderEntscheidungskriterien . . . . . . . . . . . . . . . . . . 56 7.1.3 GewichtungderEntscheidungskriterien . . . . . . . . . . . . . . . . . 58 7.1.4 BewertungderEntscheidungskriterien . . . . . . . . . . . . . . . . . . 59 7.1.5 Nutzwertberechnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 7.2 AnalysederpraktischenVor-undNachteilevonApacheHadoopundApache Spark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 8 ZusammenfassungundAusblick 65 8.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 8.2 AnmerkungenundAnregungenfürweitereForschung . . . . . . . . . . . . . 66 8.3 ChancenvonApacheSparkimBereichBigData . . . . . . . . . . . . . . . . . 66 AnhangA ClusterMonitoring 68 A.1 Hypothese1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 A.2 Hypothese2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 v Inhaltsverzeichnis AnhangB Beispieldaten 73 Literaturverzeichnis 81 vi Tabellenverzeichnis 5.1 InterfaceeinesRDDsinSpark . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.1 ErgebnissezuHypothese1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.2 ErgebnissezuHypothese2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 6.3 ErgebnissezuHypothese3vonHadoop . . . . . . . . . . . . . . . . . . . . . . 45 6.4 ErgebnissezuHypothese3vonSpark . . . . . . . . . . . . . . . . . . . . . . . 45 6.5 ErgebnissezuHypothese4vonApacheHadoop . . . . . . . . . . . . . . . . . 47 6.6 ErgebnissezuHypothese4vonApacheSpark . . . . . . . . . . . . . . . . . . 50 6.7 ErgebnissezuHypothese5vonApacheHadoop . . . . . . . . . . . . . . . . . 51 6.8 ErgebnissezuHypothese5vonApacheSpark . . . . . . . . . . . . . . . . . . 51 7.1 AuflistungderKriteriengruppenmitBewertungskriterien . . . . . . . . . . . . 57 7.2 BerechnungderKriteriengewichtemitHilfevonKriteriengruppen . . . . . . 59 7.3 SkalafürdieBerechnungderBewertungen . . . . . . . . . . . . . . . . . . . . 60 7.4 BerechnungderNutzwertanalyse . . . . . . . . . . . . . . . . . . . . . . . . . 61 7.5 NutzwertanalyseGesamtergebnis . . . . . . . . . . . . . . . . . . . . . . . . . 63 vii Abbildungsverzeichnis 3.1 BeispielhaftesHadoopClustermitZusammensetzungausmehrerenracks . . 11 3.2 KomponenteneinesNameNodes . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3 KomponenteneinesDataNodes . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.4 BeispielhaftesHadoopClustermitSchreibvorganganderDateifile1. . . . . . 15 4.1 ArchitekturvonYARN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.2 Slave-NodeineinemYARNCluster . . . . . . . . . . . . . . . . . . . . . . . . 20 4.3 WichtigeKomponentendesRessourceManagers . . . . . . . . . . . . . . . . . 20 4.4 AusführungeinerMapReduce-AnwendungmitYARN . . . . . . . . . . . . . . 22 5.1 DependenciesinSpark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.2 Master/Slave-ArchitektureinesSparkClusters . . . . . . . . . . . . . . . . . . 31 6.1 ErgebnissederHypothese1:Diagramm . . . . . . . . . . . . . . . . . . . . . . 39 6.2 AuslastungdesHauptspeichersvonApacheHadoopundApacheSparkwäh- rendderOperationWordCount . . . . . . . . . . . . . . . . . . . . . . . . . . 40 6.3 AuslastungdesHauptspeichersvonApacheHadoopundApacheSparkwäh- rendderOperationURLCount . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.4 DurchschnittlicheAnzahllaufenderProzessevonApacheHadoopundApache SparkwährendderOperationURLCount . . . . . . . . . . . . . . . . . . . . . 41 6.5 ErgebnissederHypothese2:Diagramm . . . . . . . . . . . . . . . . . . . . . . 42 6.6 AuslastungdesHauptspeichersvonApacheHadoopundApacheSparkwäh- rendderOperationJoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 6.7 ErgebnissederHypothese3vonApacheHadoop:Diagramm . . . . . . . . . . 44 6.8 ErgebnissederHypothese3vonApacheSpark:Diagramm . . . . . . . . . . . 46 6.9 VergleichderNetzwerkauslastungvonApacheSparkwährendderOperation WordCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.10 ErgebnissederHypothese4vonApacheHadoop:Diagramm . . . . . . . . . . 48 6.11 ErgebnissederHypothese4vonApacheSpark:Diagramm . . . . . . . . . . . 49 6.12 VergleichderNetzwerkauslastungvonApacheSparkwährendderOperation WordCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 6.13 VergleichderAusführungszeitenvonApacheHadoopundApacheSparkbei SkalierungderNodesmitdenOperationenWordCount,URLCountundJoin . 52 6.14 VergleichdertatsächlichenSkalierungmitderangenommenenlinearenSka- lierungbeiderOperationWordCount . . . . . . . . . . . . . . . . . . . . . . . 53 viii Abbildungsverzeichnis A.1 DurchschnittlicheAnzahllaufenderProzessevonApacheHadoopundApache SparkwährendderOperationSumYear . . . . . . . . . . . . . . . . . . . . . . 68 A.2 AuslastungdesHauptspeichersvonApacheHadoopundApacheSparkwäh- rendderOperationSumYear . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 A.3 DurchschnittlicheAuslastungderCPUsvonApacheHadoopundApacheSpark währendderOperationSumYear . . . . . . . . . . . . . . . . . . . . . . . . . . 69 A.4 DurchschnittlicheAuslastungdesNetzwerksvonApacheHadoopundApache SparkwährendderOperationSumYear . . . . . . . . . . . . . . . . . . . . . . 69 A.5 DurchschnittlicheAnzahllaufenderProzessevonApacheHadoopundApache SparkwährendderOperationJoin . . . . . . . . . . . . . . . . . . . . . . . . . 70 A.6 DurchschnittlicheCPU-AuslastungvonApacheHadoopundApacheSpark währendderOperationJoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 A.7 DurchschnittlicheAuslastungdesNetzwerksvonApacheHadoopundApache SparkwährendderOperationJoin . . . . . . . . . . . . . . . . . . . . . . . . . 70 A.8 DurchschnittlicheAnzahllaufenderProzessevonApacheHadoopundApache SparkwährendderOperationSumYear . . . . . . . . . . . . . . . . . . . . . . 71 A.9 AuslastungdesHauptspeichersvonApacheHadoopundApacheSparkwäh- rendderOperationSumYear . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 A.10 DurchschnittlicheCPU-AuslastungvonApacheHadoopundApacheSpark währendderOperationSumYear . . . . . . . . . . . . . . . . . . . . . . . . . . 71 A.11 DurchschnittlicheAuslastungdesNetzwerksvonApacheHadoopundApache SparkwährendderOperationSumYear . . . . . . . . . . . . . . . . . . . . . . 72 B.1 BeispielfürN-Gramme,dieimPerformance-Testbenutztwurden . . . . . . . 73 ix Code 5.1 Sparkshell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.2 Lineagedesweblog-RDDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.3 LineagedesurlCounts-RDDs . . . . . . . . . . . . . . . . . . . . . . . . . . 29 x
Description: