Cover

Inhalt

Titelei

Impressum

Inhalt

Widmung

1 Einleitung

2 Big Data

2.1 Historische Entstehung

2.2 Big Data – ein passender Begriff?

2.2.1 Die drei V

2.2.2 Weitere Vs

2.2.3 Der Verarbeitungsaufwand ist big

2.2.4 Sicht der Industrie auf Big Data

2.3 Eingliederung in BI und Data Mining

3 Hadoop

3.1 Hadoop kurz vorgestellt

3.2 HDFS – das Hadoop Distributed File System

3.3 Hadoop 2.x und YARN

3.4 Hadoop als Single-Node-Cluster aufsetzen

3.4.1 Falls etwas nicht funktioniert

3.5 Map Reduce

3.6 Aufsetzen einer Entwicklungsumgebung

3.7 Implementierung eines Map-Reduce-Jobs

3.8 Ausführen eines Jobs über Kommandozeile

3.9 Verarbeitung im Cluster

3.10 Aufsetzen eines Hadoop-Clusters

3.11 Starten eines Jobs via Hadoop-API

3.12 Verketten von Map-Reduce-Jobs

3.13 Verarbeitung anderer Dateitypen

3.14 YARN-Anwendungen

3.14.1 Logging und Log-Aggregation in YARN

3.14.2 Eine einfache YARN-Anwendung

3.15 Vor- und Nachteile der verteilten Verarbeitung

3.16 Die Hadoop Java-API

3.16.1 Ein einfacher HDFS-Explorer

3.16.2 Cluster-Monitor

3.16.3 Überwachen der Anwendungen im Cluster

3.17 Gegenüberstellung zur traditionellen Verarbeitung

3.18 Big Data aufbereiten

3.18.1 Optimieren der Algorithmen zur Datenauswertung

3.18.2 Ausdünnung und Gruppierung

3.19 Ausblick auf Apache Spark

3.20 Markt der Big-Data-Lösungen

4 Das Hadoop-Ecosystem

4.1 Ambari

4.2 Sqoop

4.3 Flume

4.4 HBase

4.5 Hive

4.6 Pig

4.7 ZooKeeper

4.8 Oozie

4.9 Mahout

4.10 Data Analytics und das Reporting

5 NoSQL und HBase

5.1 Historische Entstehung

5.2 Das CAP-Theorem

5.3 ACID und BASE

5.4 Typen von Datenbanken

5.5 Umstieg von SQL und Dateisystemen auf NoSQL oder HDFS

5.5.1 Methoden der Datenmigration

5.6 HBase

5.6.1 Das Datenmodell von HBase

5.6.2 Aufbau von HBase

5.6.3 Installation als Stand-alone

5.6.4 Arbeiten mit der HBase Shell

5.6.5 Verteilte Installation auf dem HDFS

5.6.6 Laden von Daten

5.6.7 HBase Java-API

5.6.8 Der Umstieg von einem RDBMS auf HBase

6 Data Warehousing mit Hive

6.1 Installation von Hive

6.2 Architektur von Hive

6.3 Das Command Line Interface (CLI)

6.4 HiveQL als Abfragesprache

6.4.1 Anlegen von Datenbanken

6.4.2 Primitive Datentypen

6.4.3 Komplexe Datentypen

6.4.4 Anlegen von Tabellen

6.4.5 Partitionierung von Tabellen

6.4.6 Externe und interne Tabellen

6.4.7 Löschen und Leeren von Tabellen

6.4.8 Importieren von Daten

6.4.9 Zählen von Zeilen via count

6.4.10 Das SELECT-Statement

6.4.11 Beschränken von SELECT über DISTINCT

6.4.12 SELECT auf partitionierte Tabellen

6.4.13 SELECT sortieren mit SORT BY und ORDER BY

6.4.14 Partitionieren von Daten durch Bucketing

6.4.15 Gruppieren von Daten mittels GROUP BY

6.4.16 Subqueries – verschachtelte Abfragen

6.4.17 Ergebnismengen vereinigen mit UNION ALL

6.4.18 Mathematische Funktionen

6.4.19 String-Funktionen

6.4.20 Aggregatfunktionen

6.4.21 User-Defined Functions

6.4.22 HAVING

6.4.23 Datenstruktur im HDFS

6.4.24 Verändern von Tabellen

6.4.25 Erstellen von Views

6.4.26 Löschen einer View

