Giter VIP home page Giter VIP logo

bigdata's Introduction

Big Data Projekt "Flugbuchung"

Aufbau:

status

Use-Case

Dieses Projekt soll einen Zugang zu einer Datenbank mit Flügen ermöglichen und die Flugpreise je nach Zugriffshäufigkeit/Klickhäufigkeit anpassen. Anfragen werden über einen Load-Balancer auf einzelne Webserver verteilt. Diese greifen auf die Datenbank mit den Flugdaten zu und behalten diese Informationen im Cache. Werte die die Zugriffshäufigkeit angeben werden in einem HDFS Data-Lake gespeichert, woraus dann die neuen Preise berechnet werden.

Komponenten

Load Balancer

Der Load Balancer besteht aus einem nginx-pod, über den von außen auf das Cluster zugegriffen werden kann. Dieser verteilt dann die Anfragen gleichmäßig auf alle Server.

Data-Lake

Wird über Ozone realisiert, da es eine neuere und auf Kubernetes ausgelegte Version ist. Alternativ könnte HDFS verwendet werden. Enstsprechende Einträge sind schon in der skaffold.yaml vorbereitet. Der Ozone Pod läuft stabil, allerdings wird er für diesen konkreten use-case nicht benötigt da wir keine Daten hinenschreiben. Denkbar wären aber z.B. Flugbuchungsdaten aus dem Vorjahresdatum, um diese Werte in die Preisermittlung einfließen zu lassen.

Cache Server

Der Webserver prüft ob die Daten auf dem Cacheserver sind und holt sie von dort. Falls sie hier nicht verfügbar sind, holt er sie aus der Datenbank und schreibt sie in den Cacheserver.

Webserver

Die Flask-App läuft auf einem Docker Container und gibt eine einfache Webseite aus auf der die Flugdaten angezeigt werden. Beim start werden 2 Webserver erzeugt, die aber automatisch nach Auslastung hochskaliert werden könnten.

Postgres-Datenbank

Die Datenbank läuft auf einem Docker-Container mit postgres image und bietet Zugriff auf die Flugdaten über den Port 5432. Der Benutzername ist "Postgres" und das Passwort "postgres". Der Name der Datenbank lautet "kranichairline_db"

Big Data Messaging

Wird über Kafka realisiert. Hierzu wird ein strimzi helm Chart zur Kafka-verwaltung gestartet und ein Cluster mit einem Pod erstellt um Kafka-Topics zu lesen und zu beschreiben.

Portainer

Als GUI um den Status der Pods übersichtlich zu überwachen. Portainer lässt sich auf localhost:9000 starten. Alternativ kann auch das minikube-Dashboard verwendet werden (siehe Nützliche Befehle)

Docker-Testapp

Wird nur testweise gestartet um zu prüfen ob minikube noch läuft

Installation

Voraussetzungen

Folgende Programme müssen in der aktuellsten Version installiert sein:

  • docker
  • minikube
  • skaffold
  • helm

Anleitung

  1. skaffold dev --port-forward im Ordner mit der Skaffold.yaml ausführen
  2. auf localhost:8080\dbtest aufrufen
  3. fertig.

Debugging-Tipps

Nützliche Befehle

k delete all --all

Kurzer Befehl zum löschen und Neustart der Pods. Geht schneller als ein Minikube-Neustart.
⚠️ nicht stattdessen k delete all --all --all-namespaces ausführen. Dies würde auch den DNS-Pod löschen, der dann im Hintergrund als einziger nicht neu startet.

minikube dashboard --url

Zugriff auf das Minikube-Dashboard

while ($true) {Clear-Host; k get all; sleep 10}

Intervallmäßige Überwachung aller pods und services in der Windows-Powershell

Sonstiges

Troubleshooting.xls beinhaltet eine (kleine und bei weitem unvollständige) Sammlung der Fehler auf die wir gestoßen sind mit Lösungsansätzen. Teilweise sind auch Windows- Varianten für die in der Vorlesung verwendeten Linux-Befehle gennant.

bigdata's People

Contributors

1337ds avatar lennartfertig avatar felixhuesgen avatar elisadandin avatar joda3 avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

1337ds

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.