AWS-basiertes Big Data Projekt

Die Amazon Web Services-Plattform ist einzigartig, und heutzutage migrieren viele Unternehmen in die Cloud.

Herausforderung

Nach einer Recherche am Anfang des Projekts haben die Ingenieure von SCAND die folgenden Hauptanforderungen für die angeforderte Lösung zusammengefasst:

  • Eine intensive Übermittlung von Berichten über die Verwendung der App, die von den Geräten der Benutzer gesammelt werden. Es wird erwartet, dass die Menge der gemeldeten Daten zunehmen wird.
  • Die Möglichkeit, die bestehenden oder die neuen Arten von Statistik basierend auf allen gesammelten Daten zu berechnen. Mit anderen Worten, die Speicherung der Daten sollte lebenslang erfolgen.
  • Die Möglichkeit, die berechneten Statistiken zu filtern und Diagramme nach bestimmten Kriterien zu erstellen.
  • Die Möglichkeit einer automatischen Durchführung von statistischen Berechnungen nach bestimmten Zeiträumen.

Herangehen

Um alle Operationen mit der Statistik durchzuführen, wird viel Speicherplatz sowie CPU-Leistung benötigt. Aus diesem Grund wurde die Plattform Amazon Web Services ausgewählt, da sie die für diese Lösung erforderlichen vollständig integrierten Dienste und Ressourcen zu einem angemessenen Preis bereitstellt. Die Technologie von AWS bietet einen relativ günstigen Speicherplatz für eine fast unbegrenzte Datenmenge und unterstützt die automatisierte Bereitstellung von Hadoop-Clustern, die für die Erfüllung der Aufgabe des Kunden notwendig waren.

Beschreibung

Die Entwickler von SCAND haben eine aus mehreren Stufen bestehende Datenpipeline implementiert.

Die erste Stufe: Sammlung von den Rohdaten. Um die Kosten für die Berichts-API zu minimieren und sie vor einem unautorisierten Zugriff zu schützen, nutzte das Team für die Web-Entwicklung den Amazon Cognito Service, der sowohl den autorisierten als auch den Gastbenutzern ein differenziertes Berechtigungsmanagement bietet. Berichte von Android-Anwendungen werden auf den Geräten gesammelt und direkt an den S3-Bucket übertragen, wobei der Schreibzugriff vom Cognito-Dienst gesteuert wird. Das ist eine absolut sichere Transaktion, denn es ist unmöglich, die Information aus dem nur für das Schreiben geschützten Amazon S3-Bucket zu stehlen. Die als Ergebnis der oben genannten Operationen empfangenen Daten enthalten eine große Menge von kleinen Berichtsdateien in einem speziellen „Puffer“ S3-Bucket.

Die zweite Stufe: Kompression von den Daten. Bevor die Daten in dem Haupt-Bucket gespeichert werden, werden sie in einige viel größere komprimierte Spaltenformat-Dateien konvertiert, die für das teilweise Lesen von Daten optimiert wurden. Die Konvertierung wird mit Hilfe von dem Spark-Code aktiviert. Der Code wird im Hadoop-Cluster von Amazon Web Services EMR Spot Instances ausgeführt, der automatisch gestartet und gestoppt wird. Wir sehen hier die Vorteile, die das AWS Control Panel dem Projekt bringt, da der EMR-Service ein automatisches Hadoop-Cluster-Management ohne Beteiligung von den Ingenieuren bietet.

Die dritte Stufe: Berechnung der Statistik. Ein ähnlicher EMR-basierter Cluster wird von den Ingenieuren von SCAND bei Bedarf manuell gestartet und führt das verteilte Spark-Programm, das die erforderlichen Statistiken berechnet, aus. Die statistische Ausgabe wird in einer großen SQL-Datenbank, die von Amazon gehostet wird, gespeichert. Die statistische Ausgabe enthält mehrere SQL-Tabellen, die für eine Zeitbereichssuche optimiert sind.

Die vierte Stufe: die Präsentation der Statistik. Das Web-Frontend, das auf dem Apache Tomcat läuft, verwendet die D3 JavaScript Bibliothek, um die Diagramme basierend auf den Ergebnissen der in der SQL-Datenbank gespeicherten und nach bestimmten Kriterien ausgewählten Daten zu zeichnen.

Ergebnis

Die Plattform Amazon Web Services ermöglicht die Implementierung von einer komplexen Big-Data-Pipeline, die die Hauptengpässe, die bei jeder Big-Data-Verarbeitung entstehen, z.B. Speicherplatz, CPU-Leistung und verteiltes Computing, vermeidet.

Amazon S3 ist eine der günstigsten Key-Value-Store-Lösungen ihrer Klasse, und der EMR-Cluster bietet eine einfache, hochautomatisierte Möglichkeit für eine sofortige Bereitstellung und Konfiguration eines großen Hadoop-Clusters, wodurch die Kosten für die Entwicklung stark reduziert werden.

Benötigen Sie Unterstützung bei einem ähnlichen Projekt?