SOA & Hadoop

Service-Oriented Architecture (SOA)

Das Architekturmuster nutzt die Architektur von einem verteilten System, um die geschäftsprozessorientierte Sicht der Verarbeitungsfunktionen eines Unternehmens abzubilden. Die Dienste des Systems sind Teile von Geschäftsprozessen und es gibt den Serviceanbieter und den Servicenutzer als Rolle.
Die Architektur soll das Problem lösen, dass sich Geschäftsprozesse schnell ändern und angepasst werden müssen, was in einem System die Gesamtarchitektur beeinflusst. Durch die Änderung entstehen dann hohe Kosten und Instabilitäten von einzelnen Programmen.
In einer serviceorientierten Architektur wird die geschäftsprozessorientierte Sicht auf die Architektur des Datenverarbeitungs-Systems abgebildet. Die Verarbeitungsfunktionen von der Software werden als Dienste in Komponenten gekapselt.

Anforderungen an Dienste einer SOA

  • Verteilung der Dienste über ein Netzwerk
  • Geschlossenheit der Dienste, d.h. sie können unabhängig voneinander aufgerufen werden
  • Zustandslos bedeutet das Dienste bei ihrem Aufruf immer im gleichen Zustand starten und sich nicht an frühere Aufrufe "erinnern"
  • Lose Koppelung bedeutet, dass sie untereinander entkoppelt sind
  • Austauchbarkeit der Dienste
  • Ortstransparenz von Diensten bedeutet, dass es gleichgültig ist auf welchem Rechner ein Service liegt
  • Plattformunabhängigkeit
  • Zugriff auf einen Dienst über eine Schnittstelle, sodass die Implementierung des Dienstes verborgen bleibt
  • Verzeichnisdienst heißt, dass in einem Verzeichnis alle Dienste registriert sind

Hadoop, HDFS & Map-Reduce

Hadoop ist ein Framework für die skalierbare Verarbeitung von sehr großen Datenmengen.
Dazu wird das Hadoop Distributed File System (HDFS) und die MapReduce Execution Engine verwendet.

HDFS

In dem verteilten Dateisystem werden die Dateien auf Knoten verteilt und große Dateien in kleine Blöcke zerlegt. Mit der MapReduce Execution Engine werden die Daten direkt auf dem Knoten verarbeitet, was viel effizienter ist.
In der Vorlesung gab es ein ganz tolles Video zu HDFS zu sehen.

MapReduce

MapReduce ist ein Programmiermodell, welches die parallele und verteilte Ausführung von Programmen beschreibt. Bei der Implementierung müssen die zwei Methoden Map und Reduce geschrieben werden. Die Methode Map bildet die Eingabedaten auf Schlüssel-Wert-Paare ab und die Reduce Methoden führt die von Map erzeugten Schlüssel-Wert-Paare zusammen.

Hadoop-Ökosystem

Es gibt viele Komponenten, die auf dem Hadoop-Kern aufsetzten. In der Vorlesung haben wir die folgenden betrachtet und Kurz-Präsentationen dazu gehalten:
Ich arbeite bei einem bekannten E-Commerce Unternehmen in der BI Abteilung als Werkstudentin. Dort arbeite ich regelmäßig mit Hadoop, denn unsere Daten werden in HDFS abgelegt und stehen uns dann dort zur Verfügung, um Analysen durchzuführen. Für Analysen benutze ich Apache Hive, wobei mir hier das MapReduce zu Gute kommt für meine Hive Queries. Durch das MapReduce kann ich die großen Datenmengen über mehrere Jahre auch in meinen Queries nutzen, um noch in annehmbarer Zeit ein Ergebnis zu erhalten.

Kommentare

Beliebte Posts aus diesem Blog

Projektergebnis

TTI Vorlesung

Cloud Computing Patterns