Startseite
bigdata

Lucene/Solr Revolution – Workshop Day 1 – BigData

Click Hier wenn du die Social-Plugins aktivieren willst.

Über den Referenten

Ken Krugler ist ein erfahrener Entwickler und Unternehmer, mit mehr als 25 Jahre Erfahrung. Er ist Gründer und Präsident von TransPac Software. Gründer und CTO von Krugle, einer vertikalen Such-Engine für technische Informationen und Quelltext. Außerdem Mit-Begründer des Bixo Web-Mining Projektes und aktiver Committer von Apache Tika.

Erkennen des Problems

Anhand von Beispielen aus der Praxis konnte Ken einleuchtend erklären wie man erkennt, dass man ein Problem vor sich hat, dass man als BigData Problem behandeln sollte. Wie ein Bekannter von ihm sagte: “Entweder man hat bereits Probleme mit der Performance oder sie kommen noch”. Wenn man bei Datenmengen, die nicht mehr auf einen Server passen oder in sinnvoller Zeit bearbeitet werden können, sollte man rechtzeitig auf eine BigData Lösung setzen, da die Datenmenge sicherlich zunehmend wird und man in einer gut konfigurierten BigData Umgebung nahezu linear skalieren kann. Doppelte Datenmenge => doppelte Server und es läuft.

Basis-Technologie

Es gibt in der OpenSource-Welt mittlerweile diverse Technologien um verschiedene Probleme anzugehen. Die Technologie, auf denen hauptsächlich alle Ansätze basieren ist Hadoop.
Hadoop besteht aus 2 Teilen, die zur Lösung von BigData-Problemen notwendig sind:

  1. Speichern von großen Datenmengen
  2. Nebenläufige Verarbeitung der Datenmenge

Einige Probleme denen man sich in Cluster-Umgebungen stellen muss, werden von Hadoop bereits im Keim erstickt. Hadoop kümmert sich um Replikation, so dass kein Byte verloren geht, selbst wenn ein oder mehrere Server während der Verarbeitung ausfallen. Wenn eine Teilaufgabe gerade verarbeitet wird und der Server ausfällt, übernimmt einfach ein anderer Server diese Teilaufgabe und der gesamte Job wird einfach erledigt.

Als Basis hierfür stellt Hadoop ein verteiltes, skalierbares, fehlertolerantes Dateisystem mit dem Namen HDFS (Hadoop Distributes File System) zur Verfügung, welches auf Basis des auf den Servern vorhandenen Dateisystems eine Abstraktionsebene in Chunks zur Verfügung stellt und diese Chunks automatisch auf andere Server repliziert, so dass immer mindestens 2 Kopien des gleichen Chunks im System vorhanden sind, so dass ein Ausfall eines Servers einfach kompensiert wird.

Für die Ausführung der Aufgaben bietet Hadoop ein Framework um MapReduce-Jobs nach dem “Divide & Conquer”-Prinzip auf dem Cluster auszuführen, welche entweder mit Java oder über eine Streaming-Schnittstelle mit diversen anderen Programmiersprachen implementiert werden. Hadoop kümmert sich hierbei darum, dass der auszuführende Code auf alle Nodes deployed wird und verwaltet die parallele Ausführung inkl. Ausfallkompensation, Ergebnis-Aggregation und UI-Verwaltungsoberfläche. Das geniale: es ist möglich Server während der Laufzeit eines Jobs hinzuzufügen und Hadoop skaliert die Aufgabe auch auf die neuen Server.

Praxisübungen

Die außerordentlich gut vorbereiteten Praxisübungen, die einige Analysen und Auswertungen der Solr Mailinglist beinhalteten waren in verschiedene Schwierigkeitsgrade unterteilt, sodass ein Anfänger an den Umgang mit dem MapReduce-Pattern herangeführt und der bereits mit diesem Pattern vertraute Entwickler eine Herausforderung vorfand, die es zu lösen galt. Hierfür hat der Referent ein eigenes kleines JUnit-basierendes Framework geschrieben, dass als Basis Cascading verwendet um einen lokalen Cluster zu simulieren.

Weiterführende Technologien

Auf Basis von Hadoop wurden verschiedene Technologien und Domain-Sprachen entwickelt um an in HDFS gespeicherte Datenmengen Anfragen zu stellen, welche automatisch in optimierte MapReduce-Jobs konvertiert und ausgeführt werden, so dass der Nutzer schnell und einfach, wie er es aus der relationalen Welt gewöhnt ist zu einem Ergebnis kommt.

wurden beleuchtet und deren Vor-/Nachteile erklärt basierend auf verschiedenen Use-Cases.

Workflow-Definition

Um (semi) strukturierte Daten skalierbar zu verarbeiten benötigt es eine Möglichkeit einfach die Abfolge der notwendigen MapReduce-Schritte zu beschreiben. Zusätzlich müssen die verschiedenen Datenquellen und das Ausgabeformat definiert werden. Cascading bietet hierfür ein einfaches Framework um diese Abfolgen programmatisch darzustellen und generiert daraus einen Ausführungsplan aus MapReduce-Jobs (inkl. der Jobs) und stellt einfache Funktionen zur Verfügung um die Ausführung zu koordinieren und zu überwachen.

NoSQL-Storage

Wenn man eine Key-Value-Datenbank oder eine Dokumenten-orientierte Datenbank benötigt, die nahezu linear skaliert stößt man auf Technologien wie:

von denen jede ihren spezifischen Use-Case besitzt und ihre Rolle im Ökosystem von BigData einnimmt.

Zusammenfassung

Der erste Tag des Workshops hat somit das Grundlagenwissen vermittelt wie man große Datenmengen speichern und verarbeiten kann, was den ersten Baustein zu einer kombinierten Lösung mit Solr darstellt, wobei Solr sowohl als NoSQL Datenspeicher, als auch Analytics-Engine eingesetzt werden kann.

Ich bin schon gespannt auf morgen.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>