Data Science IoT-Basics – die technische Basis von Big Data

Autor / Redakteur: Klaus Hübschle / Nico Litzel

Big Data beinhaltet eine Reihe von IT-Techniken wie Cluster Computing und MapReduce sowie mathematisch-statistischer Verfahren (Data Mining, Machine Learning). Der Beitrag gibt einen Überblick über die relevanten Datenbankenkonzepte (Hadoop- und NoSQL-Datenbanken) und Programmiersprachen.

Firma zum Thema

Neben den traditionellen SQL-Datenbanken und Data Warehouse werden mit Hadoop- und NoSQL-Datenbanken neue Ansätze der Datenhaltung in verteilten Computerclustern verfolgt, die deren Limitierungen hinsichtlich Skalierbarkeit, aber auch Kosten aufheben.
Neben den traditionellen SQL-Datenbanken und Data Warehouse werden mit Hadoop- und NoSQL-Datenbanken neue Ansätze der Datenhaltung in verteilten Computerclustern verfolgt, die deren Limitierungen hinsichtlich Skalierbarkeit, aber auch Kosten aufheben.
(Bild: Pixabay / CC0 )

Hinter dem Begriff Big Data verbirgt sich eine Reihe konkreter IT-Technologien und mathematisch-statistischer Verfahren, mit dem die im Einführungskapitel zitierten Herausforderungen gemeistert werden sollen. Die folgende Übersicht zeigt, in welche Kategorien sich diese Technologien und Verfahren einteilen lassen. Neben den traditionellen SQL-Datenbanken und Data Warehouse werden mit Hadoop- und NoSQL-Datenbanken neue Ansätze der Datenhaltung in verteilten Computerclustern verfolgt, die deren Limitierungen hinsichtlich Skalierbarkeit, aber auch Kosten aufheben.

Datenzugriff: Das MapReduce-Verfahren und eine Vielzahl darauf aufbauender Abfragetechnologien ergänzen den traditionellen Ansatz des Datenzugriffs per SQL-Sprache. Für zeitkritische Auswertungen werden die Daten als Livestream mittels Stream Analytics und Complex Event Processing (CEP) untersucht. In-Memory Datenbanken ermöglichen High-Speeds die Verarbeitung großer Datenmengen.

Analytische Verarbeitung: Die bereits in den 80er-Jahren sehr populären Methoden der Künstlichen Intelligenz, aber auch bekannte Verfahren aus der Statistik erleben eine echte Renaissance und bilden den Kern der neuen Lösungen rund um Maschinelles Lernen, Data Analytics und Data Mining.

Visualisierung: Immer leistungsfähigere interaktive Analysewerkzeuge unterstützen die Datenanalysten bei ihrer Arbeit. BI-Tools aus dem Umfeld Business Intelligence ermöglichen darüber hinaus auch Nicht-Spezialisten, aus den vorhandenen Daten wertvolle Erkenntnisse zu gewinnen.

Datenintegration: Die neuen Methoden für Datenhaltung und Datenzugriff müssen untereinander und mit den traditionellen Technologien verknüpft werden. Dazu gibt es ein sehr breites Spektrum an Integrationstechnologien wie SOA, RESTful Services und WEB API, Message Queue, Enterprise Service Bus und viele andere mehr.

Daten-Governance und Sicherheit: Durchgehende Verschlüsselung der Daten, Multi-Mandantenfähigkeit, Anonymisierung von personenbezogenen Daten und neue Datentreuhandmodelle sollen helfen, auch im Big-Data-Umfeld die gesetzlichen und unternehmensspezifischen Anforderungen an Datensicherheit und Datenschutz zu gewährleisten.

Die obige Kategorisierung (Taxonomie) der Big-Data-Technologien wurde einem Leitfaden des deutschen IT-Verbandes Bitkom entnommen, den der Autor an dieser Stelle auch zur weitergehenden Lektüre zum Thema Big Data nur empfehlen kann [1].

Cluster-Computing auf Commodity-Hardware macht Big Data erschwinglich

Computer-Cluster und deren Management bilden die Grundlage für viele der durch Big Data neu eingeführten Technologien, speziell auch für Apache Hadoop. Ein Computercluster ist eine Anzahl von vernetzten Computern, die große Aufgaben verteilt erledigen können. Durch Cluster können sowohl die Verfügbarkeit der Rechen- und Speicherkapazität als auch die Performanz bei der Berechnung gesteigert werden.

