jonas FREIKNECHT BIG DATA in der Praxis Lösungen mit Hadoop, HBase und Hive Daten speichern, aufbereiten, visualisieren Auf DVD: 18 fertige Beispielprojekte plus Videotutorials Inhalt Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XI 1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 Big-Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1 Historische Entstehung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2 Big-Data – ein passender Begriff? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.1 Die drei V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2.2 Das vierte V – Veracity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.3 Der Verarbeitungsaufwand ist big . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2.4 Sicht der Industrien auf Big-Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.3 Eingliederung in BI und Data-Mining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3 3.1 3.2 3.3 3.4 Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Hadoop kurz vorgestellt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 HDFS – das Hadoop Distributed File System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Hadoop 2.x und YARN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Hadoop als Single-Node-Cluster ­aufsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.4.1 Falls etwas nicht funktioniert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.5Map-Reduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.6 Aufsetzen einer Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.7 Implementierung eines ­Map-Reduce-Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.8 Ausführen eines Jobs über Kommandozeile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.9 Verarbeitung im Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.10 Aufsetzen eines Hadoop-Clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3.11 Starten eines Jobs via Hadoop-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 3.12 Verketten von Map-Reduce-Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 3.13 Verarbeitung anderer Dateitypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 3.14YARN-Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 3.14.1 Logging und Log-Aggregation in YARN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 3.14.2 Eine einfache YARN-Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 VIII Inhalt 3.15 Vor- und Nachteile der verteilten ­Verarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 3.16 Die Hadoop Java-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 3.16.1 Ein einfacher HDFS-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 3.16.2Cluster-Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 3.16.3 Überwachen der Anwendungen im Cluster . . . . . . . . . . . . . . . . . . . . . . . . . 169 3.17 Gegenüberstellung zur traditionellen Verarbeitung . . . . . . . . . . . . . . . . . . . . . . . . 171 3.18 Big-Data aufbereiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 3.18.1 Optimieren der Algorithmen zur Datenauswertung . . . . . . . . . . . . . . . . . . 172 3.18.2 Ausdünnung und Gruppierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 3.19 Ausblick auf Apache Spark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 3.20 Markt der Big-Data-Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 4 Das Hadoop-Ecosystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 4.1Ambari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 4.2Sqoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 4.3Flume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 4.4HBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 4.5Hive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 4.6Pig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 4.7Zookeeper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 4.8Mahout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 4.9Spark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 4.10 Data Analytics und das Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 5 5.1 5.2 5.3 5.4 NoSQL und HBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Historische Entstehung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Das CAP-Theorem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Typen von Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Umstieg von SQL und Dateisystemen auf NoSQL oder HDFS . . . . . . . . . . . . . . . . . 194 5.4.1 Methoden der Datenmigration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 5.5HBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 5.5.1 Das Datenmodell von HBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 5.5.2 Aufbau von HBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 5.5.3 Installation als Stand-alone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 5.5.4 Arbeiten mit der HBase Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 5.5.5 Verteilte Installation auf dem HDFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 5.5.6 Laden von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 5.5.6.1 HBase Bulk Loading über die Shell . . . . . . . . . . . . . . . . . . . . . . . . 207 5.5.6.2 Datenextrakt aus einer Datenbank über Sqoop . . . . . . . . . . . . . . 209 5.5.7 HBase Java-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 5.5.8 Der Umstieg von einem RDBMS auf HBase . . . . . . . . . . . . . . . . . . . . . . . . . 242 Inhalt IX 6 6.1 6.2 6.3 6.4 Data-Warehousing mit Hive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Installation von Hive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Architektur von Hive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Das Command Line Interface (CLI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 HiveQL als Abfragesprache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 6.4.1 Anlegen von Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 6.4.2 Primitive Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 6.4.3 Komplexe Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 6.4.4 Anlegen von Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 6.4.5 Partitionierung von Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 6.4.6 Externe und interne Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 6.4.7 Löschen und leeren von Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 6.4.8 Importieren von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 6.4.9 Zählen von Zeilen via count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 6.4.10 Das SELECT-Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 6.4.11 Beschränken von SELECT über DISTINCT . . . . . . . . . . . . . . . . . . . . . . . . . . 260 6.4.12 SELECT auf partitionierte Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 6.4.13 SELECT sortieren mit SORT BY und ORDER BY . . . . . . . . . . . . . . . . . . . . . 261 6.4.14 Partitionieren von Daten durch Bucketing . . . . . . . . . . . . . . . . . . . . . . . . . 263 6.4.15 Gruppieren von Daten mittels GROUP BY . . . . . . . . . . . . . . . . . . . . . . . . . . 264 6.4.16 Subqueries – verschachtelte Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 6.4.17 Ergebnismengen vereinigen mit UNION ALL . . . . . . . . . . . . . . . . . . . . . . . 265 6.4.18 Mathematische Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 6.4.19String-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 6.4.20Aggregatfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 6.4.21 User-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 6.4.22HAVING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 6.4.23 Datenstruktur im HDFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 6.4.24 Verändern von Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 6.4.25 Erstellen von Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 6.4.26 Löschen einer View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 6.4.27 Verändern einer View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 6.4.28 Tabellen zusammenführen mit JOINs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 6.5 Hive Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 6.5.1 Implementieren eines Authentication-Providers . . . . . . . . . . . . . . . . . . . . 290 6.5.2 Authentication-Provider für HiveServer2 . . . . . . . . . . . . . . . . . . . . . . . . . . 294 6.5.3 Verwenden von PAM zur Benutzerauthentifizierung . . . . . . . . . . . . . . . . . 295 6.6 Hive und JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 6.7 Datenimport mit Sqoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 6.8 Datenexport mit Sqoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 6.9 Hive und Impala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 6.10 Unterschied zu Pig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 6.11Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 X Inhalt 7 Big-Data-Visualisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 7.1 Theorie der Datenvisualisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 7.2 Diagrammauswahl gemäß Datenstruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .327 7.3 Visualisieren von Big-Data erfordert ein Umdenken . . . . . . . . . . . . . . . . . . . . . . . . 328 7.3.1 Aufmerksamkeit lenken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 7.3.2 Kontextsensitive Diagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 7.3.33D-Diagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 7.3.4 Ansätze, um Big-Data zu visualisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 7.4 Neue Diagrammarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 7.5 Werkzeuge zur Datenvisualisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 7.6 Entwicklung einer einfachen ­Visualisierungskomponente . . . . . . . . . . . . . . . . . . 344 8 Auf dem Weg zu neuem Wissen – aufbereiten, anreichern und empfehlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 8.1 Eine Big-Data-Table als zentrale ­Datenstruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 8.2 Anreichern von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 8.2.1 Anlegen einer Wissensdatenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 8.2.2 Passende Zuordnung von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 8.3 Diagrammempfehlungen über Datentypanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 8.3.1 Diagrammempfehlungen in der BDTable . . . . . . . . . . . . . . . . . . . . . . . . . . .370 8.4 Textanalyse – Verarbeitung u ­ nstrukturierter Daten . . . . . . . . . . . . . . . . . . . . . . . . 376 8.4.1 Erkennung von Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 8.4.2 Natural Language Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 8.4.2.1Klassifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 8.4.2.2Sentiment-Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 8.4.3 Mustererkennung mit Apache UIMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 9 Zusammenfassung und Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 10 Häufige Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 11 Anhang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .415 11.1 Installation und Verwendung von Sqoop2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 11.2 Hadoop für Windows 7 kompilieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 1 Einleitung Der Begriff Big-Data ist in den letzten Jahren vom bloßen Buzz-Word hin zu einem greif­ baren technischen Begriff gereift. Hadoop und NoSQL-Technologien haben maßgeblich zu dieser Evolution beigetragen und bestimmen derzeit den Inhalt vieler Fachzeitschriften und -bücher. In den jeweiligen Texten werden meist generelle Beschreibungen des Mehrwerts, der durch den Einsatz besagter Technologien für Banken, Automobilhersteller, Forschungseinrichtungen, Versicherungen etc. entsteht, hervorgehoben und die Notwendigkeit betont, sich mit den hauseigenen und öffentlichen großen Datenmengen zu beschäftigen, um dem eigenen Unternehmen einen Wettbewerbsvorteil zu verschaffen, indem es durch die Auswertung besagter Daten neue, geschäftskritische Informationen gewinnt. Die Aufgabenstellung ist also klar: Beschäftigen Sie sich mit Big-Data und sehen Sie zu, dass Sie alle Ihnen zugängliche Datenquellen nutzen, um die Entscheidungsfindung in Ihrem Unternehmen positiv zu beeinflussen. Die Frage nach dem Wie bleibt jedoch weitestgehend unbeantwortet. Wie gewinne ich neue Informationen aus meinen Daten? Wie integriere ich denn Hadoop und Co. in unsere bisherige Business-Intelligence-Architektur? Und wie schaffe ich es, BigData in all seinen Ausprägungen aufzubereiten, zu visualisieren und den Fachabteilungen zugänglich zu machen? Wie und mit welchen Tools erstelle ich eine Big-Data-Architektur, um für neue, bisher unbekannte Herausforderungen optimal aufgestellt zu sein? Dieser Fragenkatalog ließe sich beliebig fortführen und erweitern, denn – Sie haben vielleicht schon gemerkt, worauf ich hinaus möchte – die technischen Aspekte des Big-DataTrends werden nur selten in ausreichendem Detailgrad diskutiert. Und wenn, dann nicht in Form von Gesamtlösungen, sondern in kleinen, gut verdaulichen Häppchen. Gründe dafür gibt es viele. Einerseits gibt es bisher wenige Referenzimplementierungen, außer vielleicht bei Branchengrößen wie Google, Facebook oder Yahoo. Zweitens entsteht die Big-Data-Bewegung nicht nur durch einen einzelnen neuen Technologientrend. Vielmehr basiert diese auf vielen verschiedenen Ansätzen, die erst im Zusammenspiel ihr ganzes Potenzial ent­ falten. Darunter fallen sicherlich – neben Hadoop und Co. – NoSQL-Datenbanken, DataWarehousing-Komponenten für große Datenmengen, die Map-Reduce-, YARN- und SparkProgrammiermodelle und all diejenigen Ansätze, die bereits etablierte Lösungen, etwa im Bereich des Data-Minings oder der ETL-Prozesse (Extract, Transform, Load), mit der Big-­ Data-Thematik verheiraten. Sie sehen, dass das Thema aus technischen Gesichtspunkten unglaublich umfangreich ist und viele neue Bereiche bietet, in denen es sich neues Wissen anzueignen gilt. Wichtig ist daher, dass Sie eine hohe Affinität zum Forschen und zum Experimentieren mitbringen, 2 1 Einleitung denn nicht immer ist die erste Wahl einer Software die richtige. Häufig wählt man diese erst in der zweiten oder dritten Iteration. Dazu kommt, dass viele Projekte, die Big-Data adressieren, noch recht jung sind, ständig wachsen und in jedem größeren Release neue Funk­ tionen integriert werden, die es wieder kennenzulernen und für einen Einsatz im Unter­ nehmen zu bewerten gilt. Was Sie in diesem Buch erwartet Ich möchte mich mit Ihnen den oben genannten Herausforderungen stellen und das Thema Big-Data aus einer technischen Sicht in Gänze und mit genügend Tiefgang beleuchten. Die folgenden Seiten sollen sich also nicht nur den fachlichen Neuerungen der Big-Data-Bewegung widmen, sondern vor allem einen praktischen Einstieg in sämtliche Bereiche bieten, die für die Verarbeitung von Daten aus sozialen Netzwerken, unstrukturierten Webseiten, umfangreichen Fließtextdokumenten und geografischen Daten nötig sind. Dabei wird nicht nur gezeigt werden, wie große Datenmengen in einem Cluster verarbeitet, sondern auch über ein Data-Warehouse bereitgestellt oder mit neuen, innovativen Diagrammen visualisiert werden können. Ich möchte mit Ihnen das Thema NoSQL besprechen und im praktischen Teil HBase als Vertreter dieser Kategorie aktiv einsetzen. Apache Hive wird als DataWarehouse-Software vorgestellt, um zu zeigen, inwiefern auf Big-Data mit Abfragesprachen ähnlich SQL zugegriffen werden kann. Sie werden lernen, welche neuen Diagrammarten dabei unterstützen, große Datenmengen mit komplexen Beziehungen untereinander zu visualisieren und zu verstehen. Diese versprochenen Erläuterungen möchte ich Ihnen nicht nur in Textform geben, sondern Sie aktiv in den Entwicklungsprozess mit einbeziehen und Ihnen, wo möglich, die theoretischen Hintergründe näher bringen. Neben den bekannten Apache-Projekten wie Hadoop, Hive und HBase werden wir auch einige weniger bekannte Frameworks wie Apache UIMA oder Apache OpenNLP besprechen, um gezielt die Verarbeitung unstrukturierter Daten zu behandeln. Dazu werden wir gemeinsam viele kleinere Projekte entwickeln, um die Kniffe bezüglich der Nutzung der neuen Software kennenzulernen und zu verstehen. Mein Ziel ist es, Sie auf den Effekt und den Mehrwert der neuen Möglichkeiten aufmerksam zu machen, sodass Sie diese konstruktiv in Ihr Unternehmen tragen können und für sich und Ihre Kollegen somit ein Bewusstsein für den Wert Ihrer Daten schaffen. Voraussetzungen Wie im Vorwort erwähnt, ist die wichtigste Voraussetzung sicherlich die Experimentierfreude und die Bereitschaft, Neues zu erlernen und alte Gewohnheiten und Denkweisen kurze Zeit abzuschalten. Die technischen Vorkenntnisse, die Sie mitbringen sollten, um dieses Buch flüssig lesen und nachvollziehen zu können, lassen sich in die drei Bereiche Entwicklungsumgebungen, Entwicklung und Betrieb unterteilen. Sie sollten sich mit Eclipse, Java EE und dem Betrieb von Enterprise-Anwendungen auf einem Java Application-Server auskennen. Des Weiteren ist es von Vorteil, wenn Sie gängige Webtechnologien wie HTML und JavaScript verstehen, denn damit werden wir später die Datenvisualisierung erarbeiten. Da wir zusammen Hadoop, HBase, Hive, Sqoop etc. auf Ubuntu installieren werden, ist es ebenfalls hilfreich, sich in einer Unix-Umgebung bewegen zu können und die grundliegenden Befehle zu kennen, um etwa Verzeichnisse zu wechseln, anzulegen oder zu löschen. Zudem ist ein etwas stärkerer PC vonnöten, um alle Szenarien aus dem Buch zu Hause 1 Einleitung 3 konstruieren zu können. Ich rate daher zu einem Mehrkernprozessor mit einer Taktfrequenz von mindestens 3 GHz und mindestens 12 Gigabyte RAM. Die gute Nachricht ist, dass Sie für die Software, die wir einsetzen werden (Eclipse, Glassfish, Ubuntu . . .), kein Geld bezahlen müssen, denn alle Komponenten stehen in vollem Umfang kostenlos im Internet zur Verfügung. Wenn ich Sie mit diesen Anforderungen nun ein wenig abgeschreckt habe, möchte ich Sie auch gleich wieder beruhigen. Anstatt in diesem Buch zu erklären, wie eine Lösung aussehen könnte, möchte ich diese mit Ihnen ganz konkret Schritt für Schritt aufbauen und Sie so hin zu einer fertigen und funktionstüchtigen Implementierung führen. In meinem letzten Buch habe ich die Erfahrung gemacht, dass dieses Vorgehen sehr gut angenommen wird und dass es sich lohnt, lieber einen Teil zu detailliert zu erklären, als etwaige Fragen offenzulassen. Wenn Sie sich also nicht sicher sind, ob Ihnen dieses Buch zu viel abverlangt, dann seien Sie mutig. Das sage ich nicht, da ich hoffe, durch die Verkäufe meinen nächsten Urlaub finanzieren zu können, sondern da ich davon ausgehe, dass Sie mit einem technischen Interesse an Big-Data bereits über die eine oder andere Vorerfahrung im Bereich der Informationsverarbeitung verfügen und Sie sich somit getrost der vorliegenden Lektüre widmen können. Für wen ist dieses Buch geschrieben? Dieses Buch ist ganz klar für Menschen konzipiert, die sich in ihrem Beruf praktisch mit dem Thema Big-Data auseinandersetzen. Doch ich möchte ganz klar sagen, dass sich nun nicht nur studierte Informatiker angesprochen fühlen sollen, sondern auch solche, die aus anderen Disziplinen kommen und vielleicht eine tolle Idee (und jede Menge Daten) haben und damit z. B. planen, ein Start-up zu gründen. Ich hoffe ebenso, mit dieser Lektüre Studenten und Auszubildende begleiten zu dürfen, die das Buch als Ergänzung zu einer Vor­ lesung oder zum Schreiben einer Seminararbeit verwenden. Wenn Sie sich also zu einer Gruppe der in Bild 1.1 genannten Tätigkeitsfelder zählen oder sich mit einem der aufgeführten Themen beschäftigen, dann lohnt sich ein Blick in die folgenden Seiten. Informatiker • Analysten • BI-Verantwortliche • Data-Scientists • Consultants Studenten und Auszubildende • Informatiker • Mathematiker • Physiker • Chemiker • Biologen Start-ups • Daten auf mobilen Geräten • Visualisierung • Smarter-Cities IT-Interessierte • Datenbewusstsein entwickeln • Neuerungen entdecken • Fachsimpeln Bild 1.1 Gruppen und Themen, die in Zusammenhang mit Big-Data genannt werden Neulich war ich in einer Buchhandlung in Hannover und habe zwei neue Werke mit dem Wort Big-Data im Titel entdeckt, die fernab der technischen Fachliteratur lagen. Da ich gerade begonnen hatte, dieses Buch zu schreiben, weckten sie natürlich mein Interesse und ich blätterte ein wenig darin. Der Inhalt bestand aus theoretischen Anwendungsfällen, rechtlichen Fragen zum Datenschutz und ein bisschen Panikmache durch Begriffe wie Prism, NSA und Gläserner Mensch. Für mich eine wunderbare Vorlage für einen Absatz über 1-1 4 1 Einleitung das Thema: Für wen dieses Buch nicht geschrieben ist. Denn so interessant die Diskussionen auch sind, möchte ich mich in diesem Buch ganz vorbehaltlos ausschließlich mit den technischen Details beschäftigen. Wenn Sie also ein wenig gehofft haben, nach dem Lesen dieses Buches auf der nächsten Familienfeier mit ein bisschen Insiderwissen über amerikanische Geheimdienste glänzen zu können, muss ich Sie enttäuschen. Ich verspreche Ihnen aber, dass Sie bei der nächsten Fachsimpelei mit Kollegen und Freunden bei einer Tasse Kaffee durchaus etwas zu erzählen haben werden. Warum „Big-Data in der Praxis“? Ich muss gestehen, dass ich, wenn ich selber Bücher oder Fachzeitschriften lese, gerne größere Theorieblöcke überspringe und mir zuerst die praktischen Teile anschaue. Vielleicht sind Sie, genau wie ich, ein Learning-by-Doing-Typ, dem es liegt, sich Wissen anhand von praktischen Erfahrungen anzueignen. Wenn ich Befehle auf der Tastatur eingebe, kann ich mir diese einfach besser merken und häufig entsteht auch dann ein tiefergehendes Interesse an der Materie, mit der ich mich gerade beschäftige, sodass ich dann bereit bin, die Theorie nachzuholen. Genau diesen Gedanken möchte ich in diesem Buch praktizieren, sodass fachliche mit technischen Erklärungen einhergehen und sich symbiotisch ergänzen. Dadurch erhoffe ich mir den Effekt, dass Sie die Verbindung zwischen Hintergrundwissen und der tatsächlichen Anwendung schnell herstellen und verinnerlichen und Ihnen dennoch beim Lesen nicht langweilig wird. Vorgehensweise und Struktur Dieses Buch ist so aufgebaut, dass ich zu Beginn eine theoretische Einführung in alle Themen rund um Big-Data gebe. Neben der historischen Entwicklung des Begriffs und der Diskussion einiger unterschiedlicher Definitionen, möchte ich Ihnen mithilfe von Studien und Umfragen zeigen, welche Industrien welche Themen mit dem Begriff Big-Data verbinden, und somit die Erwartungshaltung verschiedener Menschen in Bezug auf den Trend darlegen. Eine Gegenüberstellung der Begrifflichkeiten BI, Data-Mining und Big-Data soll dabei helfen, Zusammenhänge, Unterschiede und gegenseitige Ergänzung der drei Begrifflichkeiten zu erkennen, und Sie befähigen, diese gegeneinander abzugrenzen und an anderer Stelle Schnittpunkte zwischen ihnen zu finden. Im Anschluss folgt ein Kapitel über Hadoop, in dem ich dessen Installation, Konfiguration und Bedienung erkläre und dabei jeweils auf die Besonderheiten bei der Verwendung mit einem Single- oder Multi-Node-Cluster eingehe. Es schließt sich die Entwicklung von MapReduce-Jobs und YARN-Anwendungen an, gefolgt von einem ausführlichen Abschnitt zur Arbeit mit der Hadoop-API, um den Zugriff auf das HDFS, den Resource-Manager etc. zu erklären. Nachdem die Funktionsweise und die Idee hinter Hadoop bekannt sind, stelle ich in Kapitel 4 kurz vor, welche Projekte um Hadoop herum in dessen Eco-System existieren und welche Aufgaben diese haben. In Kapitel 5 wird das Thema NoSQL aufgegriffen, theoretisch erläutert und praktisch unter Zuhilfenahme von HBase umgesetzt. Dabei zeige ich nicht nur, wie HBase installiert und eingerichtet wird, sondern auch wie auf dessen Daten, entweder über das Terminal oder die Java-API, zugegriffen werden kann. 1 Einleitung 5 Analog dazu wird in Kapitel 6 das Thema Data-Warehousing mit Apache Hive besprochen und gezeigt, wie sich Hive in das Big-Data-Umfeld integrieren lässt. Elementarer Bestandteil dieses Kapitels ist die Abfragesprache HiveQL mit all ihren Ausprägungen und die Verwendung von Hive über einen herkömmlichen JDBC-Adapter, um aus einer Java-Anwendung Abfragen absetzen und auswerten zu können. Das Thema Datenvisualisierung beschäftigt uns dann in Kapitel 7, in dem ich zuerst einige Visualisierungsframeworks vorstelle und vergleiche und dann mit D3.js ein Set von Visualisierungskomponenten erarbeite, mit denen wir in einer Beispielanwendung ein paar ansehnliche Diagramme zeichnen werden. Im theoretischen Teil dieses Kapitels geht es darum, was man beachten muss, wenn Sie planen, große Datenmengen auf kleinem Raum unterzubringen, und welche Trends und Möglichkeiten es dabei gibt. In Kapitel 8 soll das Thema Informationsgewinnung nähergebracht werden, das zum einen einen Zusammenschnitt aller bisher kennengelernten Techniken in einer schicken Gesamtlösung vereint und des Weiteren auf die Besonderheiten bei der Verarbeitung von unstrukturierten Daten mit aktuellen Text-Mining-Frameworks eingeht, darunter Apache UIMA und Apache OpenNLP. Diese werden ebenfalls als Bestandteil in das hier zu entwickelnde Programm einfließen. Das Buch schließt in den letzten beiden Kapiteln mit einem Beiwerk ab, das einerseits Lösungen zu häufigen Fehlern bei der Arbeit mit Hadoop, Hive und HBase anbietet und zum anderen einige ergänzende Anleitungen bereitstellt, die den Inhalt des Buches ergänzen sollen. DVD zum Buch Auf der DVD, die diesem Buch beiliegt, finden Sie die fertigen Projekte, die wir gemeinsam in diesem Buch erarbeiten werden. Nutzen Sie diese gerne als Nachschlagewerk, um Vorgehensweisen und Verwendung der entsprechenden APIs im Detail zu verstehen. Des Weiteren stelle ich für einige Aufgaben Video-Tutorials bereit, die u. a. die Installation von Hadoop, Hive und HBase zeigen, sodass Sie jeden einzelnen Schritt der Erklärungen genau nachverfolgen können. Last but not least sind auf der DVD diverse Testdatensätze zu finden, die gerne während der Entwicklung und Erprobung der Anwendungen genutzt werden dürfen. Für die Daten in der Wissensdatenbank liegen im Ordner Lizenzdateien die Quellen der Daten vor. Die generierten Beispieldatensätze sind von mir zufällig gewählt bzw. generiert, sodass Übereinstimmungen von Namen, Adressen, Berufen oder anderen Eigenschaften mit denen von realen Personen nur zufällig sind. Wenn Sie Fragen oder Anregungen bezüglich dieses Buches haben, würde ich mich freuen, wenn Sie mich über meinen Blog www.jofre.de kontaktieren. Nun wünsche ich Ihnen viel Spaß bei der vorliegenden Lektüre.