1.2 Hadoop starten, Ambari testen und Hive verwenden

Nachdem du alles vorbereitet hast, kannst du nun die virtuelle Maschine mit Hadoop starten. Dies dauert meist eine Weile. Danach siehst du eine grafische Ausgabe:

VirtualBox nach Import des Hadoop-Images
Ladebildschirm des Hadoop-Images

Bitte warte, bis du folgenden Ausschnitt zu sehen bekommst:

Bildschirm nach Fertigstellung der Bereitstellung von Hadoop

Danach öffnest du bitte die angegebene Adresse. Du erhälst einen Willkommensbildschirm. Bitte wähle hier „New to HDP“ aus.

In der Anmeldemaske meldest du dich mit folgenden Daten an:

  • Benutzername: maria_dev
  • Passwort: maria_dev

Du siehst nun das Ambari-Interface:

Was ist eigentlich Ambari?

Ambari ist ein OpenSource Administrationstool, welches dafür verantwortlich ist, alle laufenden Applikationen auf dem Hadoop-Cluster zu beobachten. Zusätzlich ist es eine Web-Opensource-Managementoberfläche, welches sich um das Bereitstellen, Konfigurieren und Deinstallieren von Services kümmert.

Weitere Infos unter https://data-flair.training/blogs/apache-ambari-tutorial/

Falls du einige rote Felder siehst: Kein Problem. Ambari startet für dich alle Hadoop-Services, das kann je nach Ausstattung deines Rechners auch gerne mal 10 Minuten oder länger dauern. Du brauchst nicht warten, bis alles hochgefahren ist.

Du siehst hier übrigens den ersten großen Vorteil von Hadoop: Egal, ob das Cluster nur auf einem Rechner wie bei dir läuft oder verteilt auf mehreren Rechnern: Du musst nicht genau wissen, wie das funktioniert. Hadoop übernimmt die Orchestrierung der Komponenten größtenteils für dich. Ambari stellt dir dazu noch eine Administrationsoberfläche zur Verfügung. 

Wir haben nun den Cluster erfolgreich gestartet und können uns über Ambari ein Bild über den Cluster verschaffen. Nun ist es an der Zeit, das erste Mal mit dem Cluster Daten zu analysieren. Wir haben dazu ja bereits die IMDB-Daten heruntergeladen. Wir benutzen den Service „Hive“ zum Einstieg.

Apache Hive erweitert das Big Data Framework Hadoop um die Funktionalität eines Data-Warehouse-Systems. Es ermöglicht das performante Abfragen, Zusammenfassen und Analysieren von unstrukturierten Daten mithilfe einer auf SQL basierenden Datenbanksprache.

Siehe dazu auch https://www.bigdata-insider.de/was-ist-hive-a-654184/ für die wichtigsten Funktionen und Komponenten von Hive

Der Import funktioniert direkt über eine weitere Weboberfläche innerhalb von Ambari. Bitte gehe hierfür zu „Hive View“ wie folgt:

Gehe anschließend bitte auf „Upload Table“:

Bitte wähle hier wie im Bild dargestellt „Upload from Local“ mit „File type“ = „CSV“. Bitte öffne vor dem Upload die Datei „ratings.csv“. Die erste Zeile enthält die Spaltenbezeichnung, welche wir nicht brauchen. Klicke hierbei auf das Zahnrad neben „CSV“ und aktiviere im folgenden die Checkbox für „Is first row header?“. So müssen wir die Tabelle nicht verändern. Danach wählst du die Datei „ratings.csv“ zum Hochladen auf der Hive-View-Website aus. Die Spaltennamen sollten automatisch ausgefüllt sein, bitte achte jedoch darauf, dass sie wie im Bild dargestellt ausgefüllt sind. Anschließend kannst du auf „Upload Table“ klicken. Das Hochladen in das Speichersystem von Hadoop dauert einige Zeit.

Im Anschluss laden wir noch die „movies.csv“ hoch. Klicke hierbei auf das Zahnrad neben „CSV“ und aktiviere im folgenden die Checkbox für „Is first row header?“. So müssen wir die Tabelle nicht verändern. Anschließend lade bitte auch diese Tabelle hoch.

Nachdem beide Tabellen bei Hive View hochgeladen wurden, können wir nun die ersten Abfragen durchführen. Bitte gehe dazu auf „Query“. Dann kannst du mit einem Doppelklick auf „Default“ die beiden Tabellen anzeigen, welche wir gerade importiert haben:

Mit einem Klick auf die Tabellen „movies“ und „ratings“ kannst du dir die Tabellenspalten anzeigen lassen. Wir wollen nun mal herausfinden, welcher Film die meisten Bewertungen besitzt. Dazu setze bitte folgenden SQL-Befehl ab. Damit wählen wir die Tabelle „ratings“ aus, verwenden aus dieser Tabelle movieid, erstellen die Spalte „RatingCount“ mit der Anzahl der Bewertungen für den Film, sortieren das Ganze dann nach der Anzahl von „RatingCount“ und sortieren es in absteigender Reihenfolge:

SELECT movieid, count(movieid) as RatingCount 
FROM ratings
GROUP BY movieid
ORDER BY RatingCount
DESC;

Diese Abfrage sieht nach einer normalen SQL-Abfrage aus. Wenn du diese Abfrage jedoch startest, passiert im Hintergrund deutlich mehr als nur ein SQL-Befehl auf einer relationalen Datenbank. Was genau, erkläre ich dir später.

Es dauert ein wenig, bis du das Ergebnis angezeigt bekommst. Du kannst aber auf jeden Fall sehen, dass in meinem Fall der Film mit der ID 356 mit 329 Bewertungen in den Beispieldaten enthalten ist.

Du möchtest wissen, wie nun der meistbewerteste Film aus dem Beispieldatensatz heißt? Kein Problem, probiere es doch mal mit folgender Abfrage und drücke danach den „Execute“-Button:

SELECT title 
FROM movies
WHERE movieid = 356;

In meinem Fall lautet das Ergebnis: Forrest Gump. Hätte man mit etwas Filmwissen vielleicht sogar erraten können, oder? Aber es ist doch schon erstaunlich, was man bisher aus den Datensätzen so alles machen kann? Aber einen Pfeil hab ich für den Anfang für dich noch im Köcher:

Eine weitere Auswertungsmöglichkeit, wenn du eher Bilder statt Texte bevorzugst, ist die grafische Auswertung. Klicke hierfür auf die 4. Grafik von oben in der rechten Bildleiste. Anschließend, ziehe bitte „movieid“ nach „x“ und „ratingcount“ nach „y“. Du wirst eine Grafik zu sehen bekommen, in der alle Filme mittels der ID und der Anzahl der Bewertungen ausgewertet werden. 

Man kann hier beispielsweise erkennen, dass die geringen Movie-IDs eine hohe Anzahl an Bewertungen haben im Verhältnis zu den anderen Filmen. Außerdem ist eine Lücke auffällig. Es handelt sich hier wahrscheinlich um einen Bereich von IDs, der nicht innerhalb der Datenbank vergeben wurde. 
Du kannst ruhig noch etwas im Visualisierer herumspielen, bevor du weitermachst.


Weiter geht es mit: 1.3 Grundlagen von Hadoop