Statt des Einsatzes von hochspezialisierter und teurer High-End-Hardware konnten durch die Bildung von Computerclustern auf der Basis von relativ einfacher Standard-PC-Hardware (Commodity Hardware) die Kosten für solche Cluster dramatisch gesenkt und damit Big-Data-Anwendungen erst erschwinglich gemacht werden.

Ebenfalls eine wichtige Schlüsselrolle für den Erfolg von Big Data spielte das ursprünglich von Google erfundene MapReduce-Verfahren (Bild 1) [2]. Dieses Verfahren ist im hohen Maße dazu geeignet, sehr große Datenmengen, die auf verschiedenen Rechnerknoten in einem Computercluster verteilt sind, gleichzeitig hochparallel zu durchsuchen und auszuwerten. Die Verarbeitung der Daten läuft lokal dort, wo die Daten liegen. Dies reduziert den Netzwerkverkehr und beschleunigt die Verarbeitung. Die Anforderungen an die eingesetzten Rechner sind dabei nicht sehr hoch, es reicht relativ günstige Commodity Hardware. Das Verfahren kompensiert die dadurch unvermeidlichen Ausfälle von einzelnen Rechnerknoten aber automatisch.

Bildergalerie

Die Eingangsdaten müssen nicht strukturiert sein. Sie können in flachen Dateien abgelegt werden, z. B. in textbasierten Logfiles oder CSV-Dateien. Bei der Ablage der Daten muss nicht schon über die zukünftige Verwendung nachgedacht werden. Das Mapping der Rohdaten auf konkrete Datenstrukturen erfolgt je nach Aufgabenstellung anwendungsfallbezogen im Java-Code. Der Einsatz von Java als Implementierungssprache für MapReduce-Algorithmen garantiert darüber hinaus höchste Flexibilität und ein breites Ökosystem an Werkzeugen und vorhandenen Entwickler-Skills.

Das MapReduce-Verfahren – einfach, aber wirkungsvoll

MapReduce basiert auf einem sehr einfachen Grundprinzip, auf dem aufbauend sich aber sehr komplexe Abfrage- und Analysemethoden implementieren lassen. Ein großes Problem wird in viele kleinere Arbeitsaufgaben (engl.: jobs) aufgeteilt und in einem Computercluster verteilt verarbeitet. Die Ergebnisse werden dann gesammelt und in einem Report dargestellt. Das Verfahren besteht im Prinzip aus drei Verarbeitungsstufen, die aber bei Bedarf auch mehrfach und ineinander verschachtelt abgearbeitet werden.

In der Stufe „Map“ werden die Daten zunächst aus den lokalen Datenspeichern nach bestimmten Kriterien gelesen und für die Weiterverarbeitung in Listen bereitgestellt. Diese Verarbeitung erfolgt hochparallel auf allen verfügbaren Rechnerknoten und so, dass die Jobs auf den Knoten ausgeführt werden, wo auch die entsprechenden Daten liegen. In der Stufe „Shuffle“ werden die Daten vom System automatisch so in Untermengen sortiert, dass die anschließende Auswertung erfolgen kann.

In der abschließenden Stufe „Reduce“ werden die Analyseergebnisse über die jeweiligen Untermengen hinweg berechnet. Auch diese Aufgabe kann wieder parallel auf mehreren Rechnern ausgeführt werden.

Dem bewährten ETL-Prinzip folgend (extract, transform, load) wurden die Daten bei einem klassischen Data-Warehouse-Ansatz immer gleich in die strukturierte Form gebracht, die der zu erwartenden Nutzung der Daten entsprach. Bei explorativen Analyseanwendungen weiß man im Vorhinein aber noch gar nicht, wie die Daten zukünftig genutzt werden sollen und wie ihre Struktur aussehen muss. Deswegen folgt MapReduce eher einem ELT-Prinzip (extract, load, transform).

Die Rechenknoten lesen die Daten immer in der ursprünglichen Eingangsstruktur ein und transformieren sie in die gerade erforderliche Ausgangsstruktur. Dadurch lassen sich beliebig viele Ausgangsstrukturen parallel unterstützen, jeweils implementiert durch einen Satz dynamisch ladbarer Ausführungskomponenten, die speziell für die jeweilige Analyseaufgabe entwickelt oder generiert werden. Neue Ausgangsstrukturen können jederzeit durch neue Komponenten unterstützt werden, ohne dass die zugrunde liegende Datenbasis komplett transformiert werden muss.

Die Apache-Hadoop-Architektur

