Sommer, Sonne, Strand und Bücher

Die Tage sind gezählt und der Sommerurlaub rückt immer näher. Wie jedes Jahr will der Lesestoff dabei gut geplant sein. Allerdings sind gottlob die Zeiten vorbei, wo man die Wahl der Strandlektüre von deren Gewicht abhängig machen musste. Dank Tablets und eBook-Reader kann man heutzutage nahezu jegliche Anzahl Bücher mit an den Urlaubsort seiner Wahl nehmen. Dieser Sommer steht bei mir ganz klar im Zeichen von Maschine Learning und fantastischer Literatur. Demnach dürfen folgende, neue Fachbücher in elektronischer Form mitreisen:

Maschinendämmerung von Thomas Rid

ist deswegen so spannend, weil es das uralt Thema Kybernetik in seiner historischen Bedeutung für das jetzt (Stichwort quantified self) beleuchtet.

Die Berechnung der Zukunft von Nate Silver

Auch wenn der Autor im aktuellen Spiegel wegen Falschprognosen im US Amerikanischen Wahlkampf sein Fett weg bekommen hat bin ich schon gespannt darauf, wie man das Bayes-Theorem ohne die eigentliche Formel erklären kann. Ich hab mich schon tapfer durch den ganzen Baseball-Kram gekämpft und hoffe jetzt auf weitere Erkenntnisse.

Passend dazu werde ich mir das eine oder andere Kapitel aus

Predictive Analytics for Dummies von Anasse Bari, Mohamed Chaouchi und Tommy Jung

ansehen. Vermutlich aber nur das IV Kapitel über die praktische Anwendung mit Python und R lesen und da mein Python auch schon etwas eingerostet ist werde ich mir noch das eine oder andere Kapitel aus

Automate the boring stuff with Python von Al Sweigart

und

Python for Data Analysis 

ansehen. Damit dürfte die 2. Woche gerettet sein, wenn der berüchtigte Informations-Turkey einsetzt.

An Romanen werde ich folgende Werke endlich mal durchlesen:

Chronik des Cthulhu-Mythos von H.P. Lovecraft 

Als echter Klassiker dieses Jahr mein „Der weisse Hai“-Ersatz. Ausserdem mag ich die Sprache der ersten Dekaden des 19. Jahrhunderts sehr gern und mein Wissen um das Gesamtwerk von H.P. Lovecraft kann eine Auffrischung vertragen. Mit

Blade Runner/Ubik/Marsianischer Zeitsturz von Philip K. Dick

steht ein weiterer Klassiker auf meiner Romanliste den ich endlich einmal durchlesen möchte obwohl ich Blade Runner schon sicherlich drei Mal gelesen habe.

 

2015 – Das Jahr der Sensoren

Big Data ist ja vor allem dort interessant, wo sich diese Daten selber erzeugen lassen. Mittlerweile gibt es für viele Lebensbereiche Systeme, mit denen man die unterschiedlichsten Daten einfach und automatisch erfassem kann. Gut ist, dass die Hersteller solcher Systeme immer mehr dazu übergehen, offene Schnittstellen für den Zugriff auf diese Daten zu realisieren. Zwar nutzen viele dieser Systeme für den Privatgebrauch zumeist Apps für iOS und Android, aber diese „sprechen“ zumeist über HTTP(S) oder Bluetooth mit den Sensoren. Systeme die keine ausreichende Dokumentation ihrer Datenschittstelle aufweisen, werde ich meiden und nur die Systeme kaufen, bei denen ich selber die Möglichkeit bekomme die Daten auszulesen. Folgende Geräte werde ich 2015 nutzen um für mich interessante Daten zu erheben:

1. Wetterstation von Netatmo

6_v

Zugegeben hat mich auch der Formfaktor dieser eleganten Aluminumröhren angesprochen. Mit Hilfe der zwei Stationen lassen sich Aussentemperatur, Luftfeuchtigkeit und Luftdruck im Aussenbereich und Temperatur, Luftfeuchtigkeit, Luftqualität, CO2-Gehalt und der Schallpegel in dB im Innenbereich messen. Einmal im WLAN konfiguriert lassen sich die Daten über eine Webseite bei Netatmo oder über eine entsprechende App für iOS (iPhone und iPad) oder Android anzeigen. Hier werden nicht nur die aktuellen Werte angezeigt, sondern auch zeitliche Verläufe dargestellt.
Zugriff auf die Daten enthält man über eine RESTful API welche hier dokumentiert ist. Auch hier erweist sich GitHub als Quelle der Wahl um die Anbindung an die Lieblingsprogrammiersprache zu finden. So findest sich hier eine Anbindung der Wetterstation in Python und hier eine für Java.

2. Die intelligente Steckdose Fritz!DECT200 von AVM

fritzdect_200_left_de_640x600

