- IT&Production - https://www.it-production.com -

Schnell ins Internet of Things mit Apache Hadoop

Beispielhaftes IoT-Projekt

Schnell ins Internet of Things mit Apache Hadoop

Nachdem Produzenten schon ihre Waschmaschinen, Kühlschränke und Rollläden IoT-fähig ausliefern, wollen viele auch im eigenen Werk von der Vernetzung profitieren. Anhand eines beispielhaften Projektes klärt dieser Beitrag, wie das schnell und günstig gelingen kann.

 (Bild: ©安琦 王/stock.adobe.com) [1]

(Bild: ©安琦 王/stock.adobe.com)

Folgendes Szenario: Ein mittelständischer Lebensmittelhersteller hat einen umfangreichen Maschinenpark für die Produktion seiner Güter aufgebaut. Das Unternehmen setzt unterschiedliche Maschinen, Technologien und Softwaresysteme ein. Da Lebensmittel produziert werden, müssen beim Herstellungsprozess sowohl interne Verfahrenshinweise beim Umgang mit Rohstoffen, Maschinen und Prozessen als auch gesetzliche Regularien wie die Rückverfolgung von Rohstoffen beachtet werden. Um all diesen Anforderungen gerecht zu werden, sind die Maschinen bereits vernetzt und tauschen ihre Daten mit anderen Systemen für die Produktionssteuerung aus. Für weitere Anwendungen werden die Daten allerdings noch nicht genutzt. Eine konkrete Vorstellung, wie die Sensordaten zukünftig verwendet werden, hat die Geschäftsleitung noch nicht, möchte jedoch in einem agilen Prozess mit dem Aufbau einer IoT-Lösung beginnen.

Analyse der Ist-Situation

Die IT-Abteilung des Unternehmens betreut ein ERP-System, ein CRM-System und diverse Systeme zur Produktionssteuerung. Die Abteilung besteht aus Mitarbeitern, die Erfahrungen in der Programmierung und Datenbanksystemen sowie SQL aufweisen. Die verschiedenen Sensoren können auf unterschiedliche Art und Weise angebunden werden. Manche können ihre Daten als Datei ablegen, andere verfügen über Schnittstellen und wieder andere schreiben ihre Daten in vorhandene kleinere Datenbanken. Über die eigentliche Struktur der Daten ist der IT-Abteilung jedoch nichts bekannt.

Cloud oder On-Premise?

Aufgrund schnell wachsender Datenmengen liegt bei einer IoT-Lösung nahe, cloudbasierte Lösungen zu nutzen. Allerdings gehen diese auch mit zahlreichen organisatorischen Fragen einher, deren Beantwortung unter Umständen das gesamte Projekt verzögern kann. Cloudbasierte IoT-Plattformen haben oft den Nachteil, dass nur standardisierte Daten in ausgewählten Formaten verarbeitet werden können. Aus diesem Grund entscheidet sich das Beispielunternehmen bewusst für eine On-Premise Lösung. Diese muss prinzipiell die folgenden Aufgaben umfassen:

Grundsätzlich sind dazu mehrere Ansätze denkbar. So sind beispielsweise ETL(Extract, Transform, Load)-Werkzeuge meist das erste Mittel der Wahl, wenn es um Datenintegrationsprojekte geht. Zusätzlich wäre für die Speicherung noch eine Datenbank nötig. ETL-Werkzeuge bieten oft eine Art Baukastensystem, durch das sich eigene Programme zusammenstellen lassen. Allerdings erfordert dies – je nach Lösung – eine gewisse Einarbeitungszeit. Neben diesem Ansatz hat sich in den vergangenen Jahren eine weitere Möglichkeit für solche Projekte entwickelt: Die Open-Source-Lösung Apache Hadoop ist gerade in Projekten mit großen Datenmengen weit verbreitet. Dabei handelt es sich um eine Sammlung von verschiedenen Open-Source-Komponenten, die mithilfe verteilter Rechenleistung große Datenmengen speichern und verarbeiten kann. Der Vorteil dabei ist die Flexibilität in Bezug auf die Datenformate. Über verschiedene Komponenten lassen sie sich schnell in eine einheitliche IoT-Plattform integrieren. Die Open-Source-Lösung besteht aus den drei zentralen Komponenten Datenspeicherung (Hadoop Distributed File System, HDFS), Ressourcenverwaltung (YARN, Yet not another Ressource Negotiator) und Datenverarbeitung (MapReduce). Zudem gibt es eine Reihe von Erweiterungen, die für die diese Anforderungen in Frage kommen.

Diese unvollständige Liste hilft, den Aufwand für eine IoT-Integration zu evaluieren und vorzubereiten. (Quelle: Mayato GmbH) [2]

Diese unvollständige Liste hilft, den Aufwand für eine IoT-Integration zu evaluieren und vorzubereiten. (Quelle: Mayato GmbH)

Beispielhaftes IoT-Projekt

Schnell ins Internet of Things mit Apache Hadoop

 (Bild: Mayato GmbH) [3]

(Bild: Mayato GmbH)

Drei zentrale Komponenten

