Big Data in der Praxis

Werbung
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.
Herunterladen