Apache Mahout - Big Data meets Machine Learning

Apache Mahout ist eine Bibliothek von skalierbaren Maschinenlernalgorithmen, die auf Apache Hadoop und MapReduce basiert. Der Vorteil der Lösung besteht darin, dass sie auch in Big Data-Umgebungen funktioniert. Apache Mahout ermöglicht maschinelles Lernen zusammen mit Big Data-Umgebungen, und kann dazu direkt mit Apache Hadoop zusammenarbeiten. Auch statistische Berechnungen lassen sich durchführen.

Mahout ist also eine wichtige Open-Source-Software, wenn es darum geht, Software im Bereich der künstlichen Intelligenzen zu entwickeln. Die Lösung arbeitet mit anderen Big Data-Produkten, zum Beispiel Apache Spark zusammen. Die interaktive Shell ermöglicht eine direkte Verbindung in verschiedene Apps. Dazu wird eine Scala-basierte Library verwendet, die ähnlich wie R funktioniert. Diese nutzt Mahout als Domain Specific Language (DSL), die sich mit R vergleichen lässt. Wer R kennt, kommt mit Mahout schnell zurecht. Spark und Flink lassen sich parallel nutzen. Code, der mit der DSL für Spark geschrieben wurde, funktioniert meistens auch mit Flink.

Apache Mahout lässt sich in Big Data Apache-Infrastrukturen integrieren.
Apache Mahout lässt sich in Big Data Apache-Infrastrukturen integrieren.
Foto: Mahout

Mahout hat lineare Algebra im Fokus. Die verteilte Zeilenmatrix (distributed row matrix) kann als Datentyp in Mahout genutzt werden. Mahout ist in Apache Zeppelin integriert. Dabei handelt es sich um eine Lösung zur vereinfachten Sammlung und Analyse von Daten aus Big Data-Systemen. Visualisierungen aus ggplot, einem Plot-System, und matplotlib, einer Programmbibliothek für Python, lassen sich in Mahout ebenfalls nutzen. Beschleunigen lassen sich die Berechnungen auch durch Grafik-CPUs im Rechner.

Spark MLlib

Spark MLlib ist eine Machine-Learning-Bibliothek, mit der Apache Spark maschinelles Lernen optimal mit seinen anderen Funktionen nutzen kann. Spark MLlib kann mit Java, Scala, Python und R genutzt werden. MLlib nutzt die APIs von Spark und interagiert mit NumPy in Python. Bei NumPy handelt es sich um eine Python-Bibliothek, mit der sich Vektoren, Matrizen und mehrdimensionale Arrays handhaben lassen. ,

R-Bibliotheken lassen sich, zusammen mit Apache Spark und MLlib, ebenfalls nutzen(ab Spark 1.5). Sie können eine beliebige Hadoop-Datenquelle verwenden, um die Integration in Hadoop-Workflows zu erleichtern. Dateisysteme wie HDFS, HBase und lokale Dateien lassen sich parallel verwenden. Dadurch lassen sich Daten für maschinelles Lernen und Daten aus Big Data-Umgebungen verarbeiten und gemeinsam nutzen.

Die Machine Learning-Bibliothek MLlib arbeitet mit Hadoop und Spark zusammen.
Die Machine Learning-Bibliothek MLlib arbeitet mit Hadoop und Spark zusammen.
Foto: Apache Spark

Die Entwickler gehen davon aus, dass die Algorithmen teilweise hundertmal schneller sind als MapReduce. Bei beiden Systemen lassen sich strukturierte und unstrukturierte Daten mit hoher Geschwindigkeit verarbeiten. Wichtig ist das vor allem für Umgebungen im Big Data-Bereich. MLlib enthält Algorithmen, welche besser mit Apache Spark zusammenarbeiten und daher bessere Ergebnisse liefern als die in MapReduce verwendeten One-Pass-Näherungen.

Der Vorteil von MLlib liegt auch darin, dass die Bibliothek überall läuft, wo auch Spark, Hadoop, Apache Mesos und Kubernetes genutzt werden. Cluster lassen sich lokal betreiben, es können aber auch Daten in der Cloud genutzt werden. MLlib läuft auch auf Clustern in der Cloud, die wiederum verschiedene Datenquellen nutzen können.

Spark kann mit MLlib mit seinem eigenständigen Cluster-Modus, auf Amazon AWS (EC2), auf Hadoop YARN, Mesos oder mit Containern und Kubernetes betrieben werden. Daten lassen sich aus HDFS, Apache Cassandra, Apache HBase, Apache Hive und vielen anderen Quellen einlesen.

H2O

Die Open-Source-Software H2O kombiniert Funktionen aus dem maschinellen Lernen mit einer skalierbaren In-Memory-Verarbeitung für Big Data. Maschinelles Lernen kann in diesem Fall in Kombination mit Analysen aus Big Data genutzt werden. In H2O wird die Reaktionsfähigkeit der In-Memory-Verarbeitung mit der Fähigkeit zur schnellen Serialisierung zwischen Knoten und Clustern kombiniert. H2O lässt sich schnell und einfach skalieren. Die Verwaltung erfolgt zunächst mit einer webbasierten Flow GUI. POJOs lassen sich bereitstellen, um Daten für genaue Vorhersagen in jeder Umgebung zu erhalten. Ein POJO ist ein Java-Objekt, das keinerlei Einschränkungen aufweist.

H2O kombiniert Funktionen aus dem maschinellen Lernen mit einer skalierbaren In-Memory-Verarbeitung für Big Data.
H2O kombiniert Funktionen aus dem maschinellen Lernen mit einer skalierbaren In-Memory-Verarbeitung für Big Data.
Foto: H2O

H2O kann direkt auf HDFS zugreifen, aber ebenso auf Daten aus Yarn, einem Big Data-Analyse-System, und MapReduce. H2O lässt sich zudem direkt in Amazon AWS-EC2-Instanzen starten. Es kann mit Hadoop über Java kommunizieren, aber auch Python, R und Scala lassen sich nutzen, inklusive aller unterstützten Pakete.

Da H2O direkt auf HDFS aufbaut, erzielt die Lösung eine hohe Leistung, wenn HDFS als Speichersystem eingesetzt wird. Das KI-Framework H2O bietet eine Palette an Algorithmen, mit denen sich KI, zusammen mit Big Data und maschinellem Lernen, entwickeln und verwalten lässt. Beispiele sind Deep Learning, Gradient Boosting und Generalized Linear Models. Dabei handelt es sich um Technologien aus dem maschinellen Lernen, mit denen sich zum Beispiel Regressionsanalysen durchführen lassen. Zusammen mit Apache Spark können dadurch auch Berechnungen und Anwendungen in der Cloud genutzt werden. Versicherungsunternehmen nutzen beispielsweise H2O, da hier auch komplexe Berechnungen erstellt werden können.