Hadoop, HBase, Hive, HDFS, WTF?!

Hadoop EcosystemIch glaube inzwischen ist klar geworden, dass ich mich derzeit viel mit Hadoop und allem was da dran hängt (und das ist VIEL!) befasse.

Es gibt zwar so einige Aufstellung, aber so kurz und prägnant habe ich das leider bisher noch nicht gefunden. Allgemein sind Docus zu dem Thema entweder gar nicht vorhanden oder so umfangreich, dass sie viele 100 Buchseiten füllen könnten. Der Definitive Guide von Tom White, den ich derzeit lese hat über 450 Seiten! Keine gute Lektüre für ein “Quick Hands on”! Vielleicht kann ich da Licht ins Dunkel bringen:

HDFS

HDFS steht für Hadoop Distributed File System. Und hier beginnt die Verwirrung bereits! Ein File System impliziert für mich, dass es eine bestimmt Art und Weise ist in der die Bits und Bytes auf der Festplatte abgelegt sind, wie mit Fragmentierung umgegangen wird und wie die Metadaten behandelt werden. Das ist aber nur fast richtig. HDFS benutzt jedes beliebige Dateisystem zur Datenablage. Allerdings setzt es einen Abstraktionslayer oben drauf. Metadaten und Binary Content sind noch mal in eigene Dateien gekapselt. Ziel des ganzen ist ein Dateisystem über Rechnergrenzen hinweg aufzuspannen. Da gibt es natürlich ganz andere Anforderungen als an ein typisches Dateisystem. Beispielsweise: Wie komme ich an die Daten, die auf einem anderen Rechner liegen? Wie gehe ich mit Rechnerausfällen um? Kann ich die Performance durch Loadbalancing steigern? Wie wird synchronisiert? Die Liste ließe sich vermutlich noch lange fortführen. Am Schluss kommt dann durchaus wieder ein Dateisystem heraus. Allerdings muss nicht die Festplatte nach dem Dateisystem formatiert werden sondern der Cluster.
Eine Anmerkung die ich recht spannend finde: Während die Blockgröße auf einer Festplatte heutzutage so um die 64kbit liegt, ist sie bei HDFS üblicherweiße größer 64 MegaByte

HBase

In HDFS dürfen Daten einer beliebigen Struktur abgelegt werden. HBase macht daraus eine Tabelle. Ursprünglich stammt HBase von der Google Big Table ab. HBase ermöglicht es, unsere Daten in einer strukturierten Form abzulegen. Wir haben dann also Zeilen in dessen Spalten wir unsere Daten ablegen können. Heißt das also, dass wir eine RDBMS mit der Power von Hadoop haben? Leider nicht! HBase sorgt nur dafür, dass die Daten die wir rein geben sauber aligned und delimited in Dateien gespeichert wird und auf die gleiche weise wieder ausgelesen werden können. Da von einer RDBMS zu sprechenn wäre übertrieben!

Hive

Hive bietet die Möglichkeit auf HBase Tabellen über eine SQL ähnliche Sprache zu zu greifen. Jeder der SQL kann wird keine Probleme mit der HiveQL genannten Sprache haben. Als ich mich mit Hive beschäftigt habe, ist mir die Idee gekommen einen IDBConnection Wrapper für .NET zu schreiben. Ich bin immer noch der Meinung, dass dies möglich ist. Leider hat mich die Motivation verlassen als ich bemerkt habe wie unglaublich langsam Hive ist. Hive ist leider nur dazu da Auswertungen / Aggregationen über sehr große Datenmengen zu machen. Performance sollte keine Rolle spielen dürfen. Schade!

Hadoop

Was soll jetzt bitte Hadoop sein? HDFS mit HBase/Hive reicht doch! Hadoop stellt sozusagen die Engine dar, auf die HBase erst aufsetzt. Im Grunde sin Abfragen im Hadoop Umfeld immer Map/Reduce Scripte. Map um die Daten die im HDFS liegen auszuwerten und Reduce um das Ergebnis von Map zu filtern / sortieren. (Wow, war das jetzt stark vereinfacht! Hoffentlich ließt das niemand, der wissenschaftlich an das Thema heran geht!) HBase selbst generiert aus den übergebenen Befehlen vollautomatisch Map/Reduce Scripte und sendet sie an Hadoop zur Ausführung. Das Ergebnis wird daraufhin aufbereitet und an den Clienten gesendet.
Übrigens stammt der Name Hadoop von dem Sohn eines Contributors. Der Sohn hat einen gelben Elefanten geschenkt bekommen. Als Name für den Elefanten suchte sich der Junge den Namen Hadoop aus. Das fand der Contributor so gut, dass er auch sein Projekt so benannte.

Ich hoffe ich konnte etwas Licht ins Dunkel bringen. Es gibt natürlich noch viel mehr Systeme im Context von Hadoop á là Zookeeper, Jobtracker, Pig, Chuckwa, Sqoop, … Vielleicht gibt es dazu ein andermal noch Blogartikel.

One thought on “Hadoop, HBase, Hive, HDFS, WTF?!”

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>