Big Data mit Maurice Knopp – IT-Berufe-Podcast #165

Über das spannende Thema Big Data spreche ich mit Maurice Knopp in der einhundertfünfundsechzigsten Episode des IT-Berufe-Podcasts.

Probeabo bei Audible (Affiliate)

Inhalt

Allgemeines zur Person

  • Wie ist dein Name und wo arbeitest du (falls gewünscht)?
    • Name: Maurice Knopp
    • Beruf: Softwareentwickler seit über 16 Jahren; Anfangs Enterprise Software (Java, Backend), seit 4 Jahren Schwerpunkt Big Data Technologien.
    • Freiberufler in Zusammenarbeit mit der skillbyte GmbH aus Köln.
    • Hobbies: Podcaster f. skillbyte & OpenSource Entwickler (LaTeX-Vorlage für Abschlussarbeiten (Bachelor, Master, PhD))
  • An welchen Projekten arbeitest du zur Zeit in deinem Tagesjob?
    • Konzeption von Big Data Architekturen (Data Lakes) & Big Data Softwareanwendungen (on premise; seit 2019 ausschließlich Cloud) für Großunternehmen (z.B. Medienbranche)
    • Implementierung von ETL-Strecken (Daten extrahieren, transformieren, laden in neuer DB oder Cloud Storage)
    • Enterprise Software (Java, Backend) (z.B. Energieversorger)
  • Wie bist du zur Informatik bzw. Softwareentwicklung gekommen?
    • Bereits als Kind mit 6 Jahren von Technik fasziniert (GameBoy). Ich wollte immer verstehen, wie die Technik funktioniert. Erster PC MacIntosh + DOS: PC-Tuning. In den 2000ern Faszination für Internet und Linux entwickelt.
  • Welche Ausbildung bzw. welches Studium hast du im Bereich der Informatik absolviert?
    • 2004-2008 Medieninformatik Bachelor an der TH Köln
    • 2008-2010 Wirtschaftinformatik Master an der TH Köln
    • viele Projekte nebenbei: Für Firmen Software und Webseiten erstellt, Abschlussarbeiten (B.SC. / M.SC.) stets in Unternehmen gemacht (Luxemburg / Köln).
  • Mit welcher/n Programmiersprache/n arbeitest du im Alltag?
    • Java (riesiges Ökosystem, viele Data-Komponenten wurden in Java entwickelt (HDFS), super für threaded Entwicklung)
    • Python (Data Libs, Microservices)
    • Scala (Spark)
    • SQL (extrem wichtig, auf jeden Fall lernen)
    • Bash (Scripting)
    • Container + Orchestrierung: Docker + Kubernetes sind aktuell das große Ding (on-prem und cloud)
  • Was ist deine Lieblingsprogrammiersprache und warum?
    • Java, top Entwicklungsumgebungsunterstützung, riesiges Ökosystem mit vielen frei verfügbaren Bausteinen, hoher Reifegrad, von App-Entwicklung bis Server-Softare alles möglich.
    • Aber: Keine religiöse Einstellung zur Programmiersprache! Ökosystem ist wichtiger, da eine gute IDE per Autocompletion viel Arbeit abnimmt. Man sollte die zum Anwendungsfall passende Sprache auswählen.
    • Die IDE ist ein wichtiges Werkzeug, dessen Benutzung man perfektionieren sollte. Macht einen großen Unterschied bei der Produktivität.
    • Wichtig ist, dass die gewählte Sprache lebt und sich weiterentwickelt. Gute Features werden eh mit der Zeit übernommen (z.B. aus Rails).