Apache Hadoop ist eine freie, in Java geschriebene Plattform für skalierbare, verteilt in Clustern arbeitende Softwarelösungen. Es wird von der Open-Source-Organisation Apache Foundation gepflegt und weiterentwickelt [3]. Apache Hadoop basiert ursprünglich auf dem zuvor beschriebenen MapReduce-Algorithmus sowie auf Vorschlägen des Google-Dateisystems. Zwischenzeitlich gibt es neben MapReduce aber auch weitere Implementierungen, die vor allem in der Echtzeitverarbeitung besser funktionieren als das eher Batch-orientierte MapReduce.

Um Apache Hadoop herum hat sich ein umfangreiches und stetig wachsendes Ökosystem von zusätzlichen Komponenten, Frameworks und Werkzeugen gebildet. Einige gehören zum Apache-Hadoop-Projekt, andere sind unabhängige Apache-Projekte, die aber eng mit Hadoop verknüpft

sind. Nicht zuletzt dank seiner Verfügbarkeit als Open-Source-Lösung ist Hadoop wohl das bekannteste und auch meistgenutzte Framework für Big-Data-Projekte. Auch fast alle Anbieter traditioneller IT-Lösungen bieten inzwischen Integrationen mit Apache Hadoop zumindest als Option mit an.

Bildergalerie

Bild 2 gibt einen Überblick über wichtige Open-Source-Frameworks und Werkzeuge im Umfeld von Apache Hadoop. Die Abbildung ist an eine Darstellung von Hortonworks angelehnt, einem führenden Anbieter von integrierten Hadoop-Plattformen [4]. Sie erhebt jedoch keinen Anspruch auf Vollständigkeit, denn die Open-Source-Community bringt permanent neue Projekte und Entwicklungen zum Start, die teilweise auch starke Überlappungen in ihrer Zielsetzung und Funktionalität haben. Die Hadoop-Plattform befindet sich dadurch ständig im Wandel, Bestehendes wird oft durch neue, bessere Implementierungen ersetzt.

Den Kern von Hadoop bilden die folgenden beiden Module:

  • HDFS (Hadoop Distributed File System) ist ein verteiltes Dateisystem, das den schnellen Zugriff auf Anwendungsdaten auf verteilten Rechnern ermöglicht. Das System ist redundant ausgelegt, d. h., alle Daten werden auf 2 bis 3 Rechnerknoten gleichzeitig abgelegt. Der Ausfall eines Knotens wird vom System erkannt und automatisch durch erneute Replikation der ausgefallenen Datenkopien auf einen anderen Knoten repariert.
  • YARN ist ein Framework zum Planen von Verarbeitungsaufgaben und zum Verwalten der Ressourcen eines Computerclusters. YARN schafft eine virtuelle Ressourcenstruktur und abstrahiert damit von der tatsächlich verwendeten physikalischen Rechner- und Speicherarchitektur. Dadurch können die im Hadoop-Umfeld üblichen Analyselösungen auch auf andere Speichermodelle als HDFS aufgesetzt werden.

Für die Abfrage und Analyse von Daten stehen eine Vielzahl von spezialisierten Werkzeugen zur Verfügung:

  • Das Modul MapReduce ist eine auf YARN basierende Implementierung des von Google veröffentlichten MapReduce-Verfahrens.
  • Hive ist ein Data-Warehouse-artiger Überbau für Hadoop. Es unterstützt SQL-Abfragen und Standards wie ODBC und ermöglicht dadurch die einfachere Einbindung von Hadoop in bestehende Werkzeuglandschaften für Reporting und interaktive Auswertungen.
  • Pig bietet eine skriptbasierte, prozedurale Alternative zu Hive. Mit der in Pig enthaltenen Sprache Latin können direkt Anfragen an Hadoop formuliert werden.
  • Tez ist ein erweiterbares Framework für YARN-basierte Dataverarbeitungs- Applikationen, das gegenüber MapReduce eine deutlich verbesserte Performance besitzt. Pig und Hive bauen jetzt auf Tez auf.
  • HBase ist eine NoSQL-Datenbank, basierend auf HDFS aus der Klasse der Column-Stores.
  • Accumulo ist ein verteilter Key-Value-Store (NoSQL).
  • Phoenix ist eine relationale Datenbank-Engine, die Online-Transaktionen auf der Basis von HBase ermöglicht.
  • Cassandra ist ein weiteres NoSQL-Datenbanksystem aus der Klasse der Key-Value-Stores.
  • Storm ist ein Framework für Complex Event Processing.
  • Solr ist eine Plattform für Volltextsuche auf in Hadoop gespeicherten Daten.
  • Spark ist ein eigenständiges Framework für Cluster-Computing. Es kann auf Apache Hadoop aufsetzen, funktioniert aber auch ohne Hadoop auf alternativen Datenablagesystemen. Spark verfolgt einen In-Memory-Ansatz, umfasst eigene Bibliotheken für Machine Learning, Streaming und Graphenberechnung und basiert auf und verwendet dazu die Programmiersprache Scala. Spark verdrängt im Bereich Machine Learning auch immer mehr das ältere, direkt auf MapReduce aufsetzende Mahout. Die Datenintegration mit externen Systemen wird durch die folgenden Komponenten unterstützt:
  • Sqoop ermöglicht den effizienten Batch-Transfer von großen Datenmengen aus relationalen Datenbanksystemen nach Hadoop.
  • Flume ermöglicht den effizienten Transfer von stream-basierten Logging-Daten nach Hadoop.
  • Kafka ist ein verteiltes und skalierbares Publisher-Subscriber-Messaging-System zur Verarbeitung von Datenströmen.
  • Das in der Unix- und Linux-Welt dominierende Dateisystem NFS kann mit einem Gateway in Hadoop integriert werden.
  • WebHDFS bietet eine umfangreiche REST API, die den Remote-Zugriff auf HDFS aus jeder beliebigen Umgebung erlaubt.

