Big Data und Hadoop/HDInsight für .NET Entwickler – Entwicklungsumgebung

In diesem – dem 2. Teil - der Blog-Reihe über Big Data mit Hadoop in der Microsoft-Entwickler-Welt möchte ich gerne zeigen, wie jemand, der sich für dieses Thema interessiert:

1. Die benötigte Technologie lokal installiert.
2. Die Installation überprüft

In diesem Blog-Beitrag werde ich - so gut es geht - auf Theorie und detaillierte Beschreibungen verzichten, sofern diese nicht notwendig sind, um das fertige Programmbeispiel fertig zu stellen. Theorie zu Big Data und HDInsight/Hadoop, sowie der Integration davon unter Windows könnt Ihr in meinem Blog-Beitrag „Hadoop/HDInsight Einführung Big Data mit HDInsight/Hadoop für .NET Entwickler” nachlesen.

Nachfolgend werden folgende Abschnitte beschrieben:

· Einrichten der Entwicklungsumgebung – welche Schritte werden benötigt, um Big Data Lösungen auf dem lokalen Rechner „anzuprogrammieren“.
· Verwendung der mitgelieferten HDInsight/Hadoop Überwachungs-Tools.

Warum eine lokale Entwicklungsumgebung

Seine Stärke bildet HDInight/Hadoop erst aus, wenn es in einem Cluster läuft, der die MapReduce-Jobs parallel auf riesigen Datenmengen ausführt. Als Entwickler reichen einem aber erst einmal kleine Datenmengen und eine lokale Installation. Es muss nicht gleich ein Azure HDInsight Cluster sein, das ist ja schließlich auch eine Kostenfrage, wie man sehr einfach selbst feststellen kann.

Preisübersicht für HDInsight in Azure:
https://azure.microsoft.com/en-us/pricing/details/hdinsight/ 20140925 (1)

In diesem Blog-Eintrag soll gezeigt werden, dass das „lokale Entwickeln“ hervorragend funktioniert (und erst einmal keinerlei Kosten verursacht), auch wenn man natürlich den Vorteil von HDInsight, bzw. Hadoop komplett aus der Hand gibt: der lokale Emulator unterstützt nur 1 Node, d. h. keinerlei parallele Verarbeitung der Daten.

Einrichten der lokalen Entwicklungsumgebung

Um ein „Big Data“-Beispiel programmieren zu können, werden folgende Softwarepakete benötigt:

· Ein 64-bit Windows Betriebssystem ist für den lokalen HDInsight-Emulator Voraussetzung (ein 32-Bit OS wird nicht unterstützt).
· Eine Installation von Visual Studio 2012/2013/2014.
· Microsoft „Web Platform Installer“, der die gesamte Arbeit abnimmt, um
o HDInsight/Hadoop (mit weiteren Unterprojekten, wie z. B. Hive) zu installieren, sowie
o (optional) die Installation der PowerShell durchzuführen.

Das nächste Mal werden wir noch folgendes benötigen:
· Den ODBC-Treiber für Hive, diesen bekommt ihr hier.
· Excel, um auf Hive zuzugreifen.

Ich gehe einmal davon aus, dass es keine Probleme bereitet Visual Studio auf dem lokalen Rechner zu installieren, alle anderen Schritte werden nachfolgend beschrieben.

Installation des Microsoft Web Platform Installers

Der Web Platform Installer war in gewisser Weise der Einstieg von Microsoft in die Open Source Welt. Man wollte der Open-Source Entwicklergemeinde eine Option liefern Ihre Produkte, bzw. APIs einfach auf der Windows Platform zu installieren. Beispiele hierfür sind z. B. Python, oder PHP für den IIS, es finden sich darin auch viele Klassiker der freien Software, etwa Drupal, WordPress oder DotNetNuke. Micorosft selbst liefert auch einige Tools und SDKs, wie z. B. das Windows Azure SDK for Python, oder .NET, die Office Developer Tools, oder eben den „Microsoft HDInsight Emulator for Windows Azure“, der in diesem Fall benötigt wird.

Die Microsoft Web Platform Installer-Datei findet man hier:
https://www.microsoft.com/web/downloads/platform.aspx 20140925 (2)

Rechts unten unter „Free Download“ kann der Installer (wpilauncher.exe) heruntergeladen und installiert werden. Im nächsten Schritt wird „Hadoop“ mit Hilfe des Web Platform Installers auf dem Rechner lokal installiert.

Installation des HDInsight-Emulators

Nach der Installation steht der „Microsoft Web Platform Installer“ zur Verfügung. Unter Windows 8.1 einfach in der Suchbox nach „web platform installer“ suchen und diesen starten.

20140925 (3)

Es öffnet sich ein neues Fenster, am einfachsten ist es, wenn man in der Suchbox den Begriff “HDInsight“ eingibt. Als Ergebnis sollten der „Microsoft HDInsight Emulator for Windows Azure“ aufscheinen.

20140925 (4)

Hier am Besten auf “Install” klicken und es kann losgehen mit der Installation. Je nach vorhandener Internetverbindung kann das ein klein wenig dauern. Wenn alles geklappt hat, dann ist folgendes Fenster sichtbar:

20140925 (5)

Falls Probleme auftreten, findet man in den Windows “Programs and Features” im Control Panel 2 neue Einträge:

