Inhaltsverzeichnis

Apache Hadoop

Hadoop ist ein Softwareprodukt für die verteilte Speicherung von Daten und ein Framework für die Verarbeitung von großer Datenmengen über das MapReduce Konzept.

Ziele von Hadopp:

  1. Skalierbare Speicherkapazität ⇒ Hadoop Distributed FileSystem - HDFS
  2. Skalierbare Rechenkapazität ⇒ Hadoop MapReduce

Zentrale Architektur Konzepte:

Vorteile:

Nachteil:

Warum ? Intention und Ziel

Schon seit längeren setzt sich der Trend ununterbrochen fort, dass sich das zu verarbeitende Datenvolumen von Jahr zu Jahr massiv vergrößert. Das aktuelle Problem, wirklich sehr großen Datenmengen verarbeiten zu müssen, lässt sich aber einer gewissen Menge an Daten nicht mehr wirklich skalierbar mit den bestehenden Lösungen umsetzen.

Daten, die im ersten Schritt für das Tags Geschäft bisher nicht so wichtige waren, müssen vermehrt ebenfalls gespeichert und verarbeitet werden. Meist sind diese, nur am Rand gesammelten Daten, aber nicht wirklich strukturiert und im ersten Schritt auch für die maschinelle Verarbeitung nicht wirklich geeignet, wie die reine Oracle Log Files, z.B. die klassische Alert.log Datei. Auch neigt diese Art von Daten stark dazu, sich von Release zu Release immer wieder zu verändern.

Auf der anderen Seite wachsen die DWH Lösungen und benötigen immer größere und kostenintensivere Umgebungen um zum Teil nur Daten vorzuhalten, auf die nur mit geringer Wahrscheinlichkeit jemals wieder zugegriffen wird. Die aber noch längerfristig für das Business durchaus noch wichtig sind. Zum Beispiel um bei Compliance Überprüfungen und ähnlichen die Einhaltung von gesetzlichen Vorgaben beweisen zu können.

Zusätzlich erschweren die kommerziellen Anbieter von Datenbank Lösungen den weiteren Aufbau ihrer eigenen Umgebungen bzw. den Einstieg in ihre eigene Produkte Landschaft mit oft astronomischen Kosten und horrenden Supportgebühren. Mit diesem Rucksack an kommerziellen und qualitativen Problemen wird oft es sehr schwer im klassischen Mittelstand noch neue Projekte mit guten Gewissen und überschaubaren Risiken aufzubauen.

Hier kann es dann nicht verwundern, dass neue und von dem Grundkonzept innovative offene Produktplattformen eine breite Basis finden. Zwar halten auch diese neuen Produkte nicht alle ihre Versprechen ein und auf den zweiten Blick fehlt oft noch so manches gewohnte Feature. Auch wird hier beim Betrieb von diesen Lösungen noch viel Geduld mit der Software Qualität abverlangt, aber es ist zu erwarten das sich hier in nächster Zeit noch viel innovativ verändert.

Eine zentrale Plattform für das Archivieren und Auswerten von diversen, schwach strukturierten Daten kann dabei unterstützen, diese neuen Anforderungen langfristig umzusetzen.

Apache Hadoop ermöglicht mit seinem zentralen Cluster Files System nach dem „Shared Nothing“ Prinzip und einem ausgeklügelten Batch Processing Framewok den Aufbau sehr großer Umgebungen für die Verarbeitung von Massendaten mit Hilfe von vielen, im Prinzip preisgünstigen Servern.

Zahlreiche weitere Entwicklungen rund um Kern von Hadoop bieten inzwischen in den Grundzügen alles an, was für den Betrieb auch sehr großer Umgebungen notwendig ist. Und das meist mit, auf den ersten Blick, kostenarmen OpenSource Lösungen.

Es ist damit um das Produkt Hadoop eine starke Community entstanden und viele Hersteller unterstützen das Hadoop Ökosystem mit immer mehr Werkzeugen und Schnittstellen.

Durch den Open Source Ansatz wird der Einstieg in Hadoop stark erleichtert, ein schneller erster Einstieg scheitert nicht gleich an unbezahlbaren Lizenzkosten.

Durch die kommerziellen Distributionen, wie MAPR und Cloudera, HortonWorks, lassen sich aber auf der anderen Seite großen Umgebungen mit einen klassischen Support Vertrag aufbauen.

Grundarchitektur Hadoop 2.0

Hadoop Distributed File System - HDFS:

Speichert die Dateien durch das Aufteilen in Blöcken und verhindert Datenverlust durch die Replikation der Blöcke über mehrere Knoten(Default 3).

 HDFS Übersicht

Die Metadaten der Namespaces des HDFS (wenn man so will die Superblock und INode Daten des Filesystems) werden in einer Datei „fsimage“ zum Zeitpunkt t gespeichert, alle Änderungen am Filesystem werden in der Datei „edits“ protokolliert.

Diese Daten werden dann entweder bei einem Neustart des NameNodes zu einer neuen „fsimage“ zusammengefügt oder regelmäßig mit dem CheckpointNode verdichtet, um den NamenNode zu entlasten.

NameNode:

CheckpointNode: (neu mit Hadoop 2.0 - vorher Teilweise im secondary name node )

Backup Node: (neu mit Hadoop 2.0 - vorher teil vom secondary name node)

DataNode:

Architektur siehe auch hier = HDFS Architektur

Wichtige Befehle um mit der Hadoop HDFS 2.0 File System (FS) Shell zu arbeiten.

Überwachen HDFS über die HTML Oberfläche

KomponenteDefault TCP PortKonfigurations Parameter
HDFS NameNode 50070 dfs.namenode.http.address
DataNodes 50075 dfs.datanode.http.address
Backup Node 50105 dfs.backup.http.address

Mit MountableHDFS- FUSE kann ein HDFS auch als „normales“ Filesystem gemounted werden:

Unter MS Windows mit Hadoop hdfs arbeiten:

MapReduce

Die verteilte Verarbeitung der Daten im Hadoop Cluster erfolgt nach dem MapReduce Muster, dabei verarbeitet jeder Knoten möglichst nur die Daten auf seinem Knoten.

Eine MapReduce Aufgabe besteht aus:

Übersicht über die Schichten von Hadoop für das MapReduce Verfahren mit YARN:  Übersicht über die Schichten von Hadoop

YARN - Yet Another Resource Negotiator ist der Resourcenmanager ab der Version 2 in Hadoop.

YARN Services:

ResourceManager:

NodeManager - NM:

ApplicationMaster - AM:

Container:

Ablauf beim Start einer Anwendung in Hadoop YARN:

 YARN Prozesse MapReduce Hadoop

siehe auch ⇒ http://hadooptutorial.info/mapreduce-job-flow/

Wichtige Befehle um mit den Hadoop MapReduce YARN Befehle zu arbeiten.

Überwachen YARN über die HTML Oberfläche

KomponenteDefault TCP Port Konfiguration Parameter
NodeManager 8042 yarn.nodemanager.webapp.address
ResourceManager 8088 yarn.resourcemanager.webapp.address
MapReduce Job History Server 19888 mapreduce.jobhistory.webapp.address

MapReduce Job erstellen

Python Beispiel:

Hardware Anforderung an einen typischen Hadoop Server

Erste Schritte mit dem Hadoop Öko System

Installation

Apache Ambari - Hadoop Cluster aufsetzen und verwalten

Wichtige Projekte im Hadoop Öko System:

Hive - HiveSQL - SQL ähnliche Abfrage Sprache

Pig - Data sets manipulation language um Map Reduces Jobs zu erzeugen

Sqoop - Daten Transfer - eine Art SQL*Loader für Hadoop

Flume - eine Art syslog Demon zum Einsammlen von Log informationen

Zookeeper – distributed cluster manager

Oozie– workflow scheduler services

Cascading und Scalding - MapReduce Jobs abstrakter definieren

Kafka - Message Verarbeitung mit http://kafka.apache.org/

SQL Engines

Storm - Realtime Hadoop

Eine Überblick über das Apache Hadoop Ökosystem:

Datenbankanwendungen auf Basis von Hadoop ohne Einsatz von MapReduce

Berichte und Auswertungen der Daten in Hadoop erstellen

Für Hadoop

Hue (http://gethue.com) ist ein Web interface für die Analyse von Daten mit Apache Hadoop.

Modern:

Traditionell:

Weitere Beispiele:

Komplexes Szenarien wie Realtime Analysen mit elasticsearch und Kibana umsetzen:

Integration in Bestandssysteme

Siehe auch meinen Vortrag zu diesem Thema auf einem DOAG Hadoop Workshop:
DOAG -Big Data für Oracle Entwickler: Zweitagesveranstaltung mit Hands-On - 25.09.2014 in Köln

Hadoop Varianten

Eine der vielen Hadoop Distributionen ist zum Beispiel:

Unter Cloudera QuickStart VM steht eine VM für den schnellen Einstieg in das Thema zur Verfügung. Eine Einführung in die VM kann hier gefunden werden:http://www.youtube.com/watch?v=o19zLaTuuSk .

Leider laufen in dieser Cloudera VM die VMWare Tools auf anhieb nicht (Fehler vmware-user: could not open /proc/fs/vmblock/dev. !), nach einer Installation der VMware X Trieber (yum install xorg-x11-drv-vmware.x86_64) und einer erneuten Durchlauf des Konfigurationsprogrammes ( vmware-config-tools.pl ), Neustart x mit STRGALT und einen nachfolgenden Reboot funktioniert es besser.

Alternativ:

Tipp:

Nach dem Download funktioniert das Netzwerk der VM's oft nicht, da es sich um 6 Linux Clone handelt ( Lösung siehe hier : Oracle Linux 6 - "Device eth0 does not seem to be present" nach Klonen einer virtuellen Maschine.

BigDataLite VM von Oracle

Eine VM von Oracle zu dem Thema BigData kann hier gefunden werden:
http://www.oracle.com/technetwork/database/bigdata-appliance/oracle-bigdatalite-2104726.html

Um die VM in VMWare zu verwenden:

Erste Schritte und Testes:

Alternativen zu Hadoop als Filesystem

Quellen

In den Detail Artikeln zu Hadoop wird auf weitere Quellen verwiesen.

Vorträge:

Hadoop DWH Konzepte:

IBM