6.4.27 Verändern einer View

6.4.28 Tabellen zusammenführen mit JOINs

6.5 Hive Security

6.5.1 Implementieren eines Authentication-Providers

6.5.2 Authentication-Provider für HiveServer2

6.5.3 Verwenden von PAM zur Benutzerauthentifizierung

6.6 Hive und JDBC

6.7 Datenimport mit Sqoop

6.8 Datenexport mit Sqoop

6.9 Hive und Impala

6.10 Unterschied zu Pig

6.11 Zusammenfassung

7 Big-Data-Visualisierung

7.1 Theorie der Datenvisualisierung

7.2 Diagrammauswahl gemäß Datenstruktur

7.3 Visualisieren von Big Data erfordert ein Umdenken

7.3.1 Aufmerksamkeit lenken

7.3.2 Kontextsensitive Diagramme

7.3.3 3D-Diagramme

7.3.4 Ansätze, um Big-Data zu visualisieren

7.4 Neue Diagrammarten

7.5 Werkzeuge zur Datenvisualisierung

7.6 Entwicklung einer einfachen Visualisierungskomponente

8 Auf dem Weg zu neuem Wissen – Aufbereiten, Anreichern und Empfehlen

8.1 Eine Big-Data-Table als zentrale Datenstruktur

8.2 Anreichern von Daten

8.2.1 Anlegen einer Wissensdatenbank

8.2.2 Passende Zuordnung von Daten

8.3 Diagrammempfehlungen über Datentypanalyse

8.3.1 Diagrammempfehlungen in der BDTable

8.4 Textanalyse – Verarbeitung unstrukturierter Daten

8.4.1 Erkennung von Sprachen

8.4.2 Natural Language Processing

8.4.3 Mustererkennung mit Apache UIMA

9 Infrastruktur

9.1 Hardware

9.2 Betriebssystem

9.2.1 Paketmanager

9.2.2 Git

9.2.3 VIM

9.2.4 Terminalumgebung

9.3 Virtualisierung

9.4 Container

9.4.1 Docker-Crashkurs

9.4.2 Infrastructure as Code

9.5 Distributionen

9.6 Reproduzierbarkeit

9.7 Zusammenfassung

10 Programmiersprachen

10.1 Merkmale

10.1.1 Funktionale Paradigmen

10.2 Big-Data-Programmiersprachen

10.2.1 Java

10.2.2 Scala

10.2.3 Python

10.2.4 R

10.2.5 Weitere Programmiersprachen

10.3 Zusammenfassung

11 Polyglot Persistence

11.1 Praxis

11.1.1 Redis

11.1.2 MongoDB

11.1.3 Neo4j

11.1.4 S3

11.1.5 Apache Kudu

11.2 Zusammenfassung

12 Apache Kafka

12.1 Der Kern

12.2 Erste Schritte

12.3 Dockerfile

12.4 Clients

12.5 Python Chat Client

12.6 Zusammenfassung

13 Data Processing Engines

13.1 Von Map Reduce zu GPPEs

13.1.1 Herausforderungen

13.1.2 Verfahren zur Verbesserung

13.1.3 Von Batch und Streaming zu Lambda

13.1.4 Frameworks in a Nutshell

13.2 Apache Spark

13.2.1 Datasets

13.2.2 Von RDDs zu Data Frames

13.2.3 Hands On Apache Spark

13.2.4 Client-Programme schreiben

13.2.5 Das Spark-Ecosystem

13.3 Zusammenfassung

14 Streaming

14.1 Kernparadigmen

14.2 Spark Streaming

14.2.1 Beispiel

14.3 Apache Flink

14.4 Zusammenfassung

15 Data Governance

15.1 Begriffsdschungel

15.2 Governance-Pfeiler

15.2.1 Transparenz

15.2.2 Verantwortung

15.2.3 Standardisierung

15.3 Fokusthemen von Data Governance

15.3.1 Policies

15.3.2 Quality

15.3.3 Compliance

15.3.4 Business Intelligence

15.4 Datenschutz

15.4.1 Werkzeuge

15.5 Sicherheit im Hadoop-Ecosystem

15.6 Metadatenmanagement

15.6.1 Open-Source-Werkzeuge

15.6.2 Kommerzielle Datenkataloge

15.7 Organisatorische Themen

15.7.1 Privacy by Design

15.7.2 k-Anonymity