Für die Themen Data Governance und Datensicherheit bieten die folgenden Komponenten Unterstützung:

  • Ranger ist ein Framework zur Bereitstellung, Verwaltung und Überwachung eines umfassenden Datenschutzes für die Hadoop-Plattform.
  • Knox stellt ein kontrollierbares REST-basiertes Gateway für die Interaktion mit Apache-Hadoop-Clustern bereit, inklusive Mechanismen für Authentifizierung, Autorisierung, Single-Sign-On und Auditing.
  • Atlas ist ein Framework für Data Governance und Metadaten und bietet skalierbare und erweiterbare Basisdienste zur Implementierung von Governance-Regeln innerhalb eines Hadoop-Clusters.
  • HDFS Encryption implementiert eine transparente Ende-zu-Ende-Verschlüsselung sowohl für ruhende als auch für transportierte Daten.
  • Falcon ist ein Framework zum effizienteren Verwalten der Lebenszyklen von Daten in Hadoop-Clustern. Auch für den Betrieb (Operations) eines Hadoop-Clusters gibt es entsprechende Unterstützung:
  • Ambari ist ein Framework zum Bereitstellen, Verwalten und Überwachen von Hadoop-Clustern. Es besteht aus APIs und Web UI.
  • Zookeeper unterstützt verteilte und hochverfügbare Konfigurationsdienste und Registries für Konfigurationsdaten.
  • Oozie ist ein System zur Planung von Workflows für die Verwaltung von Hadoop-Jobs.

Zusätzlich gibt es Web-basierte Werkzeuge für die Interaktion mit dem Hadoop-Cluster:

  • Zeppelin ist ein Web-basiertes Werkzeug für die interaktive Datenanalyse.
  • Ambari User Views bieten eine grafische Unterstützung bei der Verwaltung von Cluster-Ressourcen.

Die Vielfältigkeit dieses Hadoop-Ökosystems bietet viele Möglichkeiten, stellt aber auch höchste Anforderungen an die IT-Kenntnisse eines Big-Data-Projektteams, wenn es darum geht, die vielen Teilkomponenten miteinander zu integrieren und entsprechend des Einsatzziels zu konfigurieren. Deshalb haben sich inzwischen einige Anbieter rund um diese Open-Source-Frameworks etabliert, die bereits vorkonfigurierte Lösungen als Appliances oder verwaltete Cloud-Services als kommerzielle Lösung anbieten.

NoSQL-Datenbanken als Alternative zu RDBMS

Relationale Datenbanken (engl.: Relational Database Management Systems, RDBMS) haben lange Zeit die Datenverarbeitung dominiert und werden es auch in vielen Bereichen weiter tun. Sie stoßen jedoch aufgrund ihrer Architektur bei sehr großen Datenmengen jenseits des Terabyte-Bereichs an ihre Grenzen oder werden zu teuer aufgrund damit verbundener Hardwareanforderungen – speziell dann, wenn sich die Daten gleichzeitig schnell ändern und trotzdem schnell abfragbar sein sollen. Prinzipiell lassen sich relationale Datenbanken auch weniger einfach in einem Cluster verteilen, obwohl es auch hier Konzepte wie Sharding und Partitioning gibt, die dies unterstützen.

Die etablierten RDBMS bekommen deswegen zunehmend Konkurrenz durch eine ganze Reihe von alternativen spezialisierten Datenspeicherarchitekturen, die unter dem Oberbegriff NoSQL zusammengefasst werden. Interessanterweise bieten fast alle diese Datenbanken auch eine SQL-ähnliche Abfragesprache, um die Integration mit bestehenden Reporting-Systemen zu vereinfachen.

Das „No“ in NoSQL steht eher für „not-only SQL“ und nicht für „kein SQL“. NoSQL-Datenbanken bieten für bestimmte Anwendungsfälle schnellere und/oder kostengünstigere Lösungen an, weil sie zum Beispiel Kompromisse bei der Konsistenz und der Flexibilität zugunsten einer erhöhten Performance und leichteren Skalierbarkeit über mehrere Knoten hinweg eingehen. Meist setzen sie auch keine hochspezialisierten Serverarchitekturen mit hoher Redundanz von Teilkomponenten voraus, die Systeme funktionieren auch mit günstiger Commodity-Hardware.

Bildergalerie

NoSQL-Datenbanken lassen sich in folgende Grundkategorien einteilen, wobei die Grenzen zwischen diesen Kategorien fließend sind:

  • Key-Value Stores bieten einfache Verzeichnisse von Schlüsseln und Werten. Sie eignen sich sehr gut für die Implementierung von Caches für verteilte Prozesse, wie man sie typischerweise oft bei Web-Anwendungen mit mehreren parallel betriebenen Web-Servern findet. Beispiele: Redis, Memcached, Amazon DynamoDB.
  • In einem Column-Oriented Store werden die Daten spaltenweise sortiert abgelegt. Das beschleunigt Anwendungen wie die Aggregation von Werten über einen längeren Zeitraum. Column-Stores eignen sich gut für das Speichern von Zeitreihen. Beispiele: Cassandra, HBase, Accumulo, Hypertable.
  • In Document-Oriented Stores werden ganze Dokumente als Texte in der Datenbank abgelegt. Dabei handelt es sich oft um XML- oder JSON-Formate, die strukturierte Daten enthalten. Jedes Dokument kann komplett anders aufgebaut sein und innerhalb des Dokuments beliebige Unterstrukturen bilden. Dadurch entfallen die Einschränkungen auf bestimmte Felder. Document-Stores bieten spezifische APIs, die auch die effiziente Suche innerhalb der Dokumente ermöglichen. Beispiele: MongoDB, Couchbase, Amazon DynmaoDB, CouchDB.
  • Graphendatenbanken werden verwendet, um Graphen zu repräsentieren, die aus Knoten (Objekte) bestehen, die über eine endliche Anzahl Kanten (Beziehungen) miteinander verbunden sind. Sie finden ihren Einsatz bei sozialen Netzwerken, in der Tourenplanung oder auch beim Netzwerkmanagement. Beispiele: Neo4j, OrientDB, Titan, Virtuoso.

Aber auch bei relationalen Datenbanksystemen bleibt die Entwicklung nicht stehen. Viele der oben beschriebenen Ansätze werden heute auch als Zusatzfunktionen in die traditionellen RDBMS integriert, so dass auch diese sich immer stärker für einen Einsatz in Big-Data-Anwendungen qualifizieren. Ein Microsoft SQL Server 2016 unterstützt z.B. In-Memory Tables, Column Stores und mit Polybase auch polystrukturierte Daten.

In-Memory-Datenbanken

Ein alternativer Ansatz, um große Datenmengen noch deutlich schneller analysieren zu können, sind In-Memory-Datenbanken. Da Hauptspeicher (RAM) immer günstiger wird, können terabytegroße Datenbanken komplett im Hauptspeicher gehalten werden. Der im Vergleich zum Hauptspeicherzugriff langsamere Festplattenzugriff entfällt beim Lesen und Schreiben. Zusätzlich können zeilen- und spaltenorientierte Speicherverfahren kombiniert werden, um so je nach Anwendungsfall noch bessere Performancewerte zu erhalten.

Normalerweise speichern relationale Datenbanken ihre Daten auf Festplatten. Bei In-Memory- Datenbanken werden alle Daten im flüchtigen Hauptspeicher gehalten. Vor Datenverlust beim Ausfall eines Knotens schützen zyklische Snapshots des kompletten Speicherabbildes und ständig aktuelle Transaktions-Logs mit allen Änderungen zwischen den Snapshots, die wiederum auf Festplatte gespeichert werden.

Der führende ERP-Hersteller SAP hat mit HANA eine solche In-Memory-Datenbank komplett neu entwickelt und hofft so, neben den technischen Vorteilen sicherlich auch die starke Abhängigkeit ihrer ERP-Systeme von den Datenbanken des direkten Wettbewerbers Oracle reduzieren zu können.

Streaming und Complex-Event-Processing analysieren Datenströme in Echtzeit

MapReduce-Verfahren wie Hadoop funktionieren gut mit ruhenden Daten. Doch diese Herangehensweise ist nur eingeschränkt geeignet für die Echtzeitanalyse von sich sehr schnell ändernden Daten aus verschiedensten Quellen, da die entsprechenden Ladezeiten zu lange sind. Deshalb gibt es parallel dazu spezialisierte Verfahren, die direkt auf ankommenden Datenströmen arbeiten und diese analysieren.

Beim Streaming werden nicht strukturierte Daten, z. B. Video- oder Audioquellen oder auch Textfeeds, in einem Cluster in Echtzeit hochparallel verarbeitet. Dabei werden die ankommenden Daten mit Mustererkennungsverfahren untersucht. Beim Complex-Event-Processing werden Daten aus verschiedenen Datenströmen in zeitlich geordneter Folge miteinander verknüpft und verarbeitet. Dabei werden die Daten typischerweise über zeitgesteuerte Fenster aggregiert.

Auf den innerhalb eines Fensters liegenden Datenpunkten können Aggregationen, Gruppierungen und Joins wie auf den Tabelleneinträgen einer relationalen Datenbank angewendet werden.

Machine Learning erlaubt Zukunftsprognosen

Maschinelles Lernen ist eine Art von Künstlicher Intelligenz, die Computern die Fähigkeit verleiht, aus Daten zu lernen, ohne explizit programmiert zu werden. Maschinelles Lernen fokussiert dabei auf die Entwicklung von Computerprogrammen, die sich selbst automatisch beibringen, wie sie mit neuen Daten umgehen müssen, basierend auf der Erfahrung mit bereits bekannten Daten.

Mittels Maschinellem Lernen trainierte Algorithmen können dann Aussagen darüber treffen, wie sich die Zukunft wahrscheinlich entwickeln wird – wobei die Betonung auf „wahrscheinlich“ liegt, denn solche Vorhersagen folgen im Allgemeinen statistischen Wahrscheinlichkeitsmodellen und erlauben selten eine einhundertprozentige Sicherheit. Man spricht auch von voraussagender Analyse (engl.: Predictive Analytics). In einer als Prescriptive Analytics bezeichneten nächsten Evolutionsstufe sollen solche Algorithmen nicht nur vorhersagen, wie die Zukunft aussehen wird, sondern auch mögliche Handlungsoptionen und deren Auswirkungen aufzeigen und entsprechend Handlungsempfehlungen bereitstellen.

Bis vor einigen Jahren galt Künstliche Intelligenz (KI) als ein Thema, das nie die hohen Erwartungen erfüllen konnte, die in den 80er- und 90er-Jahren in das Thema gesetzt wurden. Durch die zwischenzeitlich erzielten Fortschritte in der Rechenleistung, verfeinerte Verfahren und auch geeignetere Anwendungsfälle gilt diese Aussage so nicht mehr.

Wenn ein Google AlphaGo den weltbesten Go-Spieler deklassiert oder wenn ein Google Car den Passagier ohne aktive Fahrerunterstützung hoffentlich sicher an sein Ziel bringt, dann ist immer auch Maschinelles Lernen (engl.: Machine Learning) mit im Spiel. Ein solcher Learning-Algorithmus durchsucht Daten nach zuvor erlernten Mustern und führt dann die dazu passenden Aktionen automatisch aus.

Machine-Learning-Algorithmen müssen dazu erst trainiert werden, d.h., das System muss lernen, mit bestimmten Eingangsdaten bestimmte Ausgangsaktionen zu verknüpfen. Man unterscheidet dabei verschiedene Kategorien des Lernens:

  • Beim überwachten Lernen soll das System aus einem Satz von beispielhaften Eingangs- und dazugehörigen bekannten Ausgangswerten Regeln ableiten, die dann aus beliebigen Eingangswerten die passenden Ausgangswerte berechnen.
  • Beim unüberwachten Lernen gibt es keine Unterscheidung von Eingangs- und Ausgangswerten; der Algorithmus soll vielmehr in den Daten bestimmte Muster und Strukturen erkennen und daraus neues Wissen ableiten, z. B. indem er die Daten in bestimmte Cluster gruppiert, sodass bestimmte Zusammenhänge sichtbar werden.
  • Beim bestärkenden Lernen versucht das System Aufgaben zu meistern und lernt aus den dabei gemachten positiven und negativen Erfahrungen weiter hinzu.