Seit dem wir Stromkunden bei Lichtblick sind und damit ausschliesslich Ökostrom beziehen, interessiere ich mich noch einmal mehr dafür, welche Gerät in unserem Haushalt wieviel Strom verbaucht. Um das herauszufinden kann man einfache Energiemonitore wie die Voltcraft-Geräte von Conrad nutzen. Da ich die so erhobenen Daten gerne digital weiterverarbeiten möchte, habe ich mich nach einem entsprechenden Gerät mit WLAN-Anschluss umgeschaut. Die Fritz!DECT200 hat sich angeboten, da wir selber eine Fritzbox von AVM für unsere Telefonie und unseren Zugang zum Internet nutzen. Allerings werden die Daten hier nicht über WLAN sondern über eine verschlüsselte DECT-Verbindung zur Fritzbox übertragen. Dort lässt sich die Steckdose auch konfigurieren und bei bedarf auch ein- und ausschalten.

Mein Ziel ist es, gängige Verbraucher mit Hilfe der Fritz!DECT200 über den Zeitraum von einer Woche zu vermessen um so ein Gefühl dafür zu bekommen, was zum Beispiel unsere Waschmaschine, unsere Spülmaschine, unser Fernseher (inkl. aller daran angeschlossener Geräte) und mein Computer pro Woche an Strom verbrauchen. Praktisch bei der Konfiguration der AVM Steckdose ist, dass sich auch der Preis einer Kilowattstunde (aus der aktuellen Stromrechnung) hinterlegen lässt.

Um an die Daten unabhängig von der Fritzbox zu kommen, bietet AVM sein Home Automation HTTP Interface an. Über diese Schnittstelle lassen sich die Daten der Steckdose auslesen oder schalten. Wer keine Lust hat die Schnittstelle selber zu implementieren wird auch auf GitHub fündig. So liefert zum Beispiel Roland Huss eine einfache Anbindung zu Perl.

3. Aktivitätstracker FitBit ZIP

simple.b-cssdisabled-jpg.h44f5ed89bcca0dbb35dbf5da738ded64.pack

Den FitBit ZIP hab ich jetzt schon über ein Jahr. Interessant an dem Gerät finde ich eigentlich nur den Schrittzähler. Nachdem ich diesen bereits Anfang letztes Jahr zur Unterstützung meiner „guten Vorsätze“ angeschaft hatte, nutze ich ihn seit Anfang diesen Jahres vermutlich aus dem gleichen Grund. Er motiviert mich das eine oder andere Stockwerk zu Fuss und nicht nur mit dem Fahrstuhl zu erreichen und er belohnt mich am Ende des Tages dafür, wenn ich ohne Schirm zu Fuss durch den Regen nach Hause gehen muss. Die Daten sind bequem über die Webseite und über die iOS oder Android App einzusehen. Auch FitBit bietet hier eine Dokumentation zu ihrer RESTful API an. Auch hier findet sich, wie bei den eingangs beschriebenen Geräten, Implementierungen der Schnittstelle für die unterschiedlichsten Programmiersprachen auf GitHub. Von Brad Pitcher stammt die Python Implementierung der API.

Mal sehen, welche der genannten Geräte ich am Ende dieses Jahres immer noch nutze und welche Ergebnisse ich mit der Nutzung von ihnen erzielt habe. Happy Hacking 2015!

Facebook mit SQL-Engine für Hadoop

banner01

In meinem Artikel in der iX 08/2013 habe ich mich mit den unterschiedlichen Produkten rund um Realtime-SQL und Hadoop beschäftigt. Nun gibt es ein solches Produkt auch von Facebook. Es heisst Presto und steht als Open Source über GitHub unter Apache Lizenz. Die Mächtigkeit der unterstützten SQL-Ausdrücke lässt zwar noch ein wenig zu wünschen übrig in der aktuellen Version 0.52, aber ein ordentliches SELECT gibt es schon mal. Wer die Geschwindigkeit von Hive kennt, wird über das Video auf der Startseite von Presto sicherlich erfreut sein. Hier findet keine aufwändige Code-Generierung für MapReduce-Jobs sondern eine echte Verteilung der SQL-Abfrage statt. Bleibt abzuwarten ob Facebook Presto in dem Umfang weiter entwickelt wie Hortonworks Stinger oder Cloudera Impala.

Hadoop-Cluster mit Einplatinencomputern

Foto 1

