Big Data Twitter Demo – Aufbau (2 von 3)
Dies ist ein Tutorial zum Aufbau der Big Data Twitter Demo. Die große Übersicht wurde bereits im Artikel Big Data Twitter Demo – The Big Picture erläutert.
Dieser Artikel ist folgendermaßen aufgebaut:
- Voraussetzungen
- Speicherkonto und Virtuelle Maschine in Windows Azure
- SQL Azure Datenbank in Windows Azure
- HDInsight
- Virtuelle Maschine
- Demo-Maschine
1. Voraussetzungen
Die gesamte Demo ist auf Windows Azure basiert. Dafür braucht man ein Windows Azure Konto. Falls noch nicht vorhanden (z.B. über die MSDN Subscription), kann man sich auf https://aka.ms/azurenow für eine kostenlose Testversion anmelden.
Darüber hinaus hat man idealerweise die 64-Bit Version von Microsoft Excel installiert. In Excel nutzen wir Power Pivotund Power View.
Der Source Code der Big Data Twitter Demo der Microsoft-Kollegen ist ESSENTIELL: https://twitterbigdata.codeplex.com/ Ohne deren großartige Arbeit wäre diese Demo erst gar nicht möglich.
Großen, großen Dank an die Verantwortlichen für das Projekt: Vu Le und Andrew Moll, wie auch Cindy Gross!
Vom Vorteil ist auch der Order Big Data Twitter Demomeiner einer, der Text-Dateien zum Setup (den es auszufüllen gilt!) wie auch zu den Hive-Abfragen enthält.
2. Speicherkonto und Virtuelle Maschine in Windows Azure
Zunächst richten wir ein Blob-Speicher-Konto ein. Auf dem Windows Azure Management Portal klickt man dabei auf neu.
Mit “Quick Create” oder “Schnell erfassen” erstellen wir ein Speicherkonto, z.B. twitterstor. Nennen wir es <storage-account>. Hierbei ist wichtig, das Speicherkonto in East US oder North Europe zu erstellen, auf denen der HDInsight Service läuft. Geo-Replikation kann man deaktivieren, um weitere Kosten zu sparen. Das Speicherkonto ist der Ort des Windows Azure Blob Storage, auf das wir noch später eingehen werden.
Daraufhin erstellen wir eine virtuelle Maschine mit dem neuesten Image von Windows Server, hier Windows Server 2012 R2.
Die virtuelle Maschine nutzt 4 Kerne, und könnte twittervm genannt werden, allgemein <virtual_machine> mit Benutzernamen <virtual_machine_user> und Passwort <virtual_machine_password>.
Diese virtuelle Maschine basiert auf das zuvor erstellte Speicherkonto, z.B. twitterstor, allgemein <storage_account>.
Zum Schluss auf fertig klicken, und so hat man ein Speicherkonto mit assozierter virtueller Maschine.
Zusammenfassend:
Speicherkonto | <storage_account> |
Virtuelle Maschine | <virtual_maschine> |
Benutzername auf der VM | <virtual_machine_user> |
Passwort auf der VM | <virtual_machine_password> |
3. SQL Azure Datenbank
Nun erstellen wir eine SQL Azure Datenbank, indem wir wie zuvor links unten auf Neu klicken. Um sicherzugehen, dass die SQL Azure Datenbank im gleichen Azure Datencenter wie das zuvor eingerichtete Speicherkonto erstellt wird, erstellen wir eine benutzerdefinierte SQL Datenbank:
Am besten den Namen der Datenbank in der Setup-Textdatei notieren.
Hier kann man sicherstellen, die Datenbank in der gleichen Region wie das Speicherkonto erstellen.
So wurde automatisch ein SQL Server erstellt:
Um eine Verbindung zwischen der virtuellen Maschine und der SQL Datenbank zu erstellen, werden die erlaubten IP Adressen in der SQL Azure Datenbank in dessen Dashboard verwaltet:
Da erstellen wir eine weitere Regel, mit der alle IP Adressen erlaubt sind, namens allowall. Hier ist auch zu merken, dass automatisch auf die Konfigurationsseite des SQL Servers gewechselt wird.
Daraufhin auf Verwalten oder Manage unten klicken, wo man auf der Login-Seite und daraufhin der Übersicht der SQL Datenbank landet:
Sobald auf der Übersicht, wähle die zuvor erstellte Datenbank aus, also <sql_database>.
Erstelle eine neue Abfrage und dann ausführen:
create login <virtual_machine_user> with password=<virtual_machine_password>;
Diesen Login machen wir mit einer weiteren Abfrage zu einem Benutzer:
create user <virtual_machine_user> from login <virtual_machine_user>;
go
exec sp_addrolemember ‘db_owner’, ‘<virtual_machine_user>’;
go
In dem Source Code von https://www.twitterbigdata.codeplex.com im Ordner “Other Resources” finden wir die SQL Datei Create Azure DB Objects.sql, die wir öffnen und ausführen. So wird eine Template Tabelle in der SQL Azure Datenbank erstellt.
Zusammenfassend:
Name der SQL Azure Datenbank | <SQL_database> |
Name des SQL Azure Servers | <SQL_server> |
URL des SQL Azure Servers | <SQL_server>.database.windows.net,1433 | https://<sql_server>.database.windows.net/#$database=<sql_database_name> |
SQL Admin Login | <SQL_admin> |
SQL Admin Passwort | <SQL_password> |
SQL Azure Datencenter | <azure_datacenter> (z.B. Nordeuropa) |
4. HDInsight
4.1. HDInsight Cluster erstellen
Nun geht es an den HDInsight Service, der nun auch GA ist!
Per benutzerdefinierten Erstellung wird ein HDInsight Cluster wie folgt erstellt:
Cluster Name | <HDInsight_name> |
Region | so wie <azure_datacenter> (siehe oben) |
HDInsight Administrator | <HDInsight_admin_name> |
HDInsight Administrator Passwort | <HDInsight_admin_password> |
RDP Adresse | <HDInsight_name>.azurehdinsight.net |
Der HDInsight Cluster wird ebenfalls mit dem oben erstellten Speicherkonto (also <storage_account>) assoziert.
Es wird einige Minuten dauern, bis der HDInsight Cluster erstellt ist. Ergebnis sollte dann so aussehen:
Um Hadoop und Hive später laufen zu lassen, aktivieren wir Remote Access auf der Konfigurationsseite des HDInsight-Clusters:
Der Benutzername für die Remote-Verbindung ist aus Sicherheitsgründen nicht identisch mit Administrator des HDInsight-Clusters.
RDP Benutzername | <HDInsight_rdp_user> |
RDP Passwort | <HDInsight_rdp_password> |
4.2. Hive
Sobald eingeloggt, kopieren wir die Text-Dateien im Ordner Hive unter Big Data Twitter Demo in einen neu erstellten Ordner C:\hivescripts im HDInsight-Cluster, die alle möglichen Hive-Abfragen enthält:
Diese Abfragen werden erst während der Demo relevant.
5. Virtuelle Maschine
Nun müssen einige Sachen in unserer Virtuellen Maschine <virtual_machine> ingerichtet werden, um das Extrahieren der Tweets in Echtzeit zu ermöglichen. Per RDP verbinden wir uns mit der eingerichteten Instanz der virtuellen Maschine:
5.1. WebSockets
In der virtuellen Maschine werden wir nun WebSockets aktivieren. Das WebSocket-Protokoll ist ein Netzwerkprotokoll basierend auf TCP für die Herstellung einer bidirektionalen Verbindung zwischen einer Anwendung und einem Web-Server. Da das Extrahieren der Tweets über diese VM geschieht, fügen wir WebSockets als Rolle in der VM hinzu.
Nachdem wir uns per RDP in der virtuellen Maschine per <virtual_machine_user> und <virtual_machine_password> eingeloggt haben, öffnet sich automatisch der Server Manager (wie es sich für Windows Server 2012 R2 gehört). Im Server Manager rufen wir den Assistenten auf, um Rollen und Features hinzuzufügen:
Daraufhin öffnet sich der Assistent dazu. Wir wollen die Web Server Rollen wie auch die Features .NET Framework 4.5 und HTTP Activation hinzufügen:
Im Bereich der Anwendungsentwicklung wollen wir insbesondere das WebSocket Protokoll hinzufügen:
Um das Browsen im Internet Explorer innerhalb der VM zu erleichtern, schalten wir die erweiterten IE Sicherheitseinstellungen aus, in dem wir auf den Lokalen Server im Server Manager gehen:
Im Windows Azure Management Portal fügen wir mit Hinblick auf die HTTP Aktivierung noch einen HTTP Endpoint zur VM hinzu:
Kurzes Recap: Wir haben WebSockets als Server-Rolle mitsamt HTTP-Endpoint zur VM hinzugefügt.
5.2. StreamInsight
Die Visual Studio Solution zur selektiven Extrahierung aller weltweiten Tweets ist StreamInsight nötig. In der VM laden wir StreamInsight 2.1 vom Microsoft Download Center herunter:
StreamInsight kann man als kostenfreie Testversion für 30 Tage nutzen, wenn man keinen Produktschlüssel parat haben sollte. Bei der Installation installieren wir sogleich eine Instanz, sei es <stream_insight_instance> oder hier im Diagramm oldktwDemo. Am besten den ausgewählten Name der <stream_insight_instance> in der Setup-Textdatei notieren.
Sobald die Installation fertig gestellt ist, werden noch die x86-Version und daraufhin die x64-Version der SQL Compact Edition 3.5 SP2 + CU4 (oder höher) installiert. Diese sind üblicherweise unter [C:\Program Files\Microsoft StreamInsight 2.1\Redist\](C:\Program%20Files\Microsoft%20StreamInsight%202.1\Redist\) zu finden:
Kurzes Recap: Wir haben StreamInsight installiert, genauer gesagt: eine StreamInsight-Instanz <stream_insight_instance>.
5.3. Port/Firewall-Einstellungen
Nun wollen wir sichergehen, dass der TCP Port 1433 auch erlaubt wird.
Dafür suchen wir im Startmenü in der VM nach der Firewall Applikation und öffnen die Ansicht der Outbound Rules (ausgehende Regeln). Da erstellen wir eine neue Regel namens SQLDefaultPort:
Was wir in allen Netzwerken (Heim-, Domänen- und öffentliches Netz) erlauben wollen ist der TCP Port 1433, wie man in den folgenden Graphiken sehen kann:
Das Resultat ist eine weitere Outbound Regel namens SQLDefaultPort:
5.4. Internet Information Services (IIS)
Nun wollen wir Directory Browsing im IIS Manager aktivieren. Dafür tippt man einfach im Startmenü drauf los mit IIS, und schon erscheint der IIS Manager als Option.
5.5. Visual Studio Solution TwitterCEP
Nun installieren wir Visual Studio auf der VM, sei es über die MSDN Subscription oder der Visual Studio Download Seite.
Auch den Source Code der Twitter Big Data Codeplex Seite auf die VM herunterladen (siehe Schritt 1 – Voraussetzungen). Sobald Visual Studio installiert ist, können wir die Visual Studio Lösung TwitterCepSolution.sln unter TwitterCEP in Visual Studio öffnen.
Beim Öffnen der Visual Studio Solution können wir die Source-Control Meldungen ignorieren:
Sobald geöffnet, öffne die JavaScript-Datei default.js, die im Ordner StreamInsight.Demos.Twitter.RealTimeDashboard zu finden ist. Hier wollen wir sichergehen, dass die Variabel wsHost auf localhost oder die IP Adresse der VM gesetzt ist:
Dann können wir uns daran setzen, die App Einstellungen in der Visual Studio Solution zu setzen. Die findet man in der Konfigurationsdatei app.config unter StreamInsight.Demos.Twitter.Client:
Ergänze hierbei folgende Werte laut der Setup-Textdatei (die wir im Laufe dieses Tutorials weiter ausgefüllt haben):
instance_name | <stream_insight_instance> |
twitter_username | <twitter_name> |
twitter_password | <twitter_password> |
twitter_keywords | <twitter_keyword1, twitter_keyword2,…> |
blob_container_name | <hdinsight_container> |
db_server_name | tcp:<sql_server>.database.windows.net,1433 |
db_name | <sql_database> |
db_user | <SQL_admin> |
db_user_pwd | <SQL_password> |
ws_url | localhost |
Um die nötigen Informationen zum Azure Blob Storage anzugeben, müssen wir nochmal zum Azure Management Portal auf das Speicherkonto gehen. Beim Anklicken des Speicherkontos sieht man unten zentral einen Knopf, um dessen Zugangsschlüssel zu verwalten. So erhalten wir einen weiteren Wert für unsere Setup-Textdatei: <storage_account_key>.
Zurück in der Konfigurationsdatei der Visual Studio Solution ergänzen wir folgenden Wert:
blob_storage_account | DefaultEndpointsProtocol=https;AccountName=<storage_account>; AccountKey=<storage_account_key> |
Dann ergänze mtcaustin mit dem Namen deiner virtuellen Maschine, also <virtual_machine>.
5.6. Twitter-Streaming Einstellungen
Möglicherweise ist schon aufgefallen, dass noch vier weitere Einstellungen in der app.config-Datei ausstehen. Richtig – irgendwas mit Twitter! Weil dürfen wir echt einfach so alle – also wirklich ALLE – Twitter-Daten kriegen?! Nur mit einer bestimmten Authentifizierung.
Dafür gehen wir auf die Seite für Twitter Developers, um eine Applikation zu erstellen/registrieren: https://dev.twitter.com/apps. Beim Erstellen einer neuen Applikation gibst Du folgende Sachen ein:
Name: | TwitterBigDataDemo |
Description: | SQL Server StreamInsight for a real time Dashboard oder ähnliches |
Website: | https://<virtual_machine>.cloudapp.net/RTDashboard/ |
So erhalten wir einen Consumer Key wie auch Consumer Secret. Beim Runterscrollen kann man noch Access Tokens erstellen:
Beim Klicken dieses Buttons erhält man diese auch sogleich:
Diese Werte ergänzen wir sowohl in unserer Setup-Textdatei als auch in app.config:
oauth_consumer_key | <twitter_consumer_key> |
oauth_consumer_secret | <twitter_consumer_secret> |
oauth_token | <twitter_access_token> |
oauth_token_secret | <twitter_access_token_secret> |
5.7. Letzte Sachen…
Um alle eingehenden Tweets vollständig im Blob Storage zu speichern, kann man in BlobHelper.cs unter StreamInsight.Demos.Twitter.Common folgende Veränderung vornehmen:
Änder string.Format("{0}/{1}.txt” zu string.Format("twitter/{0}/{1}.txt" um.
Noch zwei letzte Sachen:
Zum erleichterten Start der Visual Studio Solution ist es ratsam, eine Verknüpfung des Ordners TwitterCEP und der Datei TwitterCepSolution.sln auf den Desktop zu kopieren.
Und zu Allerletzt empfiehlt es sich, die virtuelle Maschine auf den neuesten Stand bezüglich des Betriebssystems zu bringen:
6. Demo-Maschine
Im letzten Part des Aufbaus knöpfen wir uns unsere eigene Maschine jenseits der Wolke Azure vor.
6.1. CloudXplorer
Um mitverfolgen zu können, was denn im Laufe der Demo an Daten alles zusammengekommen ist und was genau im Azure Blob Storage gespeichert ist, bietet sich der CloudXplorer sehr gut an. Da richten wir unser Speicherkonto von Schritt 1 ein:
Der Name wie auch der Secret Key erhalten wir von der Setup-Textdatei, mit der wir ja im Laufe der Demo Buch geführt haben: <storage_account> und <storage_account_key>.
6.2. Excel – ODBC Treiber
Für die Verbindung zwischen den Hive Tables (die im HDInsight Cluster im Analyse-Stadium erstellt wurden) und Excel muss zunächst ein Hive ODBC Treiber installiert werden. So können wir per Business Intelligence auf Excel die Hive Tables integrieren. Wichtig bei der Installation ist, welche Bit-Version von Excel auf der Demo-Maschine bereits vorhanden ist. Wenn es die 64-Bit Excel Version ist (die wärmstens angesichts der großen Datenmengen zu empfehlen ist), eignet sich nur der 64-Bit ODBC Treiber, wie unten angeklickt:
Sobald installiert, rufen wir den ODBC Administrator vom Startmenü aus auf:
Daraufhin fügen wir einen Hive Connector hinzu, den wir liebevoll TwitterHive nennen.
Bei der Auswahl des Treibers für eine neue Datenquelle nehmen wir den Hive ODBC Driver:
Bei den Einstellungen geben wir folgende Informationen ein und testen die Verbindung:
Host | <hdinsight_name>.azurehdinsight.net |
Port | 443 |
User Name | <hdinsight_admin_name> |
Password | <hdinsight_admin_password> |
Beim Test sollte ein SUCCESSFUL stehen :)
Nun öffnen wir die Excel-Datei, die im Source Code der Big Data Twitter Demo auf Codeplex vorhanden ist (TwitterAnalysisFull.xlsx). In Excel selber öffnen wir die PowerPivot Tabelle über PowerPivot –> Manage:
In PowerPivot gucken wir uns die bereits vorhandenen Verbindungen an:
Zu sehen sind zwei PowerPivot Datenverbindungen: HOA (zum HDInsight-Cluster) und SqlServer… (zur SQL Azure Datenbank). Zunächst bearbeiten wir die SQL-Datenverbindung, wo wir folgende Informationen einfügen:
Server Name | <sql_server>.database.windows.net,1433 |
SQL Server User Name | <sql_admin> |
SQL Server Password | <sql_password> |
Database Name | <sql_database> |
Beim Testen sollte ebenfalls success stehen:
Das Gleiche nun auch mit der Hive-Verbindung:
In den Eigenschaften fügen wir folgende Sachen ein:
Data Source Name | TwitterHive |
User Name | <hdinsight_admin_name> |
Password | <hdinsight_admin_password> |
Hier erlauben wir das Speicher des Passwortes, und testen die Verbindung:
Wenn da ein Fehler mit Architecture Mismatch steht, liegt es daran, dass die Bit-Versionen von Excel und dem ODBC Driver nicht vertragen, sprich: sind unterschiedlich. Entweder beide in 32-bit oder 64-bit.
Und Voilà, fertig mit dem Aufbau!
Im nächsten Beitrag gehen wir dann tatsächlich die Demo durch, wie man die zeigen würde.
Comments
- Anonymous
March 23, 2014
Du willst auch so ein Twitter-Echtzeit-Dashboard inklusive aller tollen Animationen bauen? Du willst