, Big Data: Apache Hadoop Grundlagen Seminarunterlage Version: 1.02 Copyright ORDIX AG Version 1.02 vom 8. September 2016 Dieses Dokument wird durch die ORDIX AG veröffentlicht. Copyright ORDIX AG. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen oder eingetragene Warenzeichen der jeweiligen Firmen und beziehen sich auf Eintragungen in den USA oder USA-Warenzeichen. Weitere Logos und Produkt- oder Handelsnamen sind eingetragene Warenzeichen oder Warenzeichen der jeweiligen Unternehmen. Kein Teil dieser Dokumentation darf ohne vorherige schriftliche Genehmigung der ORDIX AG weitergegeben oder benutzt werden. Adressen der ORDIX AG Die ORDIX AG besitzt folgende Geschäftsstellen ORDIX AG Karl-Schurz-Straße 19a D-33100 Paderborn Tel.: (+49) 0 52 51 / 10 63 - 0 Fax.: (+49) 01 80 / 1 67 34 90 ORDIX AG Kreuzberger Ring 13 D-65205 Wiesbaden Tel.: (+49) 06 11 / 7 78 40 – 00 Fax.: (+49) 01 80 / 1 67 34 90 ORDIX AG An der alten Ziegelei 5 D-48157 Münster Tel.: (+49) 02 51 / 9 24 35 – 00 Fax.: (+49) 01 80 / 1 67 34 90 ORDIX AG Wikingerstraße 18-20 D-51107 Köln Tel.: (+49) 02 21 / 8 70 61 – 0 Fax.: (+49) 01 80 / 1 67 34 90 ORDIX AG Welser Straße 9 D-86368 Gersthofen Tel.: (+49) 08 21 / 507 492 – 0 Fax.: (+49) 01 80 / 1 67 34 90 Internet: http://www.ordix.de Email: [email protected] Seite 2 Big Data: Apache Hadoop Grundlagen Version: 1.02 Copyright ORDIX AG Inhaltsverzeichnis Inhaltsverzeichnis 1 Agenda ......................................................................................................................................... 8 1.1 2 Wie big ist Big Data? ................................................................................................................. 10 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 3 Agenda ................................................................................................................................ 9 Agenda .............................................................................................................................. 11 Wie "big" ist Big Data? ...................................................................................................... 12 3 V Modell ......................................................................................................................... 13 Welche technischen Probleme sollen gelöst werden? ..................................................... 14 Welche fachlichen Probleme sollen gelöst werden? ........................................................ 15 Verteilte Datenhaltung im Cluster ..................................................................................... 16 Verteilte Berechnung im Cluster ....................................................................................... 17 Typische Probleme in verteilten Systemen ....................................................................... 18 Verfügbarkeit im Cluster .................................................................................................... 19 Horizontale Skalierung mit Commodity Hardware ............................................................ 20 PC Cluster ......................................................................................................................... 21 Yahoo's Hadoop Cluster (2007) ........................................................................................ 22 Zusammenfassung ............................................................................................................ 23 Hadoop Überblick ...................................................................................................................... 24 3.1 3.2 Agenda .............................................................................................................................. 25 Hadoop .............................................................................................................................. 26 3.2.1 Hadoop Historie .................................................................................................... 27 3.2.2 Hadoop Design Prinzipien .................................................................................... 28 3.2.3 "Data Locality Optimization" ................................................................................. 29 3.2.4 Hadoop Kernkomponenten .................................................................................. 30 3.3 HDFS - Hadoop Distributed File System .......................................................................... 31 3.3.1 HDFS Schreiben .................................................................................................. 32 3.3.2 HDFS Lesen ......................................................................................................... 33 3.4 Hadoop I/O ........................................................................................................................ 34 3.5 YARN - Yet Another Resource Negotiator ........................................................................ 35 3.6 MapReduce Überblick ....................................................................................................... 36 3.6.1 MapReduce Phasen ............................................................................................. 37 3.6.2 MapReduce Beispiel ............................................................................................ 38 3.6.3 MapReduce im Detail ........................................................................................... 39 3.7 Unterschiede zwischen Hadoop 1 und Hadoop 2 ............................................................. 40 3.8 Vergleich RDBMS mit Hadoop .......................................................................................... 41 3.9 Transaktionen und andere relationale Konzepte .............................................................. 42 3.10 Das Apache Hadoop Ecosystem ...................................................................................... 43 3.11 Hadoop – Stärken und Schwächen .................................................................................. 44 4 Hadoop Distributed File System .............................................................................................. 45 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 Agenda .............................................................................................................................. 46 HDFS – Hadoop Distributed File System .......................................................................... 47 HDFS Dienste ................................................................................................................... 48 NameNode ........................................................................................................................ 49 Secondary NameNode ...................................................................................................... 50 DataNode .......................................................................................................................... 51 HDFS Schreiben ............................................................................................................... 52 HDFS Lesen ...................................................................................................................... 54 Einige Besonderheiten vom HDFS ................................................................................... 56 Arbeiten mit dem HDFS .................................................................................................... 57 File System Shell .............................................................................................................. 58 4.11.1 File System Shell - Dateien kopieren ................................................................... 59 4.11.2 File System Shell – Verzeichnismanagement ...................................................... 60 4.11.3 File System Shell - Inhalt von Dateien anzeigen ................................................. 61 4.12 HDFS Kommandos ........................................................................................................... 62 4.13 Snapshots ......................................................................................................................... 63 4.14 File System APIs ............................................................................................................... 64 Version: 1.02 Copyright ORDIX AG Seite 3 Big Data: Apache Hadoop Grundlagen Inhaltsverzeichnis 4.15 4.16 4.17 4.18 5 Java API – FileSystem ...................................................................................................... 65 Java API - Daten schreiben .............................................................................................. 66 Java API - Daten lesen ..................................................................................................... 67 Java API - Datei löschen ................................................................................................... 68 MapReduce ................................................................................................................................ 69 Word Count – „Hello World“ für Hadoop ........................................................................... 70 Warum sollten wir überhaupt Wörter zählen? ................................................................... 71 MapReduce Überblick ....................................................................................................... 72 5.3.1 MapReduce .......................................................................................................... 73 5.3.2 MapReduce im Detail ........................................................................................... 74 5.4 Word Count – InputFormat + InputSplit ............................................................................ 75 5.4.1 InputFormat .......................................................................................................... 76 5.4.2 InputSplit............................................................................................................... 77 5.5 Word Count – RecordReader............................................................................................ 78 5.5.1 RecordReader ...................................................................................................... 79 5.6 Word Count – Mapper ....................................................................................................... 80 5.6.1 Mapper ................................................................................................................. 81 5.7 Word Count – Shuffle & Sort ............................................................................................. 82 5.8 Shuffle & Sort .................................................................................................................... 83 5.9 Word Count – Reducer ..................................................................................................... 84 5.9.1 Reducer ................................................................................................................ 85 5.10 Word Count – OutputFormat ............................................................................................. 86 5.10.1 OutputFormat ....................................................................................................... 87 5.11 Word Count – Übersicht .................................................................................................... 88 5.1 5.2 5.3 6 Der Hadoop Zoo......................................................................................................................... 89 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 7 Agenda .............................................................................................................................. 90 Der Hadoop Zoo ................................................................................................................ 91 Abfragesprachen ............................................................................................................... 92 Was ist Apache Hive? ....................................................................................................... 93 6.4.1 Hive Architektur Überblick .................................................................................... 94 6.4.2 HiveQL Beispiel .................................................................................................... 95 6.4.3 HiveQL und Beeline Befehle ................................................................................ 96 Pig ..................................................................................................................................... 97 6.5.1 Pig Architektur Überblick ...................................................................................... 98 6.5.2 Pig Latin Beispiel .................................................................................................. 99 6.5.3 Pig Latin Befehle ................................................................................................ 100 Hive vs. Pig ..................................................................................................................... 101 Sqoop .............................................................................................................................. 102 6.7.1 Sqoop 1 Architektur Überblick ............................................................................ 103 6.7.2 Sqoop Beispiele ................................................................................................. 104 6.7.3 Sqoop Kommandos ............................................................................................ 105 ZooKeeper....................................................................................................................... 106 6.8.1 ZooKeeper Architektur Überblick ....................................................................... 107 6.8.2 ZooKeeper Beispiel ............................................................................................ 108 6.8.3 ZooKeeper Kommandos .................................................................................... 109 Hive ........................................................................................................................................... 110 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 7.10 7.11 Agenda ............................................................................................................................ 111 Was ist Apache Hive? ..................................................................................................... 112 Hive Architektur im Detail ................................................................................................ 113 Hive Server Dienste ........................................................................................................ 114 Hive Clients und Interfaces ............................................................................................. 115 HiveServer2 und Metastore Installation .......................................................................... 116 Beeline Client .................................................................................................................. 117 Beeline Kommandozeilen Optionen ................................................................................ 118 Beeline Kommandos ....................................................................................................... 119 Beeline Hive Kommandos ............................................................................................... 120 JDBC Interface ................................................................................................................ 121 Seite 4 Big Data: Apache Hadoop Grundlagen Version: 1.02 Copyright ORDIX AG Inhaltsverzeichnis 7.12 7.13 7.14 7.15 7.16 7.17 7.18 7.19 7.20 7.21 7.22 7.23 7.24 7.25 7.26 7.27 7.28 7.29 7.30 7.31 7.32 7.33 7.34 8 Dateiformate für Hive und Hadoop ........................................................................................ 145 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9 Hive Datenbanken und Tabellen ..................................................................................... 122 Tabellen anlegen und verwalten ..................................................................................... 123 Location ........................................................................................................................... 124 Managed Tables und External Tables ............................................................................ 125 Daten Laden .................................................................................................................... 126 Hive Datentypen .............................................................................................................. 127 Numerische Datentypen .................................................................................................. 128 String Datentypen ........................................................................................................... 129 Datum / Zeit Datentypen ................................................................................................. 130 Weitere primitive Datentypen .......................................................................................... 131 Container Datentypen ..................................................................................................... 132 Partitionen ....................................................................................................................... 133 Hive Partitionierung ......................................................................................................... 134 Statische Partitionierung ................................................................................................. 135 Dynamische Partitionierung ............................................................................................ 136 Funktionen....................................................................................................................... 137 Beispiele für Standard Hive Funktionen .......................................................................... 138 UDFs und Ressourcen .................................................................................................... 139 Java UDF Beispiel ........................................................................................................... 140 Java UDF verwenden ...................................................................................................... 141 Weitere Hive Features im Überblick................................................................................ 142 Weitere HiveQL Features im Überblick ........................................................................... 143 Hive Execution Engines im Überblick ............................................................................. 144 Agenda ............................................................................................................................ 146 Klassifizierung der Dateiformate .................................................................................... 147 Datei und Datensatz Formate in Hive ............................................................................. 148 Text Dateien (Delimiter Seperated Files) ........................................................................ 149 SequenceFile .................................................................................................................. 150 8.5.1 SequenceFile anlegen ........................................................................................ 151 Avro Dateien.................................................................................................................... 152 8.6.1 Avro Schema ...................................................................................................... 153 8.6.2 Avro Datei anlegen ............................................................................................. 154 Parquet Dateien .............................................................................................................. 155 8.7.1 Interne Struktur einer Parquet Datei .................................................................. 156 8.7.2 Parquet Schema ................................................................................................. 157 8.7.3 Parquet Datei anlegen ........................................................................................ 158 ORC Dateien ................................................................................................................... 159 8.8.1 Interne Struktur einer ORC Datei ....................................................................... 160 8.8.2 ORC Datei anlegen ............................................................................................ 161 Übersicht Dateiformate ................................................................................................... 162 Einführung in Apache Spark .................................................................................................. 163 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 9.10 9.11 9.12 9.13 9.14 9.15 9.16 Agenda ............................................................................................................................ 164 Apache Spark Überblick .................................................................................................. 165 Historie von Apache Spark .............................................................................................. 166 Spark vs. MapReduce – Kein „Entweder oder“ ............................................................... 167 MapReduce I/O ............................................................................................................... 168 Spark I/O ......................................................................................................................... 169 Spark vs. MapReduce – Zusammenfassung .................................................................. 170 Spark – Architektur .......................................................................................................... 171 Spark – Local oder im Cluster ......................................................................................... 172 Spark auf YARN – Deploy Mode..................................................................................... 173 Spark auf YARN – Job Submission Client Mode ............................................................ 174 Spark auf YARN – Job Submission Cluster Mode .......................................................... 176 Spark – Interaktiv vs. Batch-Processing ......................................................................... 177 Ausführen von Skripten über die Spark-Shell ................................................................. 178 RDD Grundlagen ............................................................................................................. 179 MaxTemperature mit Spark ............................................................................................. 180 Version: 1.02 Copyright ORDIX AG Seite 5 Big Data: Apache Hadoop Grundlagen Inhaltsverzeichnis 9.17 9.18 9.19 9.20 9.21 9.22 9.23 9.24 9.25 9.26 9.27 9.28 9.29 9.30 9.31 9.32 9.33 9.34 10 Fazit .......................................................................................................................................... 199 10.1 10.2 10.3 10.4 10.5 10.6 10.7 11 Erstellen von RDDs ......................................................................................................... 181 Operationen auf RDDs .................................................................................................... 182 Ausnutzung anonymer Funktionen in Scala ................................................................... 183 Operationen in Spark ...................................................................................................... 184 Transformations und Actions – Beispiele ........................................................................ 185 Umgang mit Ergebnissen ................................................................................................ 186 Zwischenspeichern (Caching) von RDDs ....................................................................... 187 Storage Level im Überblick ............................................................................................. 188 Pair RDDs ....................................................................................................................... 189 Transformations auf Pair RDDs ...................................................................................... 190 Transformations auf Keys oder Values ........................................................................... 191 Actions auf Pair RDDs .................................................................................................... 192 Beispiel: WordCount mit Spark ....................................................................................... 193 Data Partitioning .............................................................................................................. 194 Beispiel: Join auf Wetterdaten ........................................................................................ 195 Shared Variables ............................................................................................................. 196 Accumulators................................................................................................................... 197 Broadcast Variables ........................................................................................................ 198 Fazit ................................................................................................................................. 200 Nächste Schritte? ............................................................................................................ 201 ORDIX News ................................................................................................................... 202 Literatur - Hadoop ........................................................................................................... 203 Literatur - Hadoop Zoo .................................................................................................... 204 Literatur - Etc. ................................................................................................................. 205 Links ................................................................................................................................ 206 Übungen ................................................................................................................................... 207 11.1 Vorbereitungen ................................................................................................................ 208 11.1.1 Schnellstart ......................................................................................................... 208 11.1.2 Arbeiten mit der Virtuellen Maschine ................................................................. 208 11.1.2.1 Starten der Dienste................................................................................ 209 11.1.2.2 Kopieren der Daten ............................................................................... 209 11.1.2.3 Ausführen eines MapReduce Jobs ....................................................... 209 11.1.2.4 Übungen und Lösungen ........................................................................ 210 11.2 HDFS ............................................................................................................................... 211 11.2.1 Aufgaben: File System Shell .............................................................................. 211 11.2.2 Lösungen: File System Shell .............................................................................. 211 11.2.3 Aufgaben: Java API ............................................................................................ 213 11.2.4 Lösungen: Java API ........................................................................................... 214 11.3 MapReduce ..................................................................................................................... 215 11.3.1 Lösungen MapReduce ....................................................................................... 216 11.4 Hadoop Zoo..................................................................................................................... 217 11.4.1 Aufgaben Hive .................................................................................................... 217 11.4.2 Lösungen Hive ................................................................................................... 218 11.4.3 Aufgaben Pig ...................................................................................................... 220 11.4.4 Lösungen Pig ..................................................................................................... 222 11.4.5 Aufgaben Sqoop ................................................................................................. 225 11.4.6 Lösungen Sqoop ................................................................................................ 227 11.4.7 Aufgaben ZooKeeper ......................................................................................... 227 11.4.8 Lösungen ZooKeeper ......................................................................................... 228 11.5 Hive ................................................................................................................................. 231 11.5.1 Vorbereitungen ................................................................................................... 231 11.5.2 Aufgaben Beeline ............................................................................................... 231 11.5.3 Lösungen Beeline ............................................................................................... 232 11.5.4 Aufgaben Tabellen verwalten ............................................................................. 233 11.5.5 Lösungen Tabellen verwalten ............................................................................ 233 11.5.6 Aufgaben Partitionierung .................................................................................... 235 11.5.7 Lösungen Partitionierung ................................................................................... 235 Seite 6 Big Data: Apache Hadoop Grundlagen Version: 1.02 Copyright ORDIX AG Inhaltsverzeichnis 11.6 Dateiformate .................................................................................................................... 238 11.6.1 Vorbereitungen ................................................................................................... 238 11.6.2 Aufgaben Textdateien ........................................................................................ 238 11.6.3 Lösungen Textdateien ........................................................................................ 239 11.6.4 Aufgaben Binärdateien ....................................................................................... 240 11.6.5 Lösungen Binärdateien ...................................................................................... 240 Version: 1.02 Copyright ORDIX AG Seite 7 Big Data: Apache Hadoop Grundlagen