Code lesen dank Open-Source
Möchten Sie sich das Programmieren selbst beibringen, können Sie zweifelsohne zentnerweise Dokumentationen und Bücher lesen. Sind Grundkenntnisse vorhanden, ist das Lesen von aktuellen Code-Beispielen meist viel effizienter, insbesondere wenn diese gut dokumentiert sind. So finden Sie beispielsweise heraus, ob der Programmierer viel Aufwand investiert, Dinge in kleine Klassen herunter zu brechen, die ihrerseits für kleine Teilaspekte zuständig sind oder ob die gewählte Architektur Raum für Erweiterungen lässt. All solche Fragen lassen sich durch das Lesen von Code beantworten. Und: die Möglichkeit dies tun zu können, ist ein weiterer wichtiger Aspekt von Open-Source-Projekten. Das Mitwirken bei einem Open-Source-Projekt kann sich übrigens auch als wichtiger Faktor bei der Job-Suche erweisen.
Vergessen Sie Hadoop
Big Data ist in aller Munde. Fällt in den Chefetagen unserer Unternehmen allein das Wort, reagieren Manager und Schlipsträger euphorisch und fragen Sie nach der besten und größten Big-Data-Lösung, als ginge es um den Kauf einer Yacht oder eines Hochhauses. Das Verrückte daran ist: die meisten Probleme sind schlicht nicht groß genug, um den Einsatz einer Big-Data-Lösung zu rechtfertigen.
- Apache YARN - Hadoop-Architektur
Seit der Version 2.0 des MapReduce-Algorithmus (MRv2), eingeführt mit der Hadoop-Version 2.3, hört das Framework auf den Namen NextGen MapReduce (YARN). YARN egalisiert eine Reihe von Defiziten der Vorgängerversion in den Bereichen Echtzeitfähigkeit und Sicherheit. Die fundamentale Neuerung in der YARN-Architektur besteht darin, die zwei Hauptfunktionen Ressourcen-Management und Job-Scheduling/Monitoring in zwei separate Daemons aufzuteilen. - Apache Hive - Abfrage
Die Grafik zeigt den Query-Editor in Apache Hive. Hive erweitert das MapReduce-Framework um eine Abstraktionsebene mit der SQL-ähnlichen Abfragesprache HiveQL. HiveQl ermöglicht das Absetzen klassischer Abfragen und damit das Analysieren der im HDFS abgelegten Daten. Man kann sich Hive auch als Data-Warehouse-Komponente des Hadoop-Frameworks vorstellen. Der Query-Editor in Apache Hive. - Apache HCatalog - Management
HCatalog ist für das Management von Metadaten in Hadoop von großer Bedeutung. Die Grfik zeigt eine Table-List in Hcatalog. - Apache Pig - Scripting Engine
Die Scripting-Engine Apache Pig. - Apache Knox - Sicherheit
Apache Knox kümmert sich primär um die Cluster-Ebene und erweitert das Hadoop-Security-Modell für alle Nutzer, die auf die Cluster-Daten zugreifen, mit Hilfe von Authentifizierungsrollen. - Hortonworks und Hadoop
So stellt sich Hortonworks eine moderne Data-Architektur vor. Auf Basis der Data-Systeme operieren Big-Data-Lösungen wie Hadoop gleichberechtigt neben SQL-Datenbanken wie SQL-Server, Oracle oder SAP Hana und können bei Bedarf Daten miteinander austauschen. Applikationen wie SAP greifen nach Belieben auf die verfügbaren Daten zu. - Cloudera und Hadoop
Die Hadoop-Distribution "CDH" von Cloudera ist vom Anbieter mit dem Prädikat „enterprise ready“ versehen und beinhaltet eine Reihe eigener Entwicklungen. Im Kern verwendet allerdings auch CDH YARN für das Workload-Management und setzt wahlweise auf HDFS oder Hbase als Storage-Engine. - Amazon EMR und Hadoop
Amazon Elastic Map Reduce unterstützt inzwischen alle Hadoop-Versionen von 0.20 über 1.0.3 bis zu den aktuellen Versionen 2.2 und 2.4. Darüber hinaus arbeitet EMR auch mit den Cluster-Typen Hive, Custom JAR, Pig, Hbase und Streaming.
Sicher, Google und Yahoo tracken unser aller Surf-Verhalten und hantieren dazu mit Dateien im Petabyte-Bereich. Auch die NSA hat sicher einen Bedarf an der Beschäftigung von Big-Data-Spezialisten. Die meisten heutigen IT-Probleme haben allerdings mit Datenmengen zu tun, die problemlos ins RAM eines Desktop-PCs passen. Bei den meisten Algorithmen ist es zudem überhaupt nicht notwendig, Daten in den Arbeitsspeicher zu laden, weil das Streamen von SSDs wunderbar funktioniert. Sicher gibt es Situationen, die die Antwortzeit von dutzenden parallel rechnenden Knoten einer Hadoop-Cloud erfordern, aber bei den meisten Problemen der Gegenwart genügt eine einzige Maschine.
Nicht das Rad neu erfinden
Die Programmiersprache Scala ist das prominenteste Beispiel einer Sprache, die viele Vorzüge hat, das Rad aber nicht in jedem Punkt neu erfindet. Scala-Programme sind beispielsweise in der Lage Java-JARs ansprechen. Das gilt auch umgekehrt. So können Scala-Programmierer beispielsweise sämtliche existenten Java-Bibliotheken und -Frameworks in ihre Projekte einbinden und nutzen. Das gilt sogar für die meisten Tools und Entwicklungsumgebungen wie Eclipse oder NetBeans.
Es ist noch gar nicht so lange her, da mussten Entwickler bei einer neuen Programmiersprache quasi immer bei null anfangen. Dann kamen kluge Leute auf die Idee, dass es viel effizienter ist, auf die Arbeit aufzusetzen, die anderen schon geleistet haben. Also schreibt man eine Art Präprozessor, der neuen Code lediglich in etwas umsetzt, wofür es bereits APIs und Bibliotheken gibt. Werfen Sie beispielsweise einen Blick auf Groovy, eine einfachere Version von Java, ohne aufwendige Syntax. Groovy ist eine Programmier- und Skriptsprache mit Unterstützung für dynamische und statische Typisierung.
Bei genauerem Hinsehen gibt es heute dutzende von Sprachen - auch Scala oder Clojure zählen dazu - die in einer JVM laufen. Dies garantiert unter anderem eine schnelle, quasi sofortige Verfügbarkeit für zahlreiche Plattformen. Speziell bei Groovy ging es den Entwicklern primär darum, eine wenige kantige und komplexe Variante der Java-Syntax mit Konzepten von Ruby zu verbinden. Ein weiteres interessantes Beispiel für einen Quasi-Präprozessor ist CoffeeScript. CoffeeScipt ist eine Programmiersprache, die nichts anderes macht, als in CoffeeScript geschriebenen Code in JavaScript zu trans-kompilieren.