Big Data

  • Was verbirgt sich hinter dem Begriff „Big Data“?
    • Die Frage wird meist von Kunden gestellt, um herauszufinden, ob sie „schon“ Big Data machen oder noch ganz normale Datenverarbeitung.
    • Wann wird aus Datenverarbeitung Big Data? Ab 1 Mio Datenzeilen? Ab 100 Mio?
    • Big Data bezeichnet Technologien zur Verarbeitung und Auswertung „riesiger Datenmengen“ -> 100 Mio von Datenpunkten.
    • In kurzer Zeit entstehen viele Datenpunkte, meist Millionen am Tag. Sie werden dann oft aggregiert in Dashboards.
    • Software zur massiven Parallelverarbeitung mit Standard-Hardware (Enterprise Grade Linux Server, Cloud VMs).
    • Big Data fängt an, wenn eine Maschine nicht mehr reicht für die Verarbeitung der Daten.
    • Beispiel: Aggregiere Verkaufsdaten in riesigen Datenbeständen (Divide-and-Conquer-Modell). Selbstfahrendes Auto liefert schnell viele Daten.
    • Viele DAX-Konzerne haben das im Einsatz, da bei ihnen viele Daten anfallen.
  • Was verbirgt sich hinter den „vier Vs“ (velocity, volume, variety, veracity)?
    • Volume (Datenmenge): Big Data macht nur bei extrem großen Datenmengen Sinn. Für die Verarbeitung von 10-100 Mio Datensätzen reichen Standardwerkzeuge. 10-100 Mio Datensätzen pro Stunde -> da wird es interessant.
    • Variety (Vielfalt der Datenstrukturen): strukturiert (DB) vs. unstrukturiert (Text, PDF Dokumente, Bilder, Video).
    • Velocity (Geschwindigkeit): Wie schnell werden Daten erzeugt bzw. müssen verarbeitet werden, z.B. beim autonomen Fahren.
    • Veracity (Wahrhaftigkeit): Unsicherheit bzgl. der Datenqualität. Beispiele: unterschiedliche Zeitzonen, Umlaute, fehlende Daten, doppelte Daten, ungültige Daten etc.
  • Veracity macht häufig Probleme bei Kunden. Kann das nur durch manuelle Arbeit gelöst werden?
    • Standardlösungen sind für häufige Probleme möglich (Kleinschreibung von Benutzernamen usw.).
    • Auf Hadoop gibt es viele Lösungen
    • Seit 2019 läuft alles in der Cloud und nicht mehr im eigenen RZ. Das sollte man aber vorher rechtlich klären.
  • Warum wird so viel in der Cloud betrieben?
    • Die vier Vs schreien nach der Cloud. Dort ist z.B. NoSQL einfach verfügbar und scheinbar „unendlicher“ Speicher.
    • Skalierbarkeit ist in der Cloud auch optimal.
    • Realtime geht natürlich nur lokal.
  • Hat die Cloud Big Data vorangetrieben?
    • Ja, da die Einstiegshürde nun geringer ist.
    • Hadoop ist als Open Source gestartet (Spielzeugelefant des Kindes des Entwicklers hieß so), aber man brauchte viele Server dafür.
    • Big Data startet oft klein und wächst dann schnell, daher ist Infrastruktur immer hinterher.
    • Hortonworks wurde gekauft von Cloudera. Dadurch gibt es jetzt hohe Lizenzkosten pro Node. Strategie ist nun, die Top-Kunden zu betreuen, die nicht in die Cloud dürfen/können.
  • Warum ist das Thema Big Data aktuell und in Zukunft wichtig und interessant?
    • Daten sind das neue Öl (Treibstoff)!
    • Datenanalyse ist der Verbrennungsmotor (richtigen Schlüsse aus Daten ziehen).
    • Beispiele (Daten/Analyse)
    • Logdaten: Systemfehler finden. Wo können Kunden nicht bedient werden? Welche Prozesse schlagen fehl? Wo sind Antwortzeiten zu hoch?
    • Nutzerverhalten: Welche Funktionen werden genutzt, welche nicht? Dementsprechend Entwicklungsleistung konzentrieren. Welche Produkte werden nachgefragt? Wo brechen Kunden im Prozess ab? A/B-Tests verschiedener Varianten, um optimalen Kandidaten zu finden (z. B. bei der Buchung von Flügen).
    • Telemetriedaten von Systemen: Voraussage, wann Maschinenteile ausfallen werden (Ersatzteilbestellung optimieren, Ausfallzeiten minimieren). Voraussage von Technikereinsätzen. Festlegung von Wartungsintervallen.
  • Welche Unternehmen sollten sich mit Big Data beschäftigen und warum?
    • Jedes Unternehmen sollte sich fragen:
    • In welchen Prozessen generieren wir heute schon viele Daten und welche Erkenntnisse könnten in diesen liegen?
    • Welche Prozesse erfassen noch zu wenig Daten?
    • Welche Erkenntnismöglichkeiten hätten wir, wenn wir alle Unternehmensdaten an einer zentralen Daten-Sammelstelle (Data Lake) bereitstellen würden, sodass wir Abfragen kreuz und quer über diese Daten fahren können?
    • Beispiele: Medienunternehmen -> User-Nutzungsdaten, Energieversorger -> Messzählerdaten etc.
    • Große Datenprobleme brauchen Big Data! Viele Daten müssen erfasst werden, meist bei Millionen von Kunden.
    • Aber generell steigt das Datenvolumen weltweit, auch der Mittelstand braucht irgendwann Big Data.
  • Was sind übliche Use Cases für Big Data?
    • Beispiel: Industrieunternehmen hat Teile für Weltraumunternehmen gebaut auf sechs Fertigungsstraßen. Dabei durfte es nicht mehr als 2% Ausschuss geben, da sonst Verluste drohten.
    • Verschiedene Geräte arbeiteten zusammen: Öfen, CNC, etc. Alle hatten Sensoren, die aber nicht abgefragt wurden.
    • Irgendwann wurden dann diese Daten gesammelt und man näherte sich der 2%-Hürde. Durch die Daten wurde festgestellt, dass 90% des Ausschusses aus einem einzigen Ofen kamen. Der Hersteller wurde angerufen, der Ofen neu kalibriert und 0,1% als neuer Ausschuss erreicht.
  • Wird bei Big Data meist etwas aus großen Datenmengen aggregiert?
    • Data Engineering befasst sich damit, Daten zusammenzufassen, zu planen, einen Data Lake mit normierten Daten zu erzeugen, ETL.
    • Data Science erzeugt statistische Modelle, KI, neuronale Netze mit dem Ziel, Erkenntnisse zu gewinnen, Muster/Ausreißer zu finden, Voraussagen zu treffen.
    • MTBF (mean time between failure) als Beispiel: besser schonmal vorher Ersatzteile bestellen, bevor etwas kaputt geht (Predictive Mainenance).
  • ETL gab es schon vor Big Data! Was kann ich mit Big Data machen, was vorher nicht möglich war?
    • Kurz: 1) große Datenbestände überhaupt verarbeiten und 2) das zu vertretbaren Kosten tun.
    • Abrenzung „Data Science“ und „Data Engineering“
    • Data Science: Kernkompetenzen eines Data Scientists liegen in fortgeschrittenen Kenntnissen der Mathematik und Statistik, Machine Learning, Artificial Intelligence und erweiterter Fähigkeiten zu Datenanalyse. Oberstes Ziel eines Data Scientist ist es, die Auswertungsergebnisse in Hinblick auf die Nützlichkeit für ein Unternehmen oder Geschäftszweck zu untersuchen und diese verständlich zu präsentieren bzw. zu kommunizieren. Kommunikation und verständliche Visualisierung der Ergebnisse stellen eine Schlüsselqualifikation dar und sind genau so wichtig wie die Durchführung der Analysen selbst. Im Gegensatz zu einem Data Engineer ist ein Data Scientist viel mehr mit der Interpretation und der (visuellen) Aufbereitung der Daten befasst, trainiert Modelle bzw. Machine-Learning-Algorithmen und prüft diese fortlaufend auf Passgenauigkeit.
    • Data Engineering: Kernkompetenzen eines Data Engineers liegen im Bereich der angewandten, fortgeschrittenen Programmierung in Hochsprachen (Python, Scala, Java), dem Verständnis von verteilten Systemen und Datenflüssen in diesen. Datenanalyse und die Verwendung von Werkzeugen zur Datenextraktion und -transformation gehören ebenso zu dessen Fähigkeiten. Im Gegensatz zu einem Data Scientist stellt ein Data Engineer also Daten bereit und verarbeitet diese programmatisch.
    • ETL gibt es schon sehr lange, aber heute sind andere Werkzeuge und Möglichkeiten vorhanden. Trotzdem werden alte Konzepte übernommen (z.B. SQL).
    • Letzlich ist es eine Weiterentwicklung des klassischen Data Warehouses.
    • Ein Data Lake ist ein Pool mit viel Speicherplatz mit allen Rohdaten. Danach werden Aggregationen auf den Daten durchgeführt, die vorher vielleicht noch gar nicht bekannt waren. Hier sind Konzepte nötig, damit der Speicher nicht explodiert.
  • Funktioniert Big Data auch mit „klassischen“ Datenbanken (relationale wie Oracle)?
    • Wenn es geht, dann ist es kein Big Data!
    • Big Data Cluster ist komplexer als eine „einfache“ Datenbank.
    • Viele Fragestellungen aus Big Data kann Oracle nicht lösen, weil es zu viele Daten sind.
    • 20.000 Maschinen hat Facebook nur für den Messenger im Einsatz, da viele/schnelle/sprunghafte Daten anfallen.
  • Was muss ich als Entwickler:in anders machen, wenn ich mit Big Data arbeite?
    • Es gibt einen „Compatibility Layer“ für die Anwendung bestehenden Wissens, z.B. SQL statt Map/Reduce.
    • Ein Dienst zerlegt z.B. SQL in Map/Reduce, verteilt das auf den Cluster und fügt die Ergebnisse wieder zu einer „Tabelle“ zusammen.
    • Apache Spark mit Scala als Werkzeug, da Sprache Lambdas etc. unterstützt.
    • Man muss aber schon einiges neu lernen, vor allem die Konzepte etc.
    • Als Entwickler:in: Affinität zum Backend nötig, man „sieht“ nichts, man muss gerne „knobeln“.
    • Statistik, Deutung von Daten muss spannend sein.
    • Aufbereiten der Daten für Entscheider, einfache Visualisierung ist nötig.
  • Man kann also auch etwas falsch machen, wie z.B. bei einem Full Table Scan in klassischen DBs?
    • Ja, die „Magic“ nimmt einem der Cluster ab, es gibt viele Abstraktionsschichten.
  • Was sind (technische/organisatorische) Herausforderungen bei der Arbeit mit Big Data?
    • Technische Herausforderungen:
    • ETL-Prozesse aufsetzen (insb. unvollständige/fehlerhafte Daten).
    • Geduld bei Verarbeitungsvorgängen. Überlegen: wie kann ich schnell iterieren? Datensubset ausreichend für Test?
    • Organisatorische Herausforderungen:
    • DSGVO: Originaldaten und auch Extrakte oder verarbeitete Daten müssen zyklisch gelöscht werden.
    • Korrekte Pseudonymisierung von kritischen Daten (Logins/Passwörtern).
    • Zuganskontrolle zu Datentöpfen.
    • Bedeutung einzelner Daten (Wie werden die erfasst und was messen die Datenpunkte eigentlich?).
    • Größtes Problem: Datenhoheiten im Unternehmen werden neu verteilt. Domänenwissen und Silos werden aufgebrochen. Dieser Prozess ist mit vielen Widerständen verbunden, sodass Unterstützung aus dem Vorstand sinnvoll ist.
  • Kann man das Ergebnis der Aggregationen als Mensch noch nachvollziehen?
    • Es gibt einen Strauß von Modellen für verschiedene Anwendungen. Das Modell wird mit Daten gefüttert, dann schaut man was rauskommt, passt iterativ die Parameter an und schaut sich die Veränderung an.
    • Im Gegensatz dazu steht ein neuronales Netz, das Hund/Katze unterscheidet. Da ist es nicht mehr nachvollziehbar, wie das Ergebnis entsteht.
  • Ist Big Data gleich Künstliche Intelligenz?
    • Letztlich ist alles Mathematik!
    • KI ist heute ein Buzzword, eher für ein neuronales Netz, nicht für Big Data. Die Entscheidung ist nachher nicht mehr nachvollziehbar.
    • Wenn ein Problem algorithmisch lösbar ist, dann ist es keine KI.
    • Beispiel: Warenkörbe von Schwangeren ausgewertet und Prediction daraus abgeleitet -> KI, „Zauberei“.
  • Ist Big Data die Grundlage für viele KI-Systeme?
    • Ja, die vielen Daten sind ein gutes Training für die KI, wie bei menschlicher Intelligenz.
  • Welche Begriffe tauchen häufig im Zusammenhang mit Big Data auf (z.B. Data Science, Edge Computing)?
    • Date Lake, Hadoop, Cloud Services (Data Proc), 4Vs, Mengengerüste, Laufzeiten und „Big-O-Notation“, Python, Datenbanken (SQL/NoSQL), REST-Schnittstellen, Dashboards und Datenvisualisierung, Voraussagen immer sehr gefragt.
    • Edge Computing hat einen Schnitt mit Big Data, ist aber eigentlich ein eigener Bereich. Verarbeitung der Daten dort, wo sie anfallen (z.B. direkt beim Hochofen). Beim Auto: Kamera liefert an Computer (nicht Edge) vs. Kamera hat Chip, der schon vor Lieferung des Ergebnisses entscheidet. Die Reduktion der Datenmenge ist das Ziel. Beispiel: Kamera nimmt nur auf, wenn sich etwas bewegt.
  • Welche Werkzeuge gibt es zum Umgang mit Big Data?
  • Was ist Map/Reduce?
    • Bei großen Datenmengen folgen eigentlich immer zwei Schritte hintereinander: Map und Reduce.
    • Map: viele Datensätze in DB, aber nur Benutzername/Login interessant, also „mappen“ wir die gewünschte Spalten.
    • Reduce: sucht z.B. MAX-Wert für den letzten Login und aggregiert damit die Daten.
    • Vor Hive musste man Map/Reduce selbst schreiben, z.B. mit Scala, ähnlich wie bei MongoDB mit viel Drumherum, z.B. RAM nicht auslasten etc.
    • Mit Spark können Scala-Programme entwickelt werden, um die Daten zu verarbeiten.
  • Wie fragt Hive Textdateien mit SQL ab?
    • Es gibt eine virtuelle Tabelle als Zwischenschicht.
    • Daten haben meist ein Standardformat wie CSV und HDFS „versteht“ das, dedupliziert die Daten usw.
  • Was mache ich mit Daten, die HDFS nicht automatisch versteht?
    • Das entsprechende Programm muss die Daten selbst interpretieren.
  • Warum wird so oft Python eingesetzt?
    • Python wird oft gelehrt an den Unis, es sind viele Libs verfügbar, es ist einfach lernbar, sieht „clean“ aus, wird oft in Naturwissenschaften eingesetzt, da einfach zu lernen.
    • PySpark übersetzt Python-Programme in Scala.
  • Welche Ausbildung bzw. welches Studium empfiehlst du für das Einsatzgebiet Big Data?
    • Es gibt Studiengänge wie z.B. „(M.Sc.) Big Data & Business Analytics“ der FOM oder „Fernstudium Big Data Management (B.A.)“ der AKAD, die gibt es aber noch nicht sehr lange.
    • Praxisrelevant: Übung mit Kursen von Udemy (Frank Kane von Sundog Education).
    • Tools der Cloud Umgebungen: AWS, Azure, GCP.
    • Wenn man Data Scientist werden möchte, sind das oft promovierte Naturwissenschaftler. 90% wissenschaftliche Arbeit, wenig Softwareentwicklung, sondern eher Libs „zusammenstecken“.
    • Data Engineering ist eher „hands on“, viel Softwareentwicklung, nur halt mit Bezug auf Daten, kein Frontend etc.
    • ETL geht auch mit Ausbildung, man braucht einen Überblick über verfügbare Tools, wendet vorhandene Modelle/Tools an, löst gegebene Probleme mit Tools. Das ist ein eher iteratives Vorgehen.
  • Heute fallen viele Fachbegriffe. Hast du eine Buchempfehlung zum Einstieg?
  • Kann Big Data in Unternehmen als Graswurzelbewegung entstehen?
    • Manche Unternehmen erkennen die Wichtigkeit von Daten, andere nicht. In letzteren wird es dann schwierig als Einzelner mit Big Data anzufangen.
    • Die Unterstützung durch den Vorstand ist immer wichtig. Viele Unternehmen tun sich schwer, weil alte Datensilos aufbrechen. Das gibt politisches Geplänkel, das geht nur mit Unterstützung.
    • Ansonsten auf jeden Fall! Überall fallen Daten an, auf denen man aufsetzen kann.
    • Eine Big-Data-Strategie bedeutet nur, fortlaufend zu prüfen und besser zu werden.
    • Es fallen in der Praxis einfach immer mehr Daten an und machen Big Data erst notwendig/sinnvoll.
    • Ein Einstieg mit etablierten Tools ist auch einfach/schnell möglich, es gibt oft Quick Wins.
  • Haben wir noch Themen vergessen, die wir unbedingt besprechen sollten?
    • Ausbildung ist wichtig! Aber wie immer gilt: kontinuierlich weiterbilden ist Pflicht!
    • In den letzten Jahren ist so viel passiert. Es gibt immer mehr Daten.
    • Das älteste Big-Data-Problem ist wohl die Recommendation-Engine bei Amazon (Kunden kauften auch…).

