Einführung in Hadoop – Was ist Big Data & Hadoop? (Teil 1 von 3)

Keine Kommentare

Was ist Big Data?

„Big Data ist, wenn die Daten selbst Teil des Problems werden“

Diese kurze Definition in Anlehnung an ein Zitat des Verantwortlichen für Marktforschung bei O’Reilly Media, Roger Magoulas, ist in meinen Augen die beste Charakterisierung von Big Data, gerade weil sie so kurz und prägnant ist und trotzdem den Kern des Problems – und der Herausforderungen – so zeitlos umfasst. Hier wird gar nicht erst probiert, das aktuelle Hype-Thema Big Data anhand reiner Zahlen wie „Big Data ist alles über 1, 5, 10, 50, … GB, TB, PB, …“ festzuzurren. Big Data in Zahlen zu fassen scheint aber anscheinend trotzdem ein menschliches Grundbedürfnis zu sein, ich weiß nicht wie viel Zeit ich auf User Groups, Open Spaces, Konferenzen, etc. allein mit der Diskussion der „Größe“ von Big Data verbracht habe. Und diese Diskussion ist eigentlich nie zielführend gewesen, viel wichtiger ist es in meinen Augen, die Prinzipien hinter den Technologien zu verstehen und welche Möglichkeiten sich dadurch ergeben. Und genau das möchte ich in dieser Blog-Serie versuchen zu beleuchten, wohl wissend, dass Big Data nicht nur Hadoop ist, auch wenn die aktuelle Berichterstattung dies häufig zu suggerieren scheint. Aber Hadoop ist zumindest ein nicht unbedeutender Teil von Big Data, daher fangen wir einfach mal damit an und andere Themen werden sicherlich folgen.

Das 3V-Prinzip

Zurück zum Thema: Das ursprüngliche Zitat von Roger Magoulas bezog sich lediglich auf die Größe der Daten und ich denke wie so viele, dass diese Hervorhebung zu einseitig ist und zu kurz greift. Natürlich ist die Größe der Daten einer der offensichtlichsten Faktoren bei Big Data – der Name kommt schließlich nicht von ungefähr. Trotzdem wäre das zu eindimensional und verkennt die weiteren Dimensionen des Phänomens Big Data. Dies sehen auch die Analysten von Gartner so, wie sie nicht müde werden zu betonen, und ihr 3V-Prinzip ist sicherlich die populärste Definition von Big Data und ich denke, dass Sie diese auf jeden Fall  zumindest kennen sollten. Die Definition ist mittlerweile von diversen Autoren und Marketingabteilungen noch um einige V’s erweitert worden, ich will mich aber auf die ursprüngliche Definition beschränken:

Volume (= Größe der Daten)

Mit den exponentiell steigenden Datenvolumen, die von Unternehmen angesammelt werden, geht es in der Regel darum, große Datenmengen zu speichern und zu analysieren. Wir reden dabei heutzutage typischerweise über Daten im Terabyte- bis Petabyte-Bereich, die traditionelle Systeme an ihre Grenzen bringen bei dem Versuch diese Datenflut effizient zu verarbeiten.

Velocity (= Geschwindigkeit der Daten)

Die Geschwindigkeit der Datenerzeugung nimmt ständig zu. Bei neu entstehenden Datenquellen wie mobilen Geräten, sozialen Netzwerken, Sensordaten, RFID, etc. werden die Daten kontinuierlich in Echtzeit generiert. Aber auch die Speicherung über mehrere Kanäle hinweg und die nachfolgende Datenanalyse soll möglichst in Echtzeit stattfinden, um schnelle Entscheidungen zu treffen und so Wettbewerbsvorteile zu sichern.

Variety (= Vielfalt der Daten)

Die Dimension „Vielfalt“ bezieht sich nicht nur auf unterschiedliche Datenformate, die von verschiedenen Datenquellen erzeugt werden. Mit dem Einsatz von RFID-Sensoren, Roboter und der explosionsartigen Verbreitung von  sozialen Netzwerken werden Daten in zahllosen Formaten wie Text, Video, Audio, Sensordaten, Tweets, Logausgaben usw. generiert. Auch die Notwendigkeit mit unterschiedlichen Datentypen wie strukturierte, semistrukturierte und unstrukturierte Daten arbeiten zu müssen, trägt zur Komplexität der Lösung bei.

Und was ist mit NoSQL?

Im Zusammenhang mit Big Data stößt man häufig ebenfalls auf den Begriff NoSQL – auch Sie sind sicherlich in diesem Zusammenhang schon mal über die dokumentenbasierte Datenbank MongoDB, den verteilten Key-Value-Store Riak, die Graph-Datenbank Neo4j und weitere Lösungen gestolpert. Und auch wenn diese technische Lösungen meist auf den Grundprinzipien der vertikalen Skalierbarkeit und der Verwendung von Commodity Hardware aufbauen und sich somit ebenfalls für die Speicherung und Verarbeitung von großen Datenmengen eignen, so ist der Begriff Big Data heutzutage doch fast synonym mit Apache Hadoop verknüpft.

Ich will diese Verknüpfung auch gar nicht erst bewerten, denn auf Basis von NoSQL-Datenbanken sind ebenfalls eine Vielzahl von innovativen Lösungen entstanden und sie haben Ihre ganz eigenen Einsatzzwecke und sind somit Teil des Big Data Lösungsraums. Der Grundsatz ist dabei wie immer „Wähle das richtige Tool für deine Aufgabe“ und Hadoop ist eben für viele Aufgaben im Bereich von Big Data das richtige Tool. Das können Sie nach der Lektüre dieser Serie aber hoffentlich selbst bewerten und ich vertraue auf Ihr Interesse als Leser, sich tiefer in das Thema hineinzuarbeiten, z.B. mit der Lektüre des sehr empfehlenswerten Buchs (mit dem sperrigen Titel) „Big Data für IT-Entscheider: Riesige Datenmengen und moderne Technologien gewinnbringend nutzen“ meines Kollegen und Big Data Experten Pavlo Baron.

Nun aber zu Hadoop…

Fokussieren wir uns nun also auf Hadoop: Das von der Apache Software Foundation geleitete Open Source Projekt Hadoop ist ein Framework zum verteilten Speichern und parallelen Verarbeiten von großen Datenmengen in horizontal verteilten Umgebungen. Die horizontale Skalierung („Scale out“) ist dabei eines der Grundprinzipien von Hadoop, welche es ermöglicht große Datenmengen sicher und fehlertolerant auf bis zu mehreren Tausend Servern  innerhalb eines Clusters zu verteilen. Dabei kommen nicht mehr teure und spezielle Server („Scale up“) zum Einsatz, sondern es wird auf kostengünstige Commodity Hardware gesetzt.

Neben dem Speichern von großen Datenmengen ist das verteilte und parallele Verarbeiten dieser Daten eine weitere Kernaufgabe von Hadoop. Dafür hat Hadoop viele intelligente und effiziente Mechanismen entwickelt, wobei das Prinzip der Datenlokalität das Wichtigste ist. Dabei werden nicht wie in klassischen Systemen die Daten zu den Servern transportiert, die dann den Programmcode ausführen, sondern der Programmcode wird auf die Server im Cluster mit den zugehörigen Daten verteilt, dann dort verteilt ausgeführt und die (Teil-)Ergebnisse wieder zusammengeführt. Auf diese Weise werden zeitintensive Datentransfers über das Netzwerk minimiert, der Cluster skaliert sehr gut und insgesamt wird dadurch die Geschwindigkeit der Datenverarbeitung erhöht bzw. in vielen Fällen überhaupt erst ermöglicht! Dieser Ansatz der Verarbeitung bewirkt aber auch, dass Hadoop im Grundsatz ein Batch-System ist und somit z.B. weniger für Aufgaben im Realtime-Bereich oder für iterative Algorithmen geeignet ist, sondern eher den Fokus auf die – meist nachträgliche – parallele Verarbeitung und Aggregation von Daten legt. Ein Umstand den man trotz allen aktuellen Bemühungen und auch Erfolgen, Hadoop immer mehr in Richtung (Near-)Realtime zu entwickeln, niemals vergessen sollte.

Nach der kurzen Einführung in Big Data und Hadoop geht es im nächsten Teil weiter mit einer Übersicht über die Hadoop-Plattformen, folgen Sie mir einfach…

Uwe Printz

Uwe Printz ist Data Architect und Trainer. Seit dem ersten Kontakt mit verteilten Systemen lässt seine Begeisterung dafür nicht nach und zurzeit hält er sich bevorzugt im Hadoop-Zoo auf.

Share on FacebookGoogle+Share on LinkedInTweet about this on TwitterShare on RedditDigg thisShare on StumbleUpon

Kommentieren

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