Big Data ist das Schlagwort unserer Zeit.
Egal wo man hinsieht: Jeder braucht Big Data, jeder will Big Data und alles muss bereit sein für Big Data.
Du kannst kein Spark?
Hadoop ist ein Fremdwort?
Tableau hast du auch noch nicht von innen gesehen?
Oh, das ist schlecht…
Aber was ist das eigentlich? Dieses Big Data, von dem alle sprechen?
Genau das möchte ich in dem Artikel etwas beleuchten und mal zeigen, wovon wir da eigentlich sprechen.
Dieser Artikel ist Teil einer kleinen Serie über Daten und Big Data.
- 1: Was ist Big Data? (Du bist hier)
- 2: Wofür werden Daten gesammelt?
- 3: Werden gesammelte Daten genutzt?
- 4: Was ist die Zukunft von Big Data?
Was ist Big Data?
Bei Big Data handelt es sich um massive Datenmengen mit exponentiellem Wachstum, die mit regulären Methoden nicht mehr verarbeitet werden können.
Deshalb benötigen sie sowohl kosten-effiziente, als auch innovative Verarbeitungsmethoden.
Sehr schön, damit hätten wir schonmal eine Definition. Wirklich greifbar ist das aber noch nicht.
Zu dem Thema habe ich auch schonmal ein YouTube Video veröffentlicht.
5 Charakteristika von Big Data oder die 3Vs (5Vs) in Big Data
- Variety (Vielfalt)
- Velocity (Geschwindigkeit)
- Volume (Volumen / Ausmaß)
- Veracity (Wahrhaftigkeit)
- Value (Wert)
Die ersten drei sind die 3V in Big Data bekannt sind.
Die letzten beiden, also Wahrhaftigkeit und Wert, kamen erst später hinzu.
Lass mich kurz auf die einzelnen Punkte eingehen, damit du auch verstehst, was sich dahinter verbirgt.
Die Vielfalt der Daten beschreibt die Art der Daten.
Es gibt viele verschiedene Arten von Daten:
- E-Mails
- PDFs
- Fotos
- Videos
- Datenbanken
- CSV Dateien
- Excel
- Audio
- Social Media
- etc.
Daten Kategorien
- Strukturiert
- Bestellungen, Adressen, Mitarbeiterdaten, etc.
- Leicht und schnell zu verarbeiten
- Unstrukturiert
- E-Mails, Video, Audio, etc.
- Schwer zu verarbeiten
- Semistrukturiert
- Mischung aus strukturiert und unstrukturierten Daten
- Text ist unstrukturiert, aber Text mit Tags wie zum Beispiel in Instagram bekommt durch die Tags schon eine erste Klassifizierung
Um die Geschwindigkeit zu ermittelt wird darauf geachtet wie schnell Daten erzeugt werden.
Dabei geht es nicht nur um die Daten selbst, sondern auch um Verknüpfungen zwischen den Daten und die Häufigkeit, bzw. Geschwindigkeit in der Änderungen und andere Aktivitäten auf den Daten stattfinden.
Handelt es sich um Echtzeit Änderungen? Dann ist das schonmal ein guter Indikator.
Die dritte Eigenschaft ist das Volumen der Daten.
Also von welchen Datenmengen sprechen wir?
Dabei wird nicht nur die Gesamtmenge der Daten in Betracht gezogen, sondern teilweise auch die Geschwindigkeit.
Es geht nämlich darum, wie viele Daten auf Tagesbasis generiert werden.
Bei der Wahrhaftigkeit geht es um die Qualität der Daten. Im Besonderen wird hier auf die Vollständigkeit, Eindeutigkeit und Authentizität wert gelegt.
Also kurz gesagt: Sind die Daten vertrauenswürdig?
Egal welche Auswertungen du machst, sie sind nur soviel Wert, wie die Daten, die du reingegeben hast.
Sind die Daten schon falsch, mehrdeutig, fehlerhaft oder unvollständig, wird sich genau das auch in deinen Ergebnissen widerspiegeln und ggf. zu falschen Folgerungen führen.
Der Wert der Daten wiederum bezieht sich auf den Mehrwert.
Also was bringen mir die Auswertungen eigentlich?
Kannst du Schlüsse daraus ziehen? Kannst du Vorhersagen treffen? Gewinnst du neue Informationen?
Je genauer die Vorhersagen und je mehr neue Informationen du durch die Auswertung gewinnen kannst, desto besser, wertvoller sind die Daten natürlich.
Jeder hat Big Data!
Alles klar.
Große Datenmengen, Bestellungen, Adressen, E-Mails, Excel, …
Dann hat doch jeder Big Data!
Oder?
Lass mich das Ganze dazu einmal etwas in Relation setzen.
Viele verlieren aus dem Auge, was „GIGABYTE AN DATEN“ eigentlich heißt.
Speichergröße | Inhalt | Visualisierung |
---|---|---|
1 Bit | 0 oder 1 | |
8 Bit | 1 Buchstabe 1 Byte | |
2 Kilobyte (KB) | 1 A4 Seite | |
1 Megabyte (MB) | ~500 A4 Seiten 1 Buch | |
5 Megabyte (MB) | 1 Bibel | |
1 Gigabyte (GB) | 1.000 Megabyte (MB) 1.000 Bücher 200 Bibeln | |
30 Gigabyte (GB) | 30.000 Bücher 6.000 Bibeln |
Bei 30 Gigabyte reden wir also schon von einer mittleren Bibliothek!
Wenn du jetzt in Betracht ziehst, dass es nicht nur die Datenmenge ist, sondern auch die Geschwindigkeit in der neue Daten entstehen und sich verändern, würde ich behaupten, dass nur wenige Firmen wirklich Big Data brauchen. Auch, wenn sie danach schreien.
Werkzeuge und ihre Fähigkeiten
Eingangs habe ich mit Spark, Hadoop und Tableau ein paar Werkzeuge genannt, die feste Größen in der Big Data Welt sind.
Und das absolut zurecht!
Es sind hervorragende Werkzeuge für die Arbeiten, die sie erledigen sollen.
Aber nach der kleinen Aufbereitung hier sollte inzwischen klar sein, dass bei weitem nicht jeder riesige Datenmengen hat und noch weniger diese auch in Echtzeit verarbeiten müssen.
Musst du dir also trotzdem teure Hardware und Experten für die Auswertungen ins Haus holen?
Nein. Ganz im Gegenteil!
Wenn du einen Spark mit einer 200 MB Excel Datei fütterst hat er nicht nur das Problem, dass er sich dann langweilt.
Er weiß auch einfach nicht, was er damit machen soll.
Ein Spark ist darauf ausgelegt, große Datenmengen in einer verteilten Landschaft parallel zu verarbeiten.
Bei 200 MB lässt sich nicht wirklich viel parallelisieren.
Deswegen möchte ich dir hier eine kleine Übersicht über die verschiedenen Werkzeuge und ihre Fähigkeiten geben.
Hierbei habe ich gleich sortiert, welche Mengen verarbeitet werden können.
Excel
- Darstellung: 1 Million Zeilen
- Datenmodell: Limit ist verfügbarer Arbeitsspeicher
- Datenquellen: CSV, Datenbanken, Web-API, etc.
- Datenhaltung: Arbeitsspeicher
- Verarbeitung: Lokal
Das wohl bekannteste „Werkzeug“ für die Auswertung von Daten.
Warum ich es für absolut ungeeignet halte und dringend davon abrate Datenauswertungen mit Excel zu machen, werde ich mal in einem andere Artikel beschreiben.
Der Vollständigkeit halber gehört es aber trotzdem in die Liste, da es einfach einen festen Platz in der Industrie hat.
Wie in der Corona-Pandemie gesehen, kann Excel sogar gefährlich werden.
Details dazu wurden auf t3n.de und heise.de veröffentlicht.
Auf heise.de unter dem eindrucksvollen
Titel: Spreadsheets töten.
Mehr brauche ich dazu nicht zu sagen, oder?
Excel ist in der Lage, bis zu einer Million Zeilen darzustellen.
Genau genommen sind es ein klein wenig mehr. Die genauen Spezifikationen kannst du hier in der offiziellen Dokumentation nachsehen.
Allerdings ist Excel nicht auf die Darstellung beschränkt.
Im Hintergrund gibt es noch ein Datenmodell, in dem Excel die Daten speichert.
Dabei werden alle Daten auch wirklich im Arbeitsspeicher gehalten.
Die effektive Datenhaltung ist also lediglich auf die Menge an verfügbarem Arbeitsspeicher beschränkt.
Die Daten können dann lediglich nicht mehr angezeigt werden und können daher auch nicht durch Excel selbst kommen.
Es müssen also Funktionen geschrieben und die Daten aus alternativen Quellen wie CSV Daten, Datenbanken, Web-APIs oder ähnlichem importiert werden.
Funktionen schreiben heißt hier Excel Makros und VBA (Visual Basic for Applications).
VBA ist etwas hinterlistig.
Es schleicht sich bei vielen Nutzern so nach und nach ein, obwohl sie gar nicht programmieren „können“ (wollen).
Dabei handelt es sich bei VBA aber um eine Programmiersprache und alles, was in VBA gemacht wird, ist Programmierung!
Das dumme ist nur: Man ist auf Excel (bzw. Microsoft Anwendungen) beschränkt und kann außerhalb der Anwendungen nur wenig damit anfangen.
Achja….
Schonmal versucht eine 500 MB Excel Datei zu öffnen? 😉
Pandas
- Darstellung: unbegrenzt
- Datenmodell: Limit ist verfügbarer Arbeitsspeicher
- Datenquellen: CSV, Datenbanken, Web-API, Excel, etc.
- Datenhaltung: Arbeitsspeicher / Chunks
- Verarbeitung: Lokal
Mit Pandas kommt das nächste, sehr bekannte Werkzeug zur Datenauswertung und mein absoluter Favorit.
Warum?
Es ist schnell und einfach in der Handhabung.
Nicht nur die Verarbeitungsgeschwindigkeit, sondern auch die Geschwindigkeit, in der sich Auswertungen erstellen lassen.
Dazu kommt, dass man überhaupt nicht groß programmieren lernen muss, wenn man lediglich Excel ablösen will.
Es lässt sich von jedem schnell lernen.
Ein weiterer, großer Bonus ist, dass die Logik für die Auswertung von den Daten getrennt gehalten wird.
Wie leicht passiert es bei Excel, dass durch Copy&Paste ganze Formelsätze einfach verschwinden. Oft dann auch noch unbemerkt.
Es standen vorher Zahlen drin und es stehen jetzt immer noch Zahlen drin.
Bei Pandas werden grundlegend die Daten auch erst einmal im Arbeitsspeicher gehalten.
Allerdings habe ich bei Pandas die Programmiersprache Python im Rücken, mit der super einfach eine Datenbank angebunden werden kann.
Das kann auch erstmal eine lokale, dateibasierte Datenbank (sqlite) sein.
Dabei muss nichts installiert werden und ich habe trotzdem Datenbank Funktionalitäten zur Verfügung.
In dem Fall speziell die Möglichkeit in Chunks zu arbeiten.
Ich kann also die Daten erstmal in eine Datenbankdatei schreiben und dann in einzelnen Blöcken immer nur so viele Daten raus laden wie ich gerade verarbeiten kann und will.
Das ist zwar nicht die schnellste Art der Verarbeitung, ermöglicht es aber größere Datenmengen überhaupt zu verarbeiten
Oder was ist, wenn ich eine riesige Datei mit 3000 Spalten bekomme, brauche aber nur 20 Spalten für meine Auswertung?
In Excel muss ich trotzdem erstmal die ganze Datei laden.
In Pandas kann ich direkt angeben welche Spalten ich brauche und es werden mir nur genau die Spalten geladen.
Ähnlich kann ich auch Datentypen optimieren.
Excel und Pandas versuchen beide anhand der Daten zu erkennen, um was es sich handelt und demnach einen Datentyp abzuleiten.
Im Fall einer Zahl wird das in der Regel eine der Typ float64 sein.
Float64 heißt, dass 64 Bit belegt werden, um eine Zahl darin zu speichern.
Selbst wenn die Zahl eine 0 ist.
Mit Excel hänge ich erstmal da drin und muss nachträglich die Datentypen anpassen.
Mit Pandas kann ich wieder direkt beim Einlesen festlegen, welcher Datentyp verwendet werden soll und so Zahlen zum Beispiel mit einer float32 einlesen, weil mir 32 Zeichen Genauigkeit ausreichen.
Damit habe ich meinen Speicherbedarf für Zahlen schon halbiert!
Du siehst also, mit Python habe ich schon enorme Vorteile und viele Optimierungsmöglichkeiten, die ich alle einsetzen kann, aber eben nicht einsetzen muss.
Deswegen ist der Einstieg auch so einfach und schnell.
Wenn du dich darauf einlässt.
Dask
- Darstellung: unbegrenzt
- Datenmodell: theoretisch unbegrenzt
- real: ca. 200 GB
- abhängig von Parallelisierung und Thread Größe
- Datenquellen: CSV, Datenbanken, Web-API, Excel, etc.
- Datenhaltung: Arbeitsspeicher / Chunks / Cluster
- Verarbeitung: Parallelisiert, lokal oder im Cluster
Dask ist eine Bibliothek wie Pandas.
Allerdings ist Dask darauf spezialisiert, eben nicht mehr alles im Arbeitsspeicher zu halten.
Jede Aktion erzeugt im ersten Schritt nur einen weiteren Knoten in einer Prozesskette.
Erst ganz am Ende, wenn man explizit das Ergebnis verlangt, wird diese Prozesskette ausgeführt, abgearbeitet und das Ergebnis präsentiert.
Dabei können Einstellungen gesetzt werden, um die Verarbeitung der Prozesskette zum Beispiel in einem AWS Cluster auszuführen. Oder an jedem anderen beliebigen Ort.
Das heißt, der Aufbau der Verarbeitung kann auf dem eigenen Laptop geschehen.
Schnell, schlank und ohne großen Ressourcen bedarf.
Die Verarbeitung selbst wird dann von spezialisierten Maschinen irgendwo in einem Rechenzentrum ausgeführt und nur dort entsteht dann die Last.
Damit sind die zu verarbeitenden Datenmengen ungleich größer als bei den beiden Vorgängern Excel und Pandas.
Apache Spark
- Darstellung: unbegrenzt
- Datenmodell: theoretisch unbegrenzt
- abhängig von Parallelisierung und Clustergröße
- Datenquellen: CSV, Datenbanken, Web-API, Excel, etc.
- Datenhaltung: Arbeitsspeicher / Chunks / Cluster
- Verarbeitung: Parallelisiert im Cluster
Mit Apache Spark erreichen wir so ziemlich das Ende der Fahnenstange.
Geht es um richtig, richtig große Datensätze, die schnell verarbeitet werden müssen, dann ist Spark das Werkzeug der Wahl.
Es arbeitet grundsätzlich parallelisiert in einem Cluster und ist daher nur durch die Clustergröße beschränkt.
Mehr Cluster – Mehr Daten.
Das bringt allerdings auch einen entscheidenden Nachteil mit sich:
Daten müssen parallelisiert werden können.
Handelt es sich um vergleichsweise kleine Datenmengen, ist ein Spark langsamer und ineffizienter als jedes Excel Blatt.
Überblick
Werkzeug | Darstellung | Datenmodell Limit | Datenquellen | Datenhaltung | Verarbeitung |
---|---|---|---|---|---|
Excel | 1 Million Zeilen | verfügbarer Arbeitsspeicher | CSV, Datenbanken, Web-API, etc. | Arbeitsspeicher | Lokal |
Pandas | unbegrenzt | verfügbarer Arbeitsspeicher | CSV, Datenbanken, Web-API, Excel, etc. | Arbeitsspeicher / Chunks | Lokal |
Dask | unbegrenzt | theoretisch unbegrenzt | CSV, Datenbanken, Web-API, Excel, etc. | Arbeitsspeicher / Chunks / Cluster | Parallelisiert lokal oder im Cluster |
Apache Spark | unbegrenzt | theoretisch unbegrenzt | CSV, Datenbanken, Web-API, Excel, etc. | Arbeitsspeicher / Chunks / Cluster / Datenbanken | Parallelisiert im Cluster |
Wichtig ist also:
Kenne deine Daten!
Kenne deine Werkzeuge!
Und wähle dann das richtige für den richtigen Job aus.
Was gehört zu Big Data?
Die Auswertung ist nur ein kleiner Teil des Bereichs Big Data. Hier die Bereiche, die alle unter Big Data fallen und benötigt werden:
- Mining (Daten sammeln)
- Storage (Daten speichern)
- Analysis (Daten analysieren)
- Sharing (Daten teilen)
- Visualization (Daten visualisieren)
Was kann man mit Big Data machen?
Big Data hat die verschiedensten Anwendungsgebiete. Darunter fallen:
- Personalisierte Angebote für Kunden
- Analyse der Kundenabwanderung
- Produktgestaltung
- Produktentwicklung
- Adaptive Preisgestaltung
- Betrugsprävention
- Trendanalysen
Die Einsatzgebiete sind vielfältig und werden unterm Strich nur durch die Kreativität und den Nutzen begrenzt.
In meinem nächsten Artikel gehe ich etwas genauer darauf ein, wie Daten genutzt werden.
Warum ist Big Data so wichtig?
Durch die Auswertungen im Bereich Big Data verschafft man sich Wettbewerbsvorteile, gerade in schnelllebigen Märkten.
Es werden wichtige Einblicke in den Markt und das Kundenverhalten, sowie strategische Entscheidungsgrundlagen für die Projektentwicklung geschaffen.
Ingo Janssen ist ein Softwareentwickler mit über 10 Jahren Erfahrung in der Leitung seines eigenen Unternehmens.
Er studierte Wirtschaftsinformatik an der TH Deggendorf und hat Softwareentwicklung an der FOM Hochschule in München unterrichtet.
Ingo hat mit einer Vielzahl von Unternehmen zusammengearbeitet, von kleinen und mittelständischen Unternehmen bis hin zu MDAX- und DAX-gelisteten Unternehmen.
Ingo ist leidenschaftlich daran interessiert, sein Wissen und seine Expertise mit anderen zu teilen. Aus diesem Grund betreibt er einen YouTube-Kanal mit Programmier-Tutorials und eine Discord-Community, in der Entwickler miteinander in Kontakt treten und voneinander lernen können.
Sie können Ingo auch auf LinkedIn, Xing und Gulp finden, wo er Updates über seine Arbeit teilt und Einblicke in die Tech-Branche gibt.
YouTube | Discord | LinkedIn | Xing | Gulp Profile