15.7.3 Standards

15.8 Zusammenfassung

16 Zusammenfassung und Ausblick

16.1 Zur zweiten Auflage 2018

16.2 Zur ersten Auflage 2014

17 Häufige Fehler

18 Anleitungen

18.1 Installation und Verwendung von Sqoop2

18.2 Hadoop für Windows 7 kompilieren

19 Literaturverzeichnis

Jonas Freiknecht
Stefan Papp

Big Data in der Praxis

Lösungen mit Hadoop, Spark, HBase und Hive

Daten speichern, aufbereiten, visualisieren

2., erweiterte Auflage

Die Autoren:

Jonas Freiknecht, Karlsruhe, www.jofre.de
Stefan Papp, Gaflenz, stefan.papp@data-wizard.net

Alle in diesem Buch enthaltenen Informationen, Verfahren und Darstellungen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autoren und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht.

Ebenso übernehmen Autoren und Verlag keine Gewähr dafür, dass beschriebene Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buch berechtigt deshalb auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen­ und Markenschutz­Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.

Bibliografische Information der Deutschen Nationalbibliothek: Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

Dieses Werk ist urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) – auch nicht für Zwecke der Unterrichtsgestaltung – reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.

Lektorat: Sylvia Hasselbach
Copyediting: Jürgen Dubau, Freiburg/Elbe
Umschlagdesign: Marc Müller-Bremer, München, www.rebranding.de
Umschlagrealisation: Stephan Rönigk

Print-ISBN 978-3-446-45396-8
E-Book-ISBN 978-3-446-45601-3

Verwendete Schriften: SourceSansPro und SourceCodePro (Lizenz)
CSS-Version: 1.0

Font License Zurück zum Impressum

Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. "Reserved Font Name" refers to any names specified as such after the copyright statement(s). "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

Widmung

„Wenn Du schnell gehen willst, geh allein. Wenn Du weit gehen willst, geh mit anderen.“

Afrikanisches Sprichwort

1 Einleitung

Der Begriff Big Data ist seit der ersten Auflage im Jahr 2014 zu einem zentralen Thema in der IT-Landschaft von Unternehmen geworden. Kaum jemand spricht noch von einem kurzfristigen Hype. Big-Data-Technologien bestimmen auch den Inhalt vieler Fachzeitschriften und -bücher.

Mit Apache Hadoop und NoSQL-Datenbanken können große, meist unstrukturierte Datenmengen effizient verteilt verarbeitet werden. Darüber hinaus haben in der letzten Zeit Data Processing Engines wie Apache Spark und Messaging-Systemen wie Kafka an Popularität gewonnen, da sie neue Möglichkeiten bieten, wie noch schneller Wert aus Daten extrahiert werden kann. Machine-Learning- und Deep-Learning-Werkzeuge sind mittlerweile ebenfalls ein wesentlicher Teil einer Big-Data-Systemlandschaft.

In den Medien wird häufig der generelle Mehrwert, der durch den Einsatz von Big-Data-Technologien für Banken, Automobilhersteller, Forschungseinrichtungen, Versicherungen etc. entsteht, hervorgehoben. Es wird die Notwendigkeit betont, sich mit den firmeninternen und öffentlichen Datenmengen zu beschäftigen, um dem eigenen Unternehmen einen Wettbewerbsvorteil zu verschaffen. Durch die Auswertung großer Datenmengen sollen neue, geschäftskritische Informationen gewonnen werden, welche die Grundlage für Unternehmensentscheidungen sein können. Daten gelten als das Öl des 21. Jahrhunderts.

Die sogenannte „Value Proposition“ für Unternehmen ist somit klar: Mit Big Data können Firmen Kosten sparen, schnellere Entscheidungen treffen und neue Märkte generieren. Zahlreiche Berater nutzen Domänensprache, also eine spezialisierte Businesssprache, und erstellen für ihre Kunden neue Churn-Modelle 1, Customer Experience Solutions 2 und Data Monetarisation Use Cases 3.

Die Frage nach dem Wie bleibt in vielen Büchern unbeantwortet. Wie funktionieren die Lösungen im Detail, um Informationen aus Daten zu extrahieren? Wie integrieren sich Hadoop und Co. in bisherige Business-Intelligence-Architekturen und wie ist das Zusammenspiel mit dem Data Warehouse? Welche Bedeutung haben Frameworks wie Spark und Kafka in einer modernen Big-Data-Architektur? Und wie schaffen es Data Scientists, große Datenmengen aufzubereiten, zu visualisieren und den Fachabteilungen zugänglich zu machen? Mit welchen Tools wird eine Big-Data-Architektur geschaffen, um für neue, bisher unbekannte Herausforderungen optimal aufgestellt zu sein?

Dieser Fragenkatalog ließe sich beliebig fortführen und erweitern, denn die technischen Aspekte des Big-Data-Trends 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. Zum einen sind Big Data-Experten rar, und nur wenige haben die Zeit, ihr Wissen in Büchern oder Fachartikeln weiterzugeben. Darüber hinaus steht hinter Big Data nicht nur eine einzelne neue Technologie. Big-Data-Architekturen basieren oft auf vielen verschiedenen Komponenten, die erst im Zusammenspiel ihr ganzes Potenzial entfalten.

Das Thema ist unter technischen Gesichtspunkten umfangreich und bietet zahlreiche Bereiche, in denen es sich neues Wissen anzueignen gilt. Wichtig ist daher, dass Sie eine hohe Affinität zum Forschen und zum Experimentieren mitbringen. Viele Big-Data-Technologien werden laufend weiterentwickelt und andere verschwinden wieder. Dazu kommen die unterschiedlichsten Anforderungen von Unternehmen an Big Data, die wiederum unterschiedlich aufgebaute Big-Data-Architekturen erfordern.

Was den Leser in diesem Buch erwartet

Big Data wird in diesem Buch aus einer Engineering-Sicht betrachtet. Einzelne fachliche Anwendungsgebiete werden natürlich berücksichtigt, aber das Primärziel ist, Lesern, die an der Technologie interessiert sind, einen praktischen Einstieg in moderne Lösungsansätze zu bieten, die für die Verarbeitung von Daten z. B. aus sozialen Netzwerken, unstrukturierten Webseiten, umfangreichen Fließtextdokumenten und geografischen Daten nötig sind. Dabei wird nicht nur gezeigt, wie große Datenmengen in einem Cluster verarbeitet, sondern auch über ein Data Warehouse bereitgestellt oder mit neuen, innovativen Diagrammen visualisiert werden können. Themen wie NoSQL werden besprochen und im praktischen Teil HBase als Vertreter dieser Kategorie aktiv eingesetzt. Apache Hive wird als Data-Warehouse-Software vorgestellt, um zu zeigen, inwiefern auf Big Data mit Abfragesprachen ähnlich SQL zugegriffen werden kann. Darüber hinaus wird Hive dann auch neueren SQL-Trends wie dem Framework Apache Spark gegenübergestellt. Sie lernen, welche neuen Diagrammarten dabei unterstützen, große Datenmengen mit komplexen Beziehungen untereinander zu visualisieren und zu verstehen. Diese versprochenen Erläuterungen werden nicht nur in Textform gegeben, Sie werden auch aktiv in den Entwicklungsprozess miteinbezogen und wo möglich, werden die theoretischen Hintergründe nähergebracht. Neben den bekannten Apache-Projekten wie Hadoop, Hive und HBase werden auch einige weniger bekannte Frameworks wie Apache UIMA oder Apache OpenNLP besprochen, um gezielt die Verarbeitung unstrukturierter Daten zu behandeln. Dazu wird in dem Buch gezeigt, wie Sie kleinere Projekte entwickeln, um die Kniffe bezüglich der Nutzung der neuen Software kennenzulernen und zu verstehen. Das 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 und für sich und Ihre Kollegen 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 zu hinterfragen. 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 Java und IntelliJ oder Eclipse als Entwicklungsumgebung auskennen. Da Hadoop, HBase, Hive, Sqoop etc. auf Ubuntu, in virtuellen Umgebungen und Dockercontainern installiert wird, ist es ebenfalls hilfreich, sich in einer Unix-Umgebung bewegen zu können und die grundlegenden Befehle zu kennen, um etwa Verzeichnisse zu wechseln, anzulegen oder zu löschen. Zudem ist eine etwas stärkere Systemumgebung vonnöten, um alle Szenarien aus dem Buch zu Hause nachvollziehen zu können. Wesentlich ist dabei RAM. 8 GB RAM sollten schon vorhanden sein. Die gute Nachricht ist, dass Sie für die verwendete Software kein Geld bezahlen müssen, denn alle in diesem Buch verwendeten Komponenten stehen in vollem Umfang kostenlos im Internet zur Verfügung.

Alle Beispiele in diesem Buch werden Schritt für Schritt aufgebaut und führen Sie somit hin zu einer fertigen und funktionstüchtigen Implementierung.

Die verwendeten Softwareversionen

In der ersten Auflage dieses Buches wurde Hadoop in der Version 2.2.0 verwendet, ergänzt um die weiteren Komponenten wie Hive und HBase in der jeweils zum damaligen Zeitpunkt aktuellen Version. Diese Versionierung wurde in der 2. Auflage beibehalten.

Die vorgestellten Komponenten wie Hadoop, Hive, HBase werden natürlich regelmäßig um neue Features erweitert, bei der Kernarchitektur wird jedoch auf eine hohe Abwärtskompatibilität geachtet. Aus diesem Grund sind alle Beispiele aus dem Buch weiterhin lauffähig und die Software kann entsprechend der Anleitungen im Buch installiert werden. Wenn Sie mit einer neueren Version arbeiten möchten, muss lediglich die Versionsnummer angepasst werden. Steht also im Buch beispielsweise

sudo wget http://mirror.lwnetwork.org.uk/APACHE/hadoop/common/hadoop-2.2.0/hadoop-2.2.0.tar.gz

dann können Sie z. B. hadoop-2.2.0 durch hadoop-3.1.0 ersetzen und für die Java-Installation die Version 8 verwenden, wobei Sie anstelle von sudo apt-get install openjdk-7-jdk den Befehl sudo apt-get install openjdk-8-jdk ausführen.

Image

Bild 1.1 Beispiel mit Hadoop 3.1.0 und Ubuntu 18.04

Sie können also problemlos mit den aktuellen Versionen arbeiten, indem Sie beim Ausführen der Praxisbeispiele die Versionsnummern ersetzen. Darüber hinaus können Sie die Beispiele natürlich auch auf Basis der in diesem Buch verwendeten Versionen nachvollziehen.

Für wen ist dieses Buch geschrieben?

Dieses Buch ist für Menschen konzipiert, die sich in ihrem Beruf praktisch mit dem Thema Big Data auseinandersetzen. Dieses Buch soll aber nicht nur Informatiker ansprechen, sondern auch solche, die aus anderen Disziplinen kommen und vielleicht eine tolle Idee (und jede Menge Daten) haben und damit planen, z. B. ein Start-up zu gründen. Ebenso sollen Studenten und Auszubildende mit dieser Lektüre begleitet werden, die das Buch als Ergänzung zu einer Vorlesung oder zum Schreiben einer Seminararbeit verwenden können. Wenn Sie sich also zu einer Gruppe der in Bild 1.2 genannten Tätigkeitsfelder zählen oder mit einem der genannten Themen beschäftigen, dann lohnt sich ein Blick ins Buch besonders.

Image

Bild 1.2 Gruppen und Themen, die in Zusammenhang mit Big Data genannt werden

Menschen, die Big Data von einer Business-Ebene betrachten, können durchaus das eine oder andere aus dem Buch lernen, wenngleich der Fokus des Buches mehr auf Technologie als auf den Möglichkeiten einer „Data Monetisation“ liegt. Wer jedoch die Technologie versteht, wird auch besser verstehen, wie man daraus Geschäftsfelder erschließen kann.

Ein großes Thema bei Big Data sind auch gesellschaftliche Auswirkungen der Digitalisierung (bei der Big Data eine wesentliche Rolle spielt) und das Thema Datenschutz. In einer Zeit, in der Unternehmen bei Datenmissbrauch horrende Strafen drohen, kann dieser Aspekt nicht ignoriert werden. Allerdings wird sich dieses Buch mehr auf die technischen als auf die juristischen oder ethischen Herausforderungen konzentrieren.

Warum „Big Data in der Praxis“?

Jonas Freiknecht, der Autor der ersten Auflage, sieht sich als Learning-by-Doing-Typ, dem es liegt, sich Wissen anhand von praktischen Erfahrungen anzueignen. Wenn er Befehle auf der Tastatur eingibt, kann er sich diese einfach besser merken. Häufig entsteht auch dann ein tiefergehendes Interesse an der Materie, mit der er sich gerade beschäftigt, sodass er dann bereit ist, die Theorie nachzuholen.