Bei der Realisierung dieser Lernverfahren kommen verschiedenste Methoden zum Einsatz, deren Erklärungen aber den Rahmen dieses Beitrags sprengen würden. Die bekanntesten Vertreter dieser Verfahren sind Künstliche Neuronale Netze, Regressionsalgorithmen, Entscheidungsbäume, Bayesian-Methoden und Clustering-Algorithmen. Der Reiz des Maschinellen Lernens liegt auch darin, dass dafür häufig keine riesigen Datenmengen benötigt werden. Viel wichtiger ist, dass die Qualität der Eingangsdaten sorgfältig untersucht und gegebenenfalls bereinigt wird, damit die Algorithmen nicht falsch trainiert werden.

Bildergalerie

Programmiersprachen für Data Scientists

Big-Data-Lösungen sind auch Softwarelösungen, und man benötigt zu deren Implementierung entsprechende Programmiersprachen. Die Spannbreite der im Umfeld von Big Data eingesetzten Programmiersprachen und entsprechender integrierter Entwicklungsumgebungen (IDE) ist groß. Die Hadoop-Plattform selbst ist in der Programmiersprache Java implementiert, und auch individuelle MapReduce-Funktionen werden standardmäßig in Java erstellt. Die verbreitetste Standardumgebung zur Entwicklung von Java-Anwendungen allgemein ist nach wie vor die Open-Source-Lösung Eclipse IDE; dies gilt auch für Big-Data-Lösungen.

Es gibt aber inzwischen auch für viele andere Programmiersprachen entsprechende Software Development Kits (SDK), um damit MapReduce-Funktionen zu implementieren. Auch in Visual Studio von Microsoft lassen sich komfortabel MapReduce-Funktionen in der Programmiersprache C# implementieren und dann nach HDInsight deployen, der kommerziellen Bereitstellung der Hadoop-Plattform auf Microsoft Azure.

Oft eingesetzt wird auch R, eine besonders bei Statistikern beliebte Open-Source-Sprache. Da es eine riesige Anzahl an öffentlich zugänglichen Bibliotheken gibt, wird R besonders gern für das explorative Arbeiten verwendet, bei dem den Daten ihre Geheimnisse entlockt werden sollen. Mit der ebenfalls freien RStudio IDE kann man sich Schritt für Schritt in die Besonderheiten der Sprache einarbeiten und alle Bibliotheken und Funktionen interaktiv ausprobieren.

Ähnlich beliebt wie R ist Python. Für diese auch in Web-Anwendungen sehr häufig verwendete Skriptsprache gibt es inzwischen auch viele Bibliotheken zur Unterstützung bei der Datenanalyse. Python wird bevorzugt von Data Scientists eingesetzt, die eher aus dem Informatikumfeld kommen. Gegenüber R hat Python vor allem Stärken bei der Implementierung robuster Anwendungen, die in dauerhaft betriebene IT-Lösungen integriert sein müssen. Bei Python gibt es keine einzelne dominierende IDE wie bei R, aber durch entsprechende Erweiterungen lassen sich IDEs wie Eclipse oder Visual Studio auch leicht für die Programmierung mit Python nutzen.

Die objektorientierte Programmiersprache Scala wird vor allem im Umfeld von Spark eingesetzt, hier kann jedoch auch mit Java oder Python gearbeitet werden.

3.10 Interaktive Werkzeuge für Data Scientists und Power-User Ein großer Anteil der Arbeit eines Data Scientists ist explorativer Natur. Er stellt eine These auf und versucht sie anhand der vorliegenden Daten zu belegen oder er versucht anhand entdeckter statistischer Abhängigkeiten entsprechende Erklärungsmodelle aufzustellen. Neben leistungsfähigen kommerziellen Produkten gibt es auch eine Vielzahl bewährter Open-Source-Werkzeuge, die dieses explorative Arbeiten des Data Scientists unterstützen. Neben dem bereits erwähnten RStudio sind hier besonders KNime und RapidMiner zu erwähnen.

Data Scientists sind sehr gefragt, und dank des Booms um Big Data gibt es wohl zu wenige davon. Deshalb gibt es neben diesen Werkzeugen für den ausgebildeten Data Scientist auch mehr und mehr interaktive und stark grafisch orientierte Visualisierungswerkzeuge für den ambitionierten Power-User. Diese unterstützen ihn dabei, Informationen aus den vorhandenen Datenquellen herauszuziehen, ohne selbst ein ausgebildeter Statistiker zu sein. Prominente kommerzielle Beispiele dieses Genres sind Tableau, Qlikview oder Microsoft Excel.

Data Lakes machen das klassische Data Warehouse Big-Data-fähig

