2.1 Was ist HDFS und wie funktioniert es?

  • HDFS ist das verteilte Speichersystem im Hadoop-Cluster
  • es wurde für die Verarbeitung von großen Dateimengen entwickelt
  • Daten werden von HDFS in verschiedene Blöcke geteilt (im Standard 128 Megabyte-Blöcke)
  • damit ist das Hochladen von Dateien, welche größer als eine einzelne Festplatte im Festplattenverbund ist, und
    die parallele Verarbeitung aufgrund verschiedener Speicherorte möglich
  • Zusätzlich werden diese Blöcke mehrmals auf verschiedenen Clusterknoten verteilt, sodass bei Ausfall eines Knotens kein Datenverlust auftritt. Es ist somit kein zusätzliches Failover-System notwendig.

Woraus besteht HDFS?

Quelle: https://de.hortonworks.com/blog/heterogeneous-storages-hdfs/

Es gibt bei HDFS „NameNodes“ und „DataNodes“. NameNodes enthalten die Metadaten, wo welche Dateiblöcke gespeichert sind. DataNodes verwalten die Dateiblöcke selbst auf der Hardware. Die Kommunikation findet immer über den NameNode statt, welcher dann die Anfrage an den richtigen DataNode weiterleitet (siehe Grafik).

Was passiert, wenn eine Datei in HDFS geschrieben wird?

Quelle: https://de.hortonworks.com/blog/heterogeneous-storages-hdfs/

Nehmen wir an, eine Anwendung möchte eine neue Datei in HDFS schreiben. Die Anfrage geht zuerst an den NameNode, welcher für die neue Datei den zuständigen DataNode festlegt und generiert gleichzeitig einen Eintrag im NameNode für die Datei. Der DataNode sorgt dann dafür, dass die Datei geschrieben und auf verschiedenen DataNodes repliziert wird. Nachdem von allen DataNodes Erfolgsmeldungen gesendet wurden, wird dies an den NameNode weitergeleitet, welcher das Schreiben der Datei als erfolgreich meldet.

Was passiert, wenn ein NameNode ausfällt?

NameNodes sind in der Lage, neben den Einträgen lokal auch Einträge auf einem NFS zu tätigen, welcher regelmäßig gesichert wird. Außerdem kann ein „Secondary NamenNode“ eingerichtet werden, welcher eine Kopie aller Änderungslogs enthält, um Dateien wiederherstellen zu können. Hierbei handelt es sich nicht um einen Hotplug-NameNode als Alternative, wenn der primäre NameNode ausfällt.

Zusätzlich ist „NameNode High Availabilty“ in Hadoop einrichtbar, wo ein Hot Standby NameNode mit geteilten Änderungslogs vom primären NameNode eingerichtet wird. Zookeeper beobachtet in diesem Fall den aktiven primären Namenode und sorgt dafür, dass nur ein NameNode primärer Ansprechpartner im HDFS ist.

Wie kann ich HDFS verwenden?

  • über die UI von Ambari
  • über das Command-Line Interface 
  • mittels HDFS / HTTP-Proxies
  • über ein Java-Interface ähnlich dem bereits verwendeten Hive View
  • über ein NFS Gateway

Weiter geht es mit: 2.2 Daten in HDFS einspielen