Überblick Hadoop Einführung HDFS und MapReduce - doag.org · Inhalt Seite 3 1 Apache Hadoop 2...
Transcript of Überblick Hadoop Einführung HDFS und MapReduce - doag.org · Inhalt Seite 3 1 Apache Hadoop 2...
Überblick Hadoop
Einführung HDFS und MapReduce
DOAG Regionaltreffen München/Südbayern
Februar 2014
© ©
Wir fokussieren mit unseren Services die Herausforderungen des Marktes und verbinden
Mensch und IT.
Business Intelligence
Customer Intelligence
• Customer based Analytics & Processes
• Churn Prediction and
Management
• Segmentation and
Clustering
Insurance
Reporting
• Standard & Adhoc
Reporting
• Dashboarding
• BI Office Integration
• Mobile BI & InMemory
• SAS Trainings for Business
Analysts
Insurance Analytics
• Predictive Models, Data Mining & Statistics
• Scorecarding
• Social Media Analytics
• Fraud & AML
BI & Risk Risk
• Solvency II (Standard
& internal Model)
• Regulatory Reporting
• Compliance
• Risk Management
Enterprise DWH
• Data Modeling & Integration & ETL
• Architecture: DWH & Data Marts
• Hadoop & Columnar DBs
• Data Quality &
Data Masking
Themenbereiche Über metafinanz
metafinanz gehört seit 23 Jahren zu den erfahrensten
Software- und Beratungshäusern mit Fokus auf die
Versicherungsbranche.
Mit einem Jahresumsatz von 250 Mio. EUR und über
1.500 Mitarbeitern entwickeln wir für unsere Kunden
intelligente zukunftsorientierte Lösungen für
komplexe Herausforderungen
DWH Senior Consultant
Mehr als 5 Jahre DWH-Erfahrung
Oracle OWB Expertise
Oracle Datenbankentwicklung
mail [email protected]
phone +49 89 360531 5362
Ihr Ansprechpartner
Seite 2
Michael
Prost
13.02.2014 Überblick Hadoop
©
Inhalt
Seite 3
Apache Hadoop 1
Hadoop Distributed File System (HDFS) 2
MapReduce 3
Überblick Hadoop
MapReduce im Detail 4
13.02.2014
Hadoop Ecosystem 5
©
Apache Hadoop 2.1
© Seite 5
Apache Hadoop ist ein Framework für die verteilte Speicherung und Verarbeitung großer
Datenmengen basierend auf Konzepten von Google.
Skalierbare
Rechenkapazität
Hadoop MapReduce
Hadoop Distributed
FileSystem (HDFS)
Skalierbare
Speicherkapazität
Überblick Hadoop 13.02.2014
1
2
1
2
3
13.02.2014
©
Die Apache Software hat sich mittlerweile als Quasi-Standard zur Speicherung und
Verarbeitung von Big Data etabliert.
Verwaltung riesiger Datenmengen von strukturierten und unstrukturierten Daten
Linear skarlierbarer Cluster (Speicher & Performance) von Standard-Servern
Performance - Der Code wird zu den Daten auf die entsprechenden Knoten verteilt
Ein großes Ökosystem an Tools rund um Hadoop entsteht (Graphen, SQL, …)
Open Source - Kommerzielle Distributionen erhältlich (Cloudera, Hortonworks, …).
Warum Hadoop?
Seite 6 Überblick Hadoop 13.02.2014 13.02.2014
©
Auch wenn man strukturierte Daten in Hadoop speichern kann – Hadoop ist keine
relationale Datenbank.
Hadoop ist keine Datenbank
Verarbeitung un-, teil- oder strukturierter Daten
Schema on Read
Write Once Read Many
Geringe Datenintegrität
Linear erweiterbar
Hadoop
Verarbeitung strukturierter Daten
Schema on Write
Write Read Update Many Times
Hohe Datenintegrität
Nicht linear erweiterbar
Oracle
Seite 7 13.02.2014 Überblick Hadoop
©
Ein Hadoop Cluster besteht aus Commodity Servern. Use Case abhängig sind
Hauptspeicher, Festplattenspeicher und Netzwerk.
Hardware
DataNode
64-128 GB Hauptspeicher (ggfs. bis zu 512GB)
2 quad-/hex-/octo-core CPUs, 2-2.5GHz
8–14 1TB Festplatten, JBOD-Konfiguration
Bonded Gigabit Ethernet oder 10 Gigabit Ethernet
Überblick Hadoop Seite 8 13.02.2014
Quelle: http://blog.cloudera.com
©
Distributionen enthalten das Hadoop Core und die wichtigsten Komponenten des Hadoop
Ökosystems. Sie unterscheiden sich in zusätzlichen (teilw. kommerziellen) Komponenten.
Überblick Hadoop Seite 9
Hadoop Distributoren
13.02.2014
Elastic MapReduce
©
HDFS 2.2
©
Cluster
Das Hadoop Distributed File System (HDFS) speichert große Dateien durch Aufteilung in
Blöcke und verhindert Datenverlust durch Replikation.
Überblick Hadoop Seite 12
278
MB
128
MB
128
MB
22 MB
$ hadoop fs –put doc.txt
1 2
3 4 5
6 7 8
3;1;5
3;7;8
6;4;2
Client
x3
x3
x3
NameNode
13.02.2014
©
Alle Metainformationen über die Daten werden im Speicher des NameNodes verwaltet.
NameNode
Der NameNode hält die Metadaten (Namespaces) für das HDFS:
Welche Datei besteht aus welchen Blöcken?
Auf welchem Knoten liegt welcher Block?
Der NameNode Daemon muss jederzeit laufen, da ohne diese Metadaten nicht
auf die Daten im Cluster zugegriffen werden kann.
Um schnelleren Zugriff auf diese Daten zu haben, werden alle Daten im
NameNode im RAM vorgehalten.
Überblick Hadoop Seite 14 13.02.2014
©
Im Cluster gibt es zwei unterschiedliche Typen von Nodes: viele DataNodes zur
Datenspeicherung und -verarbeitung und wenige MasterNodes mit zentralen Diensten.
MasterNodes
Neben dem NameNode gibt es noch weitere Server-Dienste
Diese laufen auf sogenannten MasterNodes
Auf den MasterNodes werden keine HDFS Daten gespeichert
Für einige dieser Server-Dienste gibt es schon Hochverfübarkeitslösungen
Beispiele
NameNode (ist ein Dienst auf einem MasterNode)
ResourceManager (für Verwaltung von Jobs)
HiveServer (für SQL-Abfragen)
Überblick Hadoop Seite 15 13.02.2014
©
MapReduce 2.3
©
Data Node 1
Master Node
Client 2
Job
Tracker
Task Tracker
Job starten
Data Node 2
Task Tracker
In der ursprünglichen Architektur von MapReduce v1 steuerte der Job Tracker die Task
Tracker auf den Data Nodes und war für Scheduling und Resourcenverwaltung zuständig.
Systemarchitektur MRv1
HDFS
blocks
HDFS
blocks
Überblick Hadoop 13.02.2014 Seite 18
Client 1
©
In YARN wurde die Systemarchitektur von MRv1 überarbeitet, um die Skalierbarkeit weiter
zu verbessern und Hadoop für andere Programmiermodelle als MapReduce zu öffnen.
• Skalierbarkeit: max. 4.000 Nodes
• JobTracker konnte nur MapReduce Resourcen verwalten
Problem
• Skalierbarkeit: max. 10.000 Nodes erreicht.
• Verbesserung Resource-Management für alle Tools auf Hadoop Cluster
Ziel
• Redesign der Architektur durch YARN (MRv2)
• Split des Job Tracker Resource Manager + Job Scheduler
Lösung
Seite 19 Überblick Hadoop
MapReduce v1 YARN (MapReduce v2)
13.02.2014
©
Data Node 1
Master Node
Client 1
Client 2
Resource
Manager
Node Manager
Job starten
Data Node 2
Node Manager
Die Systemkomponenten und deren Aufgaben haben sich in MRv2 im Vergleich zu MRv1
deutlich geändert.
Systemarchitektur MRv2
Scheduler
HDFS
blocks
HDFS
blocks
Überblick Hadoop 13.02.2014 Seite 20
©
Client
Cluster
Der Code wird zu den Daten auf die entsprechende Knoten gebracht und dort lokal
ausgeführt (Map). Diese Zwischenergebnisse werden im Reducer zusammengefasst.
Grundidee MapReduce
13.02.2014 Überblick Hadoop Seite 22
protected void map(...)
throws …{
String line = value.toString();
for (char character :
line.toCharArray()) {
...
Resource
Manager
1 2
3 4 5
6 7 8
Name
Node
Daten
278 MB
128
MB
128
MB
22 MB x3
x3
x3
©
MapReduce im Detail 2.4
©
Reducer
Reducer
Mapper
Mapper
Mapper
Hadoop
besteht aus
HDFS und
MapReduce.
HDFS ist ein
Filesystem.
MapReduce
ist ein
Framework.
Mit
MapReduce
lassen sich
Daten in
HDFS
verarbeiten.
Hadoop ist
OpenSource
.
0, Hadoop
besteht aus
HDFS und
MapReduce.
38, HDFS ist
ein Filesystem.
hdfs,1
ist,1
ein,1
filesystem,1
mapreduce,1
ist,1
ein,1
framework,1
mit,1
mapreduce,1
lassen,1
sich,1
daten,1
in,1
hdfs,1
verarbeiten,1
62, MapReduce
ist ein
Framework.
90, Mit
MapReduce
lassen sich
Daten in HDFS
verarbeiten.
142, Hadoop ist
Open Source.
hadoop,1
ist,1
open,1
source,1
hadoop,1
besteht,1
aus,1
hfds,1
und,1
mapreduce,1
aus,1
besteht,1
daten,1
ein,2
filesystem,1
framework,1
hadoop,2
hdfs,3
Map Input
(Key, Value):
Offset, Textzeile
Map Output
(Key, Value):
Wort, Häufigkeit
Pa
rtit
ion
P
art
itio
n
Pa
rtit
ion
in,1
ist,3
lassen,1
mapreduce,3
mit,1
open,1
sich,1
source,1
und,1
verarbeiten,1
aus,1
besteht,1
daten,1
ein,1,1
filesystem,1
framework,1
hadoop,1,1
hdfs,1,1,1
So
rt
in,1
ist,1,1,1
lassen,1
mapreduce,1,1,1
mit,1
open,1
sich,1
source,1
und,1
verarbeiten,1
So
rt
Reducer Input
(Key, Value):
Wort, Häufigkeit
Reducer Output
(Key, Value):
Wort, Häufigkeit
HDFS Block HDFS File
Hadoop
besteht aus
HDFS und
MapReduce.
HDFS ist ein
Filesystem.
MapReduce
ist ein
Framework.
Mit
MapReduce
lassen sich
Daten in
HDFS
verarbeiten.
Hadoop ist
Open
Source.
Ergebnis
Überblick Hadoop Seite 24 13.02.2014
©
Die map()-Methode ist die einzige Methode der Basisklasse, die implementiert werden
muss.
Seite 25
package de.metafinanz.hadoop.charcount;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class CharCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String line = value.toString();
for (char character : line.toCharArray()) {
String ucChar = String.valueOf(character).toUpperCase();
for (char singleChar: ucChar.toCharArray()) {
context.write(
new Text(String.valueOf(singleChar)),
new IntWritable(1));
}
}
}
}
map()-Methode überschreiben
Parameter:
• Schlüssel (Byteoffset des Zeilenbeginns innerhalb der Datei)
• Wert (Text-Zeile)
• Context (z.B. für Output)
Überblick Hadoop 13.02.2014
0, Hadoop besteht aus HDFS und MapReduce.
©
In dem Mapper werden Input-Key und –Value verarbeitet. Hier kann beliebige Logik
implementiert werden.
Seite 26
package de.metafinanz.hadoop.charcount;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class CharCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String line = value.toString();
for (char character : line.toCharArray()) {
String ucChar = String.valueOf(character).toUpperCase();
for (char singleChar: ucChar.toCharArray()) {
context.write(
new Text(String.valueOf(singleChar)),
new IntWritable(1));
}
}
}
}
Verarbeitungslogik:
• Textzeile aus der Übergabe extrahieren
• einzelne Zeichen innerhalb der Zeile durchgehen
• Zeichen in Großbuchstaben konvertieren
• Ergebnis wieder in einzelne Zeichen umsetzen
Überblick Hadoop 13.02.2014
©
Als Ergebnis des Mappers werden Key-Value-Paare erzeugt.
Seite 27
package de.metafinanz.hadoop.charcount;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class CharCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String line = value.toString();
for (char character : line.toCharArray()) {
String ucChar = String.valueOf(character).toUpperCase();
for (char singleChar: ucChar.toCharArray()) {
context.write(
new Text(String.valueOf(singleChar)),
new IntWritable(1));
}
}
}
}
Output schreiben: context.write(Schlüssel, Wert)
Es müssen die im Klassen-Template angegebenen
Hadoop-Datentypen verwendet werden.
Überblick Hadoop 13.02.2014
hadoop,1
besteht,1
aus, 1
hfds,1
und,1
mapreduce, 1
©
Als einzige Methode der Basisklasse muss die Methode reduce() implementiert werden.
Seite 28
package de.metafinanz.hadoop.charcount;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
public class CharCountReducer extends Reducer<Text, IntWritable, Text, IntWritable>{
@Override
protected void reduce(Text key, Iterable<IntWritable> values, Context context)
throws IOException, InterruptedException {
int anzahl = 0;
for (IntWritable value : values) {
anzahl += value.get();
}
context.write(key, new IntWritable(anzahl));
}
}
reduce-Methode überschreiben
Parameter:
• Schlüssel (einzelnes Wort)
• Iterable-Objekt mit Werten, die zum Schlüssel abgelegt sind
(Anzahl)
• Context (z.B. für Output)
Überblick Hadoop 13.02.2014
aus, 1
besteht, 1
daten, 1
ein, 1, 1
filesystem, 1
framework, 1
hadoop, 1, 1
hdfs, 1, 1, 1
©
Im Reducer werden die zu jeweils einem Key gehörenden Values aggregiert.
Seite 29
package de.metafinanz.hadoop.charcount;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
public class CharCountReducer extends Reducer<Text, IntWritable, Text, IntWritable>{
@Override
protected void reduce(Text key, Iterable<IntWritable> values, Context context)
throws IOException, InterruptedException {
int anzahl = 0;
for (IntWritable value : values) {
anzahl += value.get();
}
context.write(key, new IntWritable(anzahl));
}
}
Verarbeitungslogik:
• Alle Werte zu einem Schlüssel addieren
Überblick Hadoop 13.02.2014
©
Auch die Ergebnisse des Reducers ist wieder ein Key-Value-Paar. Pro Reducer wird eine
Ergebnis-Datei erzeugt.
Seite 30
package de.metafinanz.hadoop.charcount;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
public class CharCountReducer extends Reducer<Text, IntWritable, Text, IntWritable>{
@Override
protected void reduce(Text key, Iterable<IntWritable> values, Context context)
throws IOException, InterruptedException {
int anzahl = 0;
for (IntWritable value : values) {
anzahl += value.get();
}
context.write(key, new IntWritable(anzahl));
}
}
Output schreiben: context.write(Schlüssel, Wert)
Es müssen die im Klassen-Template angegebenen Hadoop-
Datentypen verwendet werden
Überblick Hadoop 13.02.2014
aus, 1
besteht,1
daten, 1
ein, 2
filesystem, 1
framework, 1
hadoop, 2
hdfs, 3
©
Hadoop Ecosystem 2.5
©
Das Hadoop-Ökosystem besteht aus einer Vielzahl von Tools und Frameworks und wird
ständig durch neue Projekte erweitert.
Drill
Ambari
HCatalog
Cloudera Manager
Parquet
SequenceFiles
Seite 32 Überblick Hadoop 13.02.2014
©
Wir bieten offene Trainings an sowie maßgeschneiderte Trainings für individuelle Kunden.
metafinanz training
Einführung Hadoop (1 Tag)
Einführung Oracle in-memory Datenbank TimesTen
Data Warehousing & Dimensionale Modellierung
Oracle SQL Tuning
OWB Skripting mit OMB*Plus
Oracle Warehousebuilder 11.2 New Features
Einführung in Oracle: Architektur, SQL und PL/SQL
Mehr Information unter http://www.metafinanz.de/news/schulungen
All trainings are also available in English on request.
Hadoop Intensiv-Entwickler Training (3 Tage)
Seite 33 13.02.2014 Überblick Hadoop
©
Hadoop in a Nutshell – Einführung HDFS und MapReduce
Fragen? Jetzt …
Überblick Hadoop
Downloads unter
dwh.metafinanz.de
13.02.2014 Seite 35
Michael Prost
DWH Senior Consultant
mail [email protected]
phone +49 89 360531 5362
… oder später?
DWH & Hadoop Expertise
http://dwh.metafinanz.de
Besuchen Sie uns auch auf:
metafinanz Informationssysteme GmbH
Leopoldstraße 146
D-80804 München
Phone: +49 89 360531 - 0
Fax: +49 89 350531 - 5015
Email: [email protected]
www.metafinanz.de
Vielen Dank für Ihre Aufmerksamkeit!