Der Raspberry Pi wurde mit dem Ziel entwickelt, einen einfachen und vor allen Dingen preiswerten Computer anbieten zu können. Dieser Computer sollte als Lerncomputer, Informatik Studenten an die Grundlagen der Programmierung heranführen. 1.75 Mio. Raspberry Pis wurden bisher verkauft. Kein Wunder also, dass auch andere Anbieter Einplatinencomputer herausbrachten, die das ursprüngliche Design an der einen oder anderen Stelle erweitert haben. Preislich liegen diese Platinen zwar entsprechend höher, bieten sie dafür aber interessante Features wie mehr Haupt- oder Flashspeicher, Festplatteneinschlüsse oder WLAN. So war das Cubieboard eines der ersten Einplatinencomputer mit SATA-Schnittstelle an der 2.5 Notebook-Festplatten angeschlossen werden konnten. Dieses ARM-basierte Board mit seinem doppelt so großen Hauptspeicher wie der Raspberry Pi, eignet sich denn auch für komplexere Projekte wie es der Aufbau eines vollwertigen Big-Data-System mit Hadoop 2.2.0 nötig macht. Mehr dazu am 6. November auf dem Special Day Big Data auf der W-JAX.

W-JAX Speakerbutton_de

 

Neuer Bienenstock – Neues Hive 0.11 Release verfügbar

Hive

Da haben sich alle Entwickler des freien Datawarhouses in den letzten Monaten mächtig ins Zeug gelegt. Seit der letzten Release-Veröffentlichung vom Januar diesen Jahres wurde 350 Tickets abgearbeitet. Neben einer Reihe von Bug-Fixes kamen auch einige neue Funktionen hinzu. Dazu gehören vor allem so wichtige Neuerungen wie:

  • Das neue Optimized Row Columnar (ORC) Dateiformat
  • Der neue HiveServer2 für die Anbindung mehrerer, gleichzeitiger (JDBC/ODBC) Verbindungen
  • Neue OLAP-Funktionen für das Windowing
  • Den neuen Datentyp DECIMAL
  • Implementierung des TRUNCATE Befehls, welcher die Daten innerhalb einer Tabelle löscht, deren Metadaten aber erhält

Bleibt zu hoffen, dass die Anbieter von Hadoop Distributionen wie Cloudera, Hortonworks, Intel, IBM und EMC hier bald eine Integration vornehmen.

Himbeeren für den Elefanten – Hadoop Cluster mit Raspberry Pis

Auch wenn ein Hadoop-Cluster sich auf gewöhnlicher Server-Hardware einrichten lässt, sind auch schon bei kleinen Clustern mit 4 bis 5 Nodes 5-stellige Eurobeträge fällig. So beschreibt Eric Sammer von Cloudera in Hadoop Operation das für die NameNode eines kleinen Clusters bereits 24GB RAM und eine zwei Quardcore CPUs nötig sind. Für die DataNodes dann noch mal 48GB und entsprechend viele SAS Platten.

Um den Umgang mit Hadoop zu lernen ist dieser finanzielle Aufwand nicht zu rechtfertigen. Aus diesem Grund gehen immer mehr wissenschaftliche Einrichtungen dazu über ihren Schülern und Studenten mit entsprechenden Gutscheinen von Amazon ausgestattet, um die Erstellung und Nutzung paralleler Algorithmen auf gesponserten EC2-Instanzen zu lehren.

Bryan Wann zeigt in Seinem Blog-Post auf, dass es auch anders geht. Er hat aus 7 Raspberry Pis, einem Switch, 32GB SDHC Karten und einem HELMER-Unterschrank von IKEA ein Mini-Hadoop-Cluster aufgebaut. Eine sehr coole Idee. Leider krankt es noch an der geringen RAM-Ausstattung und dem fehlenden SATA-Interface um daraus mehr zu machen, als nur ein akademisches Projekt. Vielleicht sollte man das ganze mal mit Cubieboard testen.

Groovy Baby – Datawarehousing mit Hive, Thrift und Groovy


Apaches Datawarehouse-System Hive lässt sich nicht nur über die Hive-Shell sondern auch remote über den Hiveserver abfragen. Dazu muss dieser mit geeigneten Rechten gestartet werden, ein lauffähiges Hadoop-System vorausgesetzt. Am besten ist es, man nutzt einen dedizierten Linux-Client als Hiveserver der sich dann mit der eigentlichen Hive-Installation verbindet. Im folgenden Beispiel setze ich die Installation von CDH4.1 voraus. Läuft erstmal der Hiverserver, ist die Hadoop-Distribution aber eher nebensächlich. Auf Port 10000 läst sich der Server starten mit

$ nohup hive --service hiveserver -p 10000 &

und sicher in den Hintergrund legen, wo er auf eingehende Nachrichten über das Thrift-Protokoll wartet. Auf dem Client muss Groovy lediglich die nötigen Hadoop und Hive-Bibliotheken
finden. Auf dem genutzten Ubuntu-System geschied dies am einfachsten über das hinzufügen der nötigen JAR-Pfade in der Datei

$ vi /etc/groovy/groovy-starter.conf

Folgende Zeilen müssen dazu hinzugefügt werden:

# Hadoop libraries
load /usr/lib/hadoop/lib/*.jar
load /usr/lib/hadoop-0.20-mapreduce/lib/*.jar
 
# hive libraries
load /usr/lib/hive/lib/*.jar

Danach ermöglich folgendes Groovy-Script die einfache Abfrage einer bestehenden Datenbank meine_datenbank und der Tabelle meine_tabelle mit:

1
2
3
4
5
6
7
8
9
10
11
12
import org.apache.hadoop.hive.service.*;
import org.apache.thrift.protocol.*;
import org.apache.thrift.transport.*;
 
transport = new TSocket("localhost",10000);
protocol = new TBinaryProtocol(transport);
client = new HiveClient(protocol);
transport.open();
client.execute("SELECT * FROM meine_datenbank.meine_tabelle LIMIT 10");
data = client.fetchAll();
println data.toString();
transport.close();

Nützlich ist bei eigenen Experimenten mit Thrift, Hive und Groovy ist auch die Groovy-Shell, welche interaktive Abfragen und Autovervollständigung ermöglicht.

Crunch hilft bei der MapReduce Implementierung

20121229-085440.jpg
Das neue Apache Incubator Projekt Crunch versucht die Implementierung von Java-basierten MapReduce Programmen zu vereinfachen.
Crunch implementiert dabei eine weitere Absteaktionsschicht auf Hadoops MapReduce-API um wiederkehrende Muster wie das Sortieren und Gruppieren von Elementen zu vereinfachen.
Dazu nutzt Crunch im Kern die beiden neuen Java-Typen PCollection und PTable. Auf beiden Java-Collections können foldende, einfache Operationen ausgeführt werden:

  1. parallelDo – ruft eine Benutzerdefinierte Methode mit einer PCollection auf und liefert eine PCollection zurück
  2. groupByKey – Sortiert und Gruppiert die Elemente einer PTable-Collection nach ihren Schlüsseln
  3. combineValues – Führt assoziative Operationen auf den Werten von PTable aus
  4. union – Behandelt zwei oder mehr PCollections als eine einzige PCollection

Crunch biete darüber hinaus weitere Operationen, welche auf diesen einfachen Operationen aufbauen. So lassen sich, mit deutlich weniger Code als die normale MapReduce-API von Hadoop bietet, auch komplexe Datenverarbeitungs-Pipelines implementieren.

Interessant ist auch der Scala-Wrapper Scrunch, welcher den einfachen Zugriff auf die Crunch-API von Scala aus ermöglicht.

Initiiert wurde Crunch von Cloudera.

Microsoft bringt eigene Hadoop Distribution HDinsight

20121105-063526.jpg

Anlässlich der Strata- und Hadoop World Konferenz präsentierte Microsoft die eigene Hadoop Distribution HDinsight, welche zusammen mit Hortonworks entstanden ist.

Die Produkteinführung kommt mit zahlreichen Ankündigungen.So ist neben einer Version für den Windows Server auch implementierungen für Microsofts Cloud Plattform Azur verfügbar.

HDinsight nutzt die quelloffene Hortonworks Hadoop Data Platform (HDP). Neben Anbindungen zu Excel und Power Pivot. Eine eindrucksvolle Demo findet sich auf Vimeo.

Darüber hinaus wurden JavaScript und .NET SDKs für die Entwicklung von Map Reduce Anwendung vorgestellt. Man darf gespannt sein, wohin Microsofts Hadoop Reise noch geht.

Mit der Schwarzfersenantilope auf Googles Spuren: Clouderas Impala

20121029-062335.jpg

Vielen Firmen gehen Tools wie Pig, Hive und HBase nicht weit genug. Statt große Datenmengen im Batchbetrieb zu verarbeiten geht der Trend ganz klar hin zu Lösungen für Ad-hoc-Abfragen in Echtzeit.

Eine solche Engine gibt es seit kurzem auch von einem der größten Hadoop-Distributionsanbieter Cloudera. Mit Impala (Schwarzfersenantilope) präsentiert Cloudera eine Open Source Lösung auf Basis von Hadoop und HBase.

Die Architektur von Clouderas Impala geht zurück auf Arbeiten von Marcel Kornacker bei Google für das Projekt F1. Die F1 Datenbank löst in Googles Ad-Infrastruktur die MySQL-basierte Lösung ab.

Ebenso wie F1 versucht Clouderas Impala das beste beider Welten zu vereinen. Basierend auf bewährten Technlologien für die Fehlertoleranz, Skalierbarkeit und transparente Datenverteilung wie Hadoop und HBase sie bieten, setzt Impana eine Query-Engine für die Echtzeitabfrage mit Hilfe einer SQL-artigen Abfragesprache.

Impala könnte dabei Lösungen wie Hive, welche schon seit einigen Jahren existieren und SQL-artige Abfragen in MapReduce-Task umwandeln, ablösen.