Aus- und Weiterbildung

  • Bildest du selbst Entwickler-Nachwuchs aus und wenn ja, wie ist das Vorgehen?
  • Hast du Tipps für Ausbilder/-innen im IT-Bereich?
    • Fokus auf Backend legen, nicht auf das Frontend (fancy, bunte Frameworks etc.)
    • Das Datenthema ist eher abstrakt, Backend passt besser dazu, Bücher vermitteln das gut.
  • Hast du Tipps zur Aus-/Weiterbildung für angehende Softwareentwickler/-innen?
  • Was ist das letzte Fachbuch mit Bezug zur Programmierung, das du selbst gelesen hast?
  • Was ist dein absolutes Lieblingsbuch mit Bezug zur IT/Programmierung und warum?
  • Welche Quellen kannst du für die Aus- und Weiterbildung im Bereich Programmierung empfehlen und warum?
    • Udemy, Linux Academy und natürlich StackOverflow
  • Hast du Tipps zur Aus-/Weiterbildung für angehende Softwareentwickler/-innen?
    • Sucht euch eine exzellente Universität (auch im Ausland) für euer Fach! Eine gute Ausbildung und einflussreiche Kontakte sind der Turbo für eure Karriere!
    • Bildet euch weiter!
    • Generell: Versucht das Problem, welches ihr lösen möchtet, so genau wie möglich zu verstehen und ein Lösungskonzept zu erarbeiten. Wenn man das Problem klar verstanden hat, kann man eine zielgerichtete Lösung entwickeln, denn Komplexität tötet jedes System und jede Motivation. Siehe auch Podcast #9: Bull’s Eye Software Development – Einfach und fokussiert auf Unternehmensziele.
  • Hast du Tipps für Ausbilder/-innen im IT-Bereich?
    • Möglichst viel Hands-on machen!
    • Möglichst enge Kooperation mit Unternehmen mit „echten“ Big-Data-Problemen und echten Projekten.

Abschluss

  • Wo können die Hörer mehr über dich erfahren bzw. dich kontaktieren?

Literaturempfehlungen

Maurices Empfehlung für den Einstieg ins Thema Big Data ist Designing Data-Intensive Applications von Martin Kleppmann*.

Martin Kleppmann: Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems (Affiliate)*

Wer lieber Videokurse schaut, sollte sich Frank Kane bei Udemy anschauen.

Und völlig unabhängig von Big Data empfiehlt Maurice noch diese zwei Bücher für Entwickler:innen: Clean Code von Robert C. Martin* und Effective Java von Joshua Bloch*.

Robert C. Martin - Clean Code: A Handbook of Agile Software Craftsmanship (Affiliate)*

Joshua Bloch - Effective Java (Affiliate)*

Links

Polyglot Clean Code Developer
About the Author
Ausbildungsleiter für Fachinformatiker Anwendungsentwicklung und Systemintegration, IHK-Prüfer und Hochschuldozent für Programmierung und Software-Engineering.

Schreibe einen Kommentar

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

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax