Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Hadoop

Systemübersicht
by

Bernd Ledig

on 14 April 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Hadoop

Apache Hadoop Ökosystem HDFS Daten Import / Export
von / nach RDBMS Scoop SQL-like Interface für HDFS Hive Map & Reduce Other
RDBMS Bernd Ledig Systemüberblick Apache Hadoop Dresden 2012 Topics Big Data Kontinuierlicher Datei-Import Flume Hadoop Distributed File System HDFS Was ist Hadoop ? Wozu und wie arbeitet es ? MapReduce Ökosystem Apache Hadoop Die Datenmenge ist so groß
das traditionelle Lösungen
zu langsam,
zu klein oder
zu teuer
sind. Big Data Hadoop Core HTTP-Rest API to HDFS Hoop Per HiveQL (SQL-ähnlich) werde Daten aus dem HDFS verarbeitet.
Erzeugt "on the fly" den Map- und Reduce-Code und führt diesen aus
Wegen HDFS beschränkt auf SELECT, create table (inkl. Daten) & drop table Ab wann reden wir
von Big Data ? Ein
skalierbares fehlertolerantes verteiltes
OpenSource System
zur Datenspeicherung und Datenprozessierung auf einem Netzwerk von preiswerter Hardware Daten-Speicherung Was ist Hadoop ? Hadoop Distributed File System (HDFS): selbst heilender Cluster-Speicher mit sehr hohem Datendurchsatz Daten-Prozessierung MapReduce-Framework: ein fehlertolerantes verteiltes Job-System ist ... Hadoop Flexibel
Daten werden ohne feste Struktur gespeichert.
Strukturen (Schema) können bei Bedarf später hinzugefügt werden.

Kostengünstig
Der Preis je TB beträgt nur einen Bruchteil von traditionellen Lösungen

Hohe Verbreitung
Mit einem großen und aktiven Ökosystem.

Bewährte lineare Skalierung
Mehrere produktive Implementierungen mit 2-stelligen Petabytes. HDFS - Arbeitsweise Daten sind organisiert in Dateien und Verzeichnissen

Dateien werden in gleich große Blöcke geteilt (default 64 MB)

Die Blöcke werden mehrfach im Cluster verteilt (per default auf 3 DataNodes)

Blöcke werden mit Checksums gespeichert (Fehlererkennung & Recovery) HDFS - Arbeitsweise B1 64MB access.log
160 MB B2 64MB B3 32MB Divide DataNode 1 DataNode 3 DataNode 2 DataNode 4 NameNode access.log: {B1: DN1, DN2, DN4},
{B2: DN2, DN3, DN4},
{B3: DN1, DN3, DN4} B1 Replicate B1 B1 B2 B2 B2 B3 B3 B3 Let's Start! Processing - Script - Engine Pig native JDBC native Client Metadata Location Hadoop-Cluster Machine Learning Framework Mahout Workflow - Scheduler Oozie HBase ist die "Hadoop Database" HBase Ein "NoSQL" Datastore
Kann sehr große Datenmengen speichern
Gigabytes, Terabytes in einer Tabelle
Skaliert mit sehr hohem Datendurchsatz
> 100.000 Inserts / Sekunde
Handelt sehr gut "Sparse Data"
Tabellen können viele tausende Spalten haben; Null-Values belegen keinen Speicherplatz
Hat ein einfaches Zugriffsmodel:
Insert, read, delete rows; Full or partial table scans
Only one column (the 'row' key) is indexed Einfaches Join Hive Beispiel SELECT stock.product, SUM(orders.purchases)
FROM stock INNER JOIN orders
ON (stock.id = orders.stock_id)
WHERE YEAR(orders.order_date) = 2012
GROUP BY stock.product Liste aller Produkte mit Menge der Verkäufe System zur Verarbeitung großer semi-strukturierter Daten mit Nutzung der Hadoop MapReduce-Platform
Pig Latin: High-Level prozedurale Scriptsprache
Pig Engine: Parser, Optimizer und verteilte Query-Ausführung Beispiel Pig Input: User Profiles, Page Visits

Aufgabe:
Finde die Top 5 der Webseiten, die von Nutzern im Alter von 18 bis 25 Jahren besucht wurden Users = load ‘users’ as (name, age);
Filtered = filter Users by age >= 18 and age <= 25;
Pages = load ‘pages’ as (user, url);
Joined = join Filtered by name, Pages by user;
Grouped = group Joined by url;
Summed = foreach Grouped generate group,
COUNT(Joined) as clicks;
Sorted = order Summed by clicks desc;
Top5 = limit Sorted 5;
store Top5 into ‘top5sites’; Pig - Code In native Hadoop (Java) Mit Oozie ist es möglich, verschiedene Hadoop-Jobs in einem Workflow zu bündeln
(Scoop-, MR-, Hive- und Pig-Jobs)

Der Oozie-Server führt die einzelnen Jobs in der korrekten Reihenfolge unter Berücksichtigung der Abhängigkeiten aus Direkt in Hadoop nutzbar (fertige Jars)

Implementiert sind die 3 C's:
Collaborative filtering (recommendations)
Clustering
Classification Was ist MapReduce ? MapReduce MapReduce ist ein Methode zum Verteilen von Aufgaben über eine Menge von Nodes

Jeder Node prozessiert die Daten die auf diesen gespeichert sind