Stefan Papp, der Autor, der die erste Auflage des Buches aktualisiert und erweitert hat, sieht das genauso: Technische Details lassen sich oft durch die praktische Anwendung am besten verstehen. Dadurch erhoffen sich beide Autoren den Effekt, dass Sie die Verbindung zwischen Hintergrundwissen und der tatsächlichen Anwendung schnell herstellen und verinnerlichen und es Ihnen beim Lesen nicht langweilig wird.

Vorgehensweise und Struktur

Dieses Buch beginnt mit einer theoretischen Einführung in alle Themen rund um Big Data. Neben der historischen Entwicklung des Begriffs und der Diskussion einiger unterschiedlicher Definitionen wird mithilfe von Studien und Umfragen gezeigt, welche Industrien welche Themen mit dem Begriff Big Data verbinden. Somit wird die Erwartungshaltung verschiedener Menschen in Bezug auf den Trend dargelegt. 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 die Installation, Konfiguration und Bedienung erklärt wird. Dabei wird jeweils auf die Besonderheiten bei der Verwendung mit einem Single- oder Multi-Node-Cluster eingegangen. Es schließt sich die Entwicklung von Map-Reduce-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, wird in Kapitel 4 kurz vorgestellt, 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 wird nicht nur gezeigt, wie HBase installiert und eingerichtet wird, sondern auch, wie auf dessen Daten, entweder über das Terminal oder die Java-API, zugegriffen werden kann.

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 wird in Kapitel 7 behandelt, in dem zuerst einige Visualisierungsframeworks vorgestellt und verglichen werden. Danach wird mit D3.js ein Set von Visualisierungskomponenten erarbeitet, mit denen in einer Beispielanwendung ein paar ansehnliche Diagramme gezeichnet werden. Im theoretischen Teil dieses Kapitels geht es darum, was man beachten muss, wenn jemand plant, 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.

Erweitert wurde die zweite Auflage des Buches um sechs neue Kapitel zu Hadoop-unabhängigen Frameworks. In Kapitel 9 wird das Konzept Infrastructure as Code vorgestellt und gezeigt, wie man mit Docker-Containern arbeitet. Kapitel 10 widmet sich den funktionalen Programmierparadigmen und stellt verschiedene Programmiersprachen vor, die häufig in Big-Data-Szenarien Anwendung finden. Kapitel 11 beschreibt das Konzept von Polyglot Persistence, dem Weg, Daten in mehrere unterschiedliche Datenbanken und Container zwischenzulagern. In Kapitel 12 wird Apache Kafka als Messaging-System vorgestellt, bevor es in Kapitel 13 um die Data Processing Machine Apache Spark geht und in Kapitel 14 Daten-Streaming mit Apache Flink vorgestellt wird. Kapitel 15 beschäftigt sich mit dem Thema Data Governance und der effektiven Verwaltung von Daten.

Das Buch schließt ab mit einem Ausblick und zwei weiteren Kapiteln, die Ihnen Lösungen zu häufigen Fehlern bei der Arbeit mit Hadoop, Hive und HBase und ergänzende Anleitungen bieten.

Image

Die Beispieldaten zum Buch

Die Beispieldaten zum Buch können unter https://github.com/StefanPapp/bigdata_buch heruntergeladen werden und enthalten u.a. die fertigen Projekte, die im Buch erarbeitet werden. Nutzen Sie diese gerne als Nachschlagewerk, um Vorgehensweisen und Verwendung der entsprechenden APIs im Detail zu verstehen. Last, but not least sind online 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 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 Buchs haben, würden sich beide Autoren freuen, wenn Sie sie kontaktieren. Jonas Freiknecht ist über www.jofre.de kontaktierbar. Stefan Papp erreichen Sie am besten über LinkedIn oder Xing Beide Autoren wünschen viel Spaß bei der vorliegenden Lektüre.

1Modelle, in denen untersucht wird, warum Kunden kündigen und wie man das verhindern kann.

2Lösungen, mit denen man untersucht, wie sich Kunden verhalten, um ihr Verhalten abzuschätzen und zu lernen, wie man Geschäftsprozesse optimieren kann, um Kundenanliegen besser zu erfüllen.

3Data Monetisation ist die Disziplin, wie Firmen Geld aus Daten machen können. Beispielsweise können Telekommunikationsunternehmen gesammelte Geolokationsdaten auch an Dritte verkaufen

2 Big Data