Lange bevor Big Data zum Trendthema wurde, waren Data Warehousing und Data Mining das Mittel der Wahl, um unternehmensweit Daten aus verschiedensten Systemen zusammenzuführen und darauf Auswertungen zu machen. Ein Data Warehouse bietet eine integrierte Sicht der Daten, um darauf Analysen auszuführen. Die Daten werden typischerweise im Batchbetrieb zeit-oder ereignisgesteuert aus den verschiedensten Datenquellen kopiert und dann miteinander verknüpft.

Auf diesen Daten werden dann Aggregationen von betrieblichen Kennzahlen und Analysen mittels Data Mining ausgeführt. Data Mining basiert dabei auf ähnlichen statistischen Verfahren und mathematischen Modellen wie Machine Learning. Bei sehr großen und sich oft ändernden Datenmengen stießen diese Systeme in der Vergangenheit jedoch an ihre Grenzen, was letztendlich zu den bereits beschriebenen neuen technologischen Lösungen geführt hat. Für viele Anwendungsfälle, bei denen das Datenvolumen nicht zu groß oder die geforderte Aktualität nicht zu zeitnah ist, reichen diese klassischen Data-Warehouse-Ansätze aber vollkommen aus, und wo dies nicht der Fall ist, kann auch die Kombination mit zusätzlichen Data Lakes weiterhelfen.

Bildergalerie

Data Lakes sind riesige Datenspeicher für Unternehmensdaten, in denen strukturierte, unstrukturierte und semi-strukturierte Daten gleichzeitig abgelegt werden können, ohne dass zunächst klar wäre, was genau mit den Daten angefangen werden soll. Hadoop und HDFS sind gängige Technologien, um solche Data Lakes zu implementieren. Durch die geschickte Kombination von Data Lakes mit den Data-Warehouse-Konzepten kann die Effizienz solcher Lösungen gesteigert werden. Nur noch die für die bekannten Auswertungsmechanismen und Anwendungen benötigten Daten kommen in das teurere, aber robustere Data Warehouse. Die anderen noch unerschlossenen Rohdaten verbleiben im günstigen Massenspeicher des Data Lake, bis sich dafür eine Verwendung ergibt.

Dipl.-Inform. (FH) Klaus Hübschle studierte Informatik an der Fachhochschule Furtwangen und startete noch während des Studiums als Softwareentwickler bei der M&M Software GmbH. In seiner beruflichen Laufbahn hat er seitdem im Unternehmen leitende Rollen in zahlreichen Beratungs- und Softwareentwicklungsprojekten in verschiedensten Bereichen der Automatisierungstechnik ausgeübt. Als geschäftsführender Gesellschafter im Bereich Technik treibt er heute die Ausrichtung des Unternehmens auf die neuen Herausforderungen von Industrie 4.0 und Digitalisierung mit an und setzt Schwerpunkte mit den Themen Cloud-Computing, Big Data, Internet of Things und Assistenzsysteme.

Fachbuch „Industrie 4.0: Potenziale erkennen und umsetzen“ Dieser Beitrag stammt aus den dem Fachbuch „Industrie 4.0: Potenziale erkennen und umsetzen“ von Thomas Schulz (Hrsg.) Das Buch bietet dem Professional einen praxisorientierten und umfassenden Einblick in die Digitalisierung der Fertigung und der Produktion. Das Buch „Industrie 4.0“ kann hier versandkostenfrei oder als eBook bestellt werden.

Literatur/Quellen

[1] Leitfaden: Big-Data-Technologien – Wissen für Entscheider. Berlin: Bitkom e.V., 2014. https://www.bitkom.org/noindex/Publikationen/2014/Leitfaden/Big-Data-Technologien-Wissen-fuer-Entscheider/140228-Big-Data-Technologien-Wissen-fuer-Entscheider.pdf (abgerufen am 09.05.2017).

[2] DEAN, JEFFREY; GHEMAWAT, SANJAY: MapReduce: Simplified Data Processing on Large Clusters. Mountain View: Google Inc., 2004.https://static.googleusercontent.com/media/research.google.com/de//archive/mapreduce-osdi04.pdf (abgerufen am 09.05.2017).

[3] Welcome to Apache Hadoop! Delaware: Apache Software Foundation, 2017. http://hadoop.apache.org (abgerufen am 09.05.2017).

[4] Hortonworks Data Platform (HDP). Santa Clara: Hortonworks Inc. 2017. https://de.hortonworks.com/products/data-center/hdp (abgerufen am 09.05.2017).

Dieser Artikel stammt von unserem Partnerportal Industry of Things. Verantwortlicher Redakteur: Jürgen Schreier

(ID:45191526)