Das Hadoop-System besteht grundlegend aus den drei zentralen Komponenten Datenspeicherung, Ressourcenverwaltung und Datenverarbeitung. Für die Datenspeicherung ist das Hadoop Distributed File System (HDFS) verantwortlich, welches die gespeicherten Daten auf den verschiedenen Computern (Nodes) des Systems ablegt. Damit bei den Ressourcen auf dem Hadoop-Cluster zwischen den Programmen keine Probleme entstehen, gibt es YARN (Yet not another Ressource Negotiator) als Komponente, die die Ressourcen verwaltet. Für die Datenaufbereitung ist MapReduce implementiert, welches ein Programmiermodell darstellt, dass für nebenläufige Berechnungen großer Datenmengen geeignet ist. Zusätzlich hat sich in den letzten Jahren mit Directed-Acyclic-Graph (DAG) ein weiteres Ausführungsverfahren für die Datenverarbeitung entwickelt. Das Hadoop-Ökosystem stellt eine Reihe von Erweiterungen zur Verfügung, die für die oben genannten Anforderungen in Frage kommen. Die Grafik auf der dritten Seite des Beitrages teilt einige Erweiterungen den jeweiligen Anforderungen zu. Es gibt neben den genannten Technologien noch viele weitere, die im Hadoop Umfeld eingesetzt werden können. Dieser Artikel beschränkt sich bewusst auf die zurzeit geläufigsten.

Datenintegration

Apache Sqoop kann für die Übertragung von strukturierten Daten aus relationalen Datenbanken genutzt werden. Sqoop verfügt über keine grafische Benutzeroberfläche, sondern wird über die Kommandozeile bedient. Ein Sqoop-Job besteht dabei aus einem Skript, das durch eine einfache Syntax schnell konfiguriert werden kann. Eine Integration der Daten ist entweder in HDFS oder direkt in HBase bzw. Hive möglich.

Apache Flume kann zum Sammeln, Aggregieren und Verschieben von großen Datenmengen genutzt werden. Gerade die unterschiedlichen Quellen, aus denen Daten gesammelt werden können, machen Flume an dieser Stelle zu einem nützlichen Werkzeug. Ein Flume-Job besteht dabei aus einer Definition der Datenquelle (Source), dem Übertragungsweg (Channel) und des Ziels (Sink). Unter anderem können Daten aus Kafka, NetCat, JMS oder http angebunden und in Ziele wie HDFS, Hive, Kafka oder spezielle Logger geschrieben werden. Als Ergänzungen zu diesen vordefinierten Quellen und Zielen hat der Nutzer die Möglichkeit, den Funktionsumfang durch eigene Quellen und Ziele zu erweitern.

Datenaufbereitung

Apache Hive bietet eine SQL-ähnliche Schnittstelle (HiveQL) an, die es ermöglicht, Datenabfragen analog zu Datenbanksystem zu erstellen. Hierfür können in Hive Tabellen angelegt werden, die den jeweiligen unterliegenden Dateien ein Schema geben. Die Abfragen können in MapReduce, Tez oder Spark Jobs ausgeführt werden. Hierbei werden die SQL-Begriffe in den jeweiligen Quellcode der Ausführungstechnologie umgewandelt. Hive legt die Metadateninformationen über Datentypen der jeweiligen Tabellen in einer eigenen Datenbank, dem Metastore, ab.

Apache Pig bietet dem Anwender die Möglichkeit, Programme auf einer höheren Abstraktionsebene zu erstellen, die in ihren Begrifflichkeiten an SQL erinnert. Die erstellten Programme können als MapRecude, Apache Tez oder Apache Spark Job ausgeführt werden. Die Sprache, in der Pig Programme geschrieben werden, wird Pig Latin genannt. Sie kann mithilfe von User Defined Functions (UDFs) erweitert werden, wobei dem Anwender eine Reihe von Programmiersprachen (u.a. Java, Python) zur Verfügung stehen. Bei Apache Spark handelt es sich um ein Framework, das aus verschiedenen Komponenten besteht und verteilte Rechenleistungen effektiv nutzen kann. Das Framework besteht aus dem Core, der die grundlegenden Infrastruktur-Funktionalitäten bereitstellt. Für die Datenhaltung in Spark ist das sogenannte Resilient Distributed Dataset (RDD) verantwortlich, das den Datenbestand über mehrere Rechner verteilt managen kann. Spark Streaming bietet die Möglichkeit, Datenströme zu verarbeiten. Bei Apache HBase handelt es sich um eine verteilte, nicht relationale Datenbank. HBase ist auf sehr große Datenmengen ausgelegt und kann diese effizient speichern.

Fazit

In unserem Beispiel ging es dem produzierenden Unternehmen darum, schnelle Erfolge bei der ersten Implementierung einer IoT-Plattform zu erzielen und sich gleichzeitig ein hohes Maß an Flexibilität bezüglich der gewählten Ressourcen zu erhalten. Hier empfiehlt sich die Nutzung von Hadoop zur Speicherung der Daten, Sqoop für den Import von Daten aus relationalen Datenbanken und Flume für die Anbindung der zusätzlichen Datenquellen. Diese Daten können in Hive-Tabellen geschrieben und für weitere Anwendungen wie Tableau zur Analyse bereitgestellt werden. Das Aufsetzen der einzelnen Komponenten kann durch die Verwendung einer Hadoop-Distribution wie Cloudera oder Hortonworks beschleunigt werden. Die Erstellung der eigentlichen Beladungsjobs ist mit einem gewissen IT-Know-how schnell erlernbar und kann in bestimmten Bereichen auch automatisiert werden. Durch die Komponentenvielfalt von Hadoop hält sich das Unternehmen die Möglichkeit offen, eine IoT-Plattform zu erschaffen, die auch für zukünftige Szenarien die notwendige Flexibilität bereitstellt und somit Schritt für Schritt mit den Anforderungen wachsen kann.


Patrick Gornig ist Data Warehouse- und ETL-Experte bei Mayato.