· Microsoft HDInsight Emulator for Windows Azure
· Hortonworks Data Platform 1.1 Developer

Zur Deinstallation wählt man zuerst den Microsft HDInsight Emulator for Windows Azure, danach den Eintrag Hortonworks Data Platform 1.1 Developer und es kann wieder von vorne los gehen.

20140925 (6)

Sollten Probleme während des Downloads auftreten, so können die Setup-Dateien gelöscht werden, diese sind hier zu finden:

"c:\Users\<USERNAME>\AppData\Local\Microsoft\Web Platform Installer\installers"

20140925 (7)

Bei einem erneuten Installationsversuch werden die benötigten Dateien erneut heruntergeladen.

Optionale Installation der PowerShell

Microsoft liefert mit HDInsight auch eine Anbindung an die PowerShell mit, bzw. auch gleich einige Skripte, die das (Entwickle-)Leben mit HDInsight erleichtern. Ich würde empfehlen die Powerhell ebenfalls mit Hilfe des „Web Platform Installers“ auf dem Rechner zu installieren.

20140925 (8)

Überprüfen der Installation

Die Installation sollte ohne Problem von statten gehen. Auf dem Rechner befindet sich nun HDInsight. Das kann leicht überprüft warden, wenn man sich die lokane Dienste ansieht, hier sind einige dazu gekommen – diese Dienste sollten nun auch laufen:

20140925 (9)

Die Dienste im Einzelnen und Ihre Funktion (in aller Kürze):

· Apache Hadoop datanode: Hadoop DataNode Service
· Apache Hadoop derbyserver: Datenbank für Hive
· Apache Hadoop Historyserver: REST-Api für Statusinformationen abgearbeiteter Jobs.
· Apache Hadoop hiveserver: Hive’s native service für Client-Anbindungen
· Apache Hadoop hiveserver2: ODBC und JDBC-Unterstützung
· Apache Hadoop hwi: Hive-Web-Interface (zusätzlich zur Console)
· Apache Hadoop isotopejs: interaktive Konsole im HDInsight Management Portal
· Apache Hadoop jobtracker: Das Hadoop JobTracker-Service
· Apache Hadoop metastore: Hive/Oozie Metastore
· Apache Hadoop namenode: Hadoop NameNode service
· Apache Hadoop oozieservice: Oozie service
· Apache Hadoop secondarynamenode: 2tes NameNode (Ausfallsicherheit)
· Apache Hadoop tasktracker: Das Hadoop TaskTracker Service
· Apache Hadoop templeton: Hadoop Templeton service (REST-API für HCatalog)

Tipp: Sollten die Dienste vorübergehend nicht benötigt werden, so können diese mit Hilfe der PowerShell gestoppt (und auch wieder gestartet werden). Die CMD-Dateien, die dazu benötigt werden:

· c:\Hadoop\start-onebox.cmd
· c:\Hadoop\stop-onebox.cmd

Auf dem Desktop sind nach der Installation 3 neue Icons zu finden, diese werden wir uns nun anschließend genauer ansehen:

· Hadoop Command Line· Hadoop Name Node Status· Hadoop Map Reduce Status 20140925 (10)

Hadoop Name Node Status Übersicht

Das Hadoop Name Node Status web interface zeigt Informationen über den HDInsight/Hadoop cluster. Das sind z. B Informationen über den gesamten Speicher der zur Verfügung steht, dem verbrauchten Speicher, die Anzahl der Datenknoten (Live Nodes) und den Zustand des Clusters. Von Interesse kann auch die Anzeige des Inhaltes des Hadoop File-Systems (HDFS) sein, oder der Inhalt der Log-Dateien. Dazu später mehr, wenn das Coding startet und Dateien in das HDFS importiert wurden.

Das Name Node Status Portal ist eine Java Web Applikation, die am Port 50070 auf Zugriffe wartet. Die komplette URL kann jederzeit im Browser eingegeben und lautet (in unserem Fall): https://localhost:50070/dfshealth.jsp Noch einfacher ist der Aufruf über das Desktop-Icon:
20140925 (11)

Es öffnet sich ein Browserfenster und die Informationen über das NameNode werden angezeigt.

20140925 (12)

Hadoop MapReduce Status

Das Hadoop MapReduce portal zeigt Informationen über MapReduce Jobs an, diese werden wir im nächsten Blog-Eintrag geneuer unter die Lupe nehmen. Konfigurationsparameter und Statistiken über die Ausführung (running/completed/failed) sind hier einsehbar. Auch Log-Dateien über die Jobs sind hier abrufbar.

Diese Ansicht wird auch das JobTracker portal genannt, da jede MapReduce Operation als sogenannter Job im Cluster ausgeführt. Die URL ist hier https://localhost:50030/jobtracker.jsp.

20140925 (13)

Sollte es ein Problem mit einem MapReduce Job geben, ist das die erste Anlaufstelle zum “Troubleshooten”.

Zusammenfassung

Die Installation des HDInsight Emulator Dienstes geht ganz einfach von der Hand. Eine lokale Entwicklungsumgebung ist sehr schnell aufgesetzt, diese wollen wir im nächsten Blog gleich einmal mit einem MapReduce Job “an-programmieren” und uns genauer ansehen, wie die bestehenden BI-Tools von Microsoft in dieser neuen Umgebung verwendet und eingebettet werden können.