Besteht aus 2 Hauptphasen:
Map : Filtern / Transformieren
Reduce: Verdichten Wordcount: Das "Hello World" für MapReduce MapReduce Beispiel MapReduce Features Automatische Parallelisierung und Verteilung

Fehlertolerant

Status- und Monitoring-Tools

Eine klare Abstraktion für Programierer

Befreit den Entwickler vom 'Housekeeping'
Er kann sich auf das Schreiben der Map- und Reduce-Funktionen konzentrieren Input Output Ein einfacher Text als ein einfacher Input

für ein MapReduce Job als
ein einfacher
für
input
job
mapreduce
text 1
3
2
1
1
1
1
1 Mit einem Reducer (default) Wordcount - MapReduce Mapper-Sourcecode Wordcount MapReduce Input Ein einfacher Text als ein einfacher Input

für ein MapReduce Job Output als
ein einfacher
für
input
job
mapreduce
text 1
3
2
1
1
1
1
1 MapJob1 ReducerJob Map-Phase Shuffle & Sort Phase Reduce-Phase (ein,1)
(einfacher,1)
(text,1)
(als, 1)
(ein, 1)
(einfacher, 1)
(input, 1) MapJob2 (für,1)
(ein,1)
(mapreduce,1)
(job, 1) (als, [1])
(ein, [1,1,1])
(einfacher, [1,1])
.... SUM(...) Mit mehreren Reducern Wordcount - MapReduce Input Ein einfacher Text als ein einfacher Input

für ein MapReduce Job Output 1 als
einfacher
input
mapreduce 1
2
1
1 MapJob 1 ReducerJob 1 Map-Phase Shuffle & Sort Phase Reduce-Phase (ein,1)
(einfacher,1)
(text,1)
(als, 1)
(ein, 1)
(einfacher, 1)
(input, 1) MapJob 2 (für,1)
(ein,1)
(mapreduce,1)
(job, 1) (als, [1])
(einfacher, [1,1])
(input, [1])
(mapreduce, [1]) SUM(...) (ein, [1,1,1])
(für, [1])
(job, [1])
(text, [1]) Output 2 ein
für
job
text 3
1
1
1 ReducerJob 2 SUM(...) Partitioner Default ist ein Hash-Partitioner stochastische Verteilung auf Output Mit mehreren Reducern und eigenen Partitioner Wordcount - MapReduce Input Ein einfacher Text als ein einfacher Input

für ein MapReduce Job Output 1 als
ein
einfacher
für 1
3
2
1 MapJob 1 ReducerJob 1 Map-Phase Shuffle & Sort Phase Reduce-Phase (ein,1)
(einfacher,1)
(text,1)
(als, 1)
(ein, 1)
(einfacher, 1)
(input, 1) MapJob 2 (für,1)
(ein,1)
(mapreduce,1)
(job, 1) (als, [1])
(ein, [1,1,1]
(einfacher, [1,1])
(für, [1]) SUM(...) (input, [1])
(job, [1])
(mapreduce, [1])
(text, [1]) Output 2 input
job
mapreduce
text 1
1
1
1 ReducerJob 2 SUM(...) OwnPartitioner Eigener Partitioner (First-Letter-Range) Output korrekt Mit optimiertem Mapping Wordcount - MapReduce Input Ein einfacher Text als ein einfacher Input

für ein MapReduce Job MapJob 1 Map-Phase Shuffle & Sort Phase Reduce-Phase (ein,1)
(einfacher,1)
(text,1)
(als, 1)
(ein, 1)
(einfacher, 1)
(input, 1) MapJob 2 (für,1)
(ein,1)
(mapreduce,1)
(job, 1) Combiner (SUM) Eigener Combiner Reduzierung Shuffle & Sort + Reduce-Aufwand Output als
ein einfacher
für
input
job
mapreduce
text 1
3
2
1
1
1
1
1 ReducerJob (als, [1])
(ein, [2,1])
(einfacher, [2])
.... SUM(...) (als, 1)
(ein, 2)
(einfacher, 2)
.... Reducer-Sourcecode Wordcount MapReduce class WordMapper extends MapReduceBase implements Mapper {

public void map(LongWritable key, Text value,
OutputCollector<Text, IntWritable> output, Reporter reporter)
throws IOException {

String s = value.toString();
for (String word : s.split("\\W+")) {
if (word.length() > 0) {
output.collect(new Text(word), new IntWritable(1));
}
}
}
} class SumReducer extends MapReduceBase implements Reducer {

public void reduce(Text key, Iterator<IntWritable> values,
OutputCollector<Text, IntWritable> output, Reporter reporter)
throws IOException {

int wordCount = 0;
while (values.hasNext()) {
IntWritable value = values.next();
wordCount += value.get();
}
output.collect(key, new IntWritable(wordCount));
}
} Einsatz / Fazit Einsatzmöglichkeiten Analyse großer Datenmengen z.B. für
Vorschlagssystem (Recommendations)
BI - Reports
Auffäligkeiten (Clustering, Classification)
Speicherung / Auswertung großer Log-Daten
Alle Arten von Batch-Prozessierung mit großen Datenmengen und hohem Datendurchsatz
Speicherung großer Mengen von "Roh"-Daten für spätere Analysen Fazit Hadoop ist der "quasi" Standard zum Handling großer Datenmengen

Das MapReduce-Prinzip stellt ein neues Pattern zur Datenprozessierung bereit, was durchaus auch in andere System adaptiert werden sollte. Fragen ? Fragen ?
Full transcript