Suchen

Scalable Advanced Massive Online Analysis Datenströme analysieren mit SAMOA

| Autor / Redakteur: Thomas Joos / Nico Litzel

Apache SAMOA ist eine Plattform für das Mining großer Datenströme. Die Lösung bietet eine Sammlung von verteilten Streaming-Algorithmen für die gängigsten Data-Mining- und Machine-Learning-Aufgaben.

Firma zum Thema

Apache SAMOA verfügt über eine erweiterbare Architektur, die es ermöglicht, SAMOA auf mehreren verteilten Stream-Verarbeitungsmaschinen wie Storm, S4 und Samza auszuführen.
Apache SAMOA verfügt über eine erweiterbare Architektur, die es ermöglicht, SAMOA auf mehreren verteilten Stream-Verarbeitungsmaschinen wie Storm, S4 und Samza auszuführen.
(Bild: The Apache Software Foundation)

SAMOA (Scalable Advanced Massive Online Analysis) hat den Incubator-Status bei Apache. Zur Sammlung gehören Klassifikation, Clustering, Regression sowie die Programmierung von Abstraktionen zur Entwicklung neuer Algorithmen. Apache SAMOA verfügt über eine erweiterbare Architektur, die es ermöglicht SAMOA auf mehreren verteilten Stream-Verarbeitungsmaschinen wie Storm, S4 und Samza auszuführen. SAMOA ist in Java geschrieben, Open Source und unter unter der Apache Software License Version 2.0 verfügbar. Apache SAMOA unterstützt die Write-Once-Run-Anywhere (WORA) Architektur. Diese ermöglicht eine nahtlose Integration mehrerer Distributed Stream Processing Engines (DSPEs) in das Framework.

Große Datenmengen sind in nahezu allen Geschäftsbereichen sehr verbreitet und ermöglichen Planungen, die Unternehmen nutzen können, um bessere Produkte oder Dienstleistungen zu bieten. Große Daten sind definiert als Datensätze, deren Größe aufgrund der Zeit- und Speicherkomplexität die Fähigkeit typischer Softwarewerkzeuge zur Erfassung, Speicherung, Verwaltung und Analyse übersteigt.

Entwicklung neuer ML-Algorithmen

SAMOA ermöglicht die Entwicklung neuer ML-Algorithmen, ohne sich mit der Komplexität der zugrunde liegenden Streaming-Verarbeitungsmaschinen, also zum Beispiel Apache Storm und Apache S4, auseinanderzusetzen. SAMOA-Entwickler können verteilte Streaming-ML-Algorithmen entwickeln und die Algorithmen in mehreren SPEs ausführen.

Die Struktur von SAMOA im Überblick

Apache SAMOA hilft also dabei Stream-Verarbeitungsalgorithmen einfach und plattformunabhängig zu schreiben. Dabei definiert die Lösung eine eigene Topologie. Dazu gehören folgende Bereiche:

  • Processor
  • Content Event
  • Stream
  • Task
  • Topology Builder
  • Learner

Processor und Content Event (Inhaltsereignis) stellen logische Einheiten dar, um einen Algorithmus zu erstellen. Stream und Task sind die physischen Einheiten, um die verschiedenen Teile des Algorithmus zu verbinden. Der Topology Builder ist eine Verwaltungseinheit, die Buchhaltungsdienste anbietet. Learner ist die Basisschnittstelle für Lernalgorithmen. Verarbeitungselemente sind interne Verpackungen für Prozessoren, die in SAMOA verwendet werden.

Topology Builder, Processors und Streams

Alle physischen Topologieeinheiten werden mit dem Topology Builder erstellt. Das folgende Codeausschnitt zeigt, wie man einen Prozessor zur Topologie hinzufügt:

Processor = new ExampleProcessor(); builder.addProcessor(processor, paralellism);

Die Methode „addProcessor()“ des TopologyBuilder wird verwendet, um den Prozessor hinzuzufügen. Das erste Argument ist die Instanz eines Prozessors, der hinzugefügt wird. Das zweite Argument ist der Parallelitätshinweis. Es teilt den zugrunde liegenden Plattformen mit, wie viele parallele Instanzen dieses Prozessors auf verschiedenen Knoten angelegt werden sollen.

Einige Prozessoren erzeugen ihre eigenen Streams und werden als Quelle für eine Topologie verwendet. Sie verbinden sich mit externen Quellen, ziehen Daten und stellen sie der Topologie in Form von Streams zur Verfügung.

Ein Stream ist eine physische Einheit der SAMOA-Topologie, die verschiedene Prozessoren miteinander verbindet. Ein Stream kann eine einzige Quelle, aber viele Ziele nutzen. Ein Prozessor, der die Quelle eines Streams ist, besitzt den Stream.

Aufgaben sind vergleichbar mit einem Job in Hadoop. Die Aufgabe ist eine Ausführungseinheit. Innerhalb einer Aufgabe muss eine Topologie definiert werden. SAMOA kann nur Klassen ausführen, die eine Task-Schnittstelle implementieren.

Apache SAMOA testen

Um Apache SAMOA in einem Netzwerk zu testen, kann die Lösung direkt aus Github heruntergeladen werden. Dazu werden folgende Befehle verwendet:

git clone http://git.apache.org/incubator-samoa.gitcd incubator-samoamvn package

Die Integration in Apache Storm beschreiben die Entwickler in Ihrer Dokumentation zur Lösung. Auch die Integration in Apache S4 und Apache Samza beschreiben die Entwickler in der Doku. Die ersten Schritte zur Einrichtung von SAMOA sind auf der Getting-Started-Seite zu finden.

Entwicklung neuer Aufgaben in Apache SAMOA

Eine Aufgabe ist eine mit dem maschinellen Lernen zusammenhängende Aktivität, zum Beispiel eine spezifische Bewertung für einen Klassifizierer. Eine Aufgabe entspricht einer Topologie in SAMOA. Eine einfache Aufgabe besteht aus einem Quellprozessor, einem Zielprozessor mit einer Parallelitätshinweiseinstellung und einem Stream, der die beiden verbindet. Der Quellprozessor erzeugt eine zufällige Ganzzahl, die an den Zielprozessor gesendet wird. Eine Beispiel-Aufgabe ist in der Dokumentation zu finden.

(ID:46063492)

Über den Autor

 Thomas Joos

Thomas Joos

Freiberuflicher Autor und Journalist