PSE: Difference between revisions

From Lsdf
Jump to navigationJump to search
No edit summary
No edit summary
Line 1: Line 1:
Praxis der Software Entwicklung: Entwicklung eines Big Data Brokers
==Praxis der Software Entwicklung: Entwicklung eines Big Data Brokers==








Revision as of 15:00, 10 April 2013

Praxis der Software Entwicklung: Entwicklung eines Big Data Brokers

Überblick

Wissenschaftliche Forschungsprojekte nutzen oftmals mehrere heterogene Speichersysteme, um wissenschaftliche Daten im Petabyte-Bereich abzulegen. Beim „Big Data“-Projekt am SCC soll ein Werkzeug zur asynchronen Verwaltung dieser großen Datenmengen entstehen. Das Ziel ist hierbei eine Schnittstelle für die Verwaltung von Datenmengen von mehreren Petabytes zu schaffen.

===Projekt... Konkret soll eine Client-Server Lösung implementiert werden, bei der die Clients dem Server Änderungen in der Dateisystemstruktur und dem Speicherort mitteilen. Der Server muss die Anfrage auf Machbarkeit prüfen, die Durchführung planen (Optimierung, Scheduling) und garantieren und an die ausführenden Agenten weiterleiten. Letztere kopieren, verschieben oder Archivieren die vom Nutzer ausgewählten Dateien.

Details

  • Es soll ein REST-Server konzipiert und in Python implementiert werden, der Datentransfers über Agents koordiniert. Aufgaben des Servers sind:
    • Clientanfragen überprüfen (collision detection)
    • Scheduling und Priorisierung von Datentransfers
    • Benutzerrechte-Verwaltung
    • Statusinformationen bereitstellen, Zeitabschätzungen
    • Fehlerbehanglung, Logging
  • Speichersystem sollen abstrakt behandelt und klassifiziert werden (Qualitäten, wie Geschwindigkeit, Kapazität, Latenz)
  • Es sollen durch Module (Agents) verschiedene Kopierprotokolle unterstützt werden (cp, scp, gridftp)
  • Clients sollen dazu dienen Datentransfers zu konfigurieren. Die Transfer-Tasks werden an den Server submittiert, der die Anfragen dann asynchron abarbeitet. Clients können jederzeit Statusabfragen machen. Es sollen geeignete Clients entworfen und implementiert werden:
    • App bzw. Graphisches User Interface (Python/Java)
    • Web Client
    • Kommandozeilenbasierte Python-API
    • optional: virtuelles Dateisystem (FUSE)
  • Die Clients sollen von den gängigsten Betriebssystemen aus verwendet werden können
  • Zur Kommunikation zwischen den Komponenten sollen REST Schnittstellen verwendet werden