Infrastructure as (real) Code – Manage your K8s resources with Pulumi
The Hadoop Connection
1. MapReduce: The Hadoop Connection
JAX 2010
06.05.2010 | 08:30 - 09:45
Tobias Joch
inovex GmbH
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
4. lance@twitter
„In 140 characters tell me why
map reduce is important please.“
4
5. Beispiel Antworten auf lance‘s Frage
infloop: @lance Some computing tasks can be
split up into small chunks, processed
simultaneously, and then reassembled at the end.
Think SETI@HOME
rjurney: @botchagalupe With map/reduce we’re
going to start making productive use of all that
data lying around, informing nothing.
talltodd65: @Lance MapReduce is ideal for
processing very large data sets on a cluster of
computers
5
6. Motivation
Verarbeiten großer Datenmengen
Web Scale
Häufigkeiten zählen, Invertierten Index berechnen, ...
Verteiltes Rechnen
Programmiermodell
Last- und Datenverteilung
Hochverfügbarkeit auf billiger Standard Hardware
Berechnung auf mehrere Rechner verteilen
Geographisch verteilt
6
7. Moore‘s Law
“The density of
transistors on a
chip doubles every
18 months, for the
same cost” (1965)
7
13. MapReduce
Paper von Google (2004)
Software Framework zur parallelen Verarbeitung von
großen Datenmengen
Einsatz von „Commodity Hardware“ (Fehlertolerant)
Inspiration durch die map/fold Funktionen aus der
funktionsorientierte Programmierung
Klare Abstraktion für Programmierer
Versteckt Low-Level Details
Datenverteilung, Loadbalancing, Fehlertoleranz,
Parallelisierung
13
14. MapReduce
Programmiermodel
Datenverarbeitungsmodell (Pipes, Queues, ...)
Berechnung wird in Form von zwei Funktionen vom
Benutzer beschrieben
map()
Filterung und Transformation in Zwischenergebnisse
Ausführung findet parallel statt
reduce()
Aggregation der Zwischenergebnisse
Typischer Weise 0,1 Ergebnisse pro K‘
Ausführung kann auch parallel statt finden
14
15. „Hello World“ für MapReduce: Word Count
map()
function map(String key, String value):
// key: document name
// value: document contents
foreach word w in value:
EmitIntermediate(w, "1");
reduce()
function reduce(String key, Iterator values):
// key: a word
// values: a list of counts
int result = 0;
foreach v in values:
result += ParseInt(v);
Emit(AsString(result));
15
16. „Hello World“ für MapReduce: Word Count
Eingabe (K, V)
„Satz 1“: „Die JAX ist die Konferenz fürganzheitliches ...“
Zwischenergebnisse (K‘, V)
„die“, 1 „JAX“, 1 „ist“, 1 „die“, 1 ...
Endergebnis
„die“, 2 „JAX“, 1 „ist“, 1 ...
16
18. MapReduce
Scheduling
Ein Master, viele Worker
Eingabedaten werden auf M map Tasks gesplitet
Zwischenergebnisse werden auf R reduce Tasks aufgeteilt
Tasks werden dynamisch auf W Worker zugeordnet
Beispiel: M=200.000, R=4000, W=2000
Master weißt jeden map Task einem freien Worker zu
Datenlokalität wird hierbei berücksichtig
Master weißt jeden reduce Task einem freien Worker zu
Worker lesen K/V Paare (Zwischenergebnisse)
sortieren und führen die reduce() auf den Daten aus
18
19. Fehlertoleranz
Worker Ausfall:
Master überprüft Worker periodisch
Alle map Tasks werden neu verteilt
Ergebnisse werden lokal gespeichert
Nicht beendete reduce Tasks müssen neu verteilt werden
Ergebnisse werden global gespeichert
Alle reduce Worker werden benachrichtigt, dass map Tasks
erneut ausgeführt werden
Master Ausfall:
Zustand wird zyklisch gesichert
neuer Master stellt Zustand wieder her und übernimmt
19
20. Daten Lokalität
Ziel: Netzwerkbandbreite schonen
HDFS teilt Dateien in Blöcke ein und speichert n
Kopien auf unterschiedlichen Knoten im Cluster
Master verteilt map() Tasks unter Berücksichtigung
des Speicherortes der Eingabedaten
Ziel
map() Tasks physikalisch auf den selben Maschinen
(selbes Rack, Rechenzentrum, ...) wie die Eingabedaten
ausführen
20
22. Hadoop
History
2004
Gegründet als Sub-Projekt von Nutch (Lucene)
Java basierende OpenSource Implementierung von MapReduce
2006
Doug Cutting wechselt zu Yahoo!
Eigenes Hadoop-Team@Yahoo!
Apache Projekt
2008
Top Level Projekt
10.000+ Linux Cluster
Aktuell
Version 0.20.2
Ökosystem mit vielen Subprojekten
22
23. Hadoop
Gewinnt Terabyte Sort Benchmark (Juli 2008)
„One of Yahoo's Hadoop clusters sorted 1 terabyte of
data in 209 seconds, which beat the previous record
of 297 seconds in the annual general purpose
(Daytona) terabyte sort benchmark. This is the first
time that either a Java or an open source program
has won.“
23
24. Hadoop
Steht für?
Lucene
Zweitname von Doug Cutting‘s Frau
Nutch
sagte Doug Cutting‘s kleiner Sohn für jegliche Art von
Mahlzeit
Hadoop
Name eines kleinen gelben Stoffelefanten von seinem
Doug Cutting‘s Sohn
24
25. Hadoop
Subprojekte
Hadoop Common: The common utilities that support the other Hadoop subprojects.
Avro: A data serialization system that provides dynamic integration with scripting
languages.
Chukwa: A data collection system for managing large distributed systems.
HBase: A scalable, distributed database that supports structured data storage for
large tables.
HDFS: A distributed file system that provides high throughput access to application
data.
Hive: A data warehouse infrastructure that provides data summarization and ad hoc
querying.
MapReduce: A software framework for distributed processing of large data sets on
compute clusters.
Pig: A high-level data-flow language and execution framework for parallel
computation.
ZooKeeper: A high-performance coordination service for distributed applications.
25
26. Wer setzt Hadoop ein?
Yahoo
„Biggest cluster: 2000 nodes, used to support research for Ad
Systems and Web Search.“
Amazon
„Process millions of sessions daily for analytics, using both the Java
and streaming APIs. Clusters vary from 1 to 100 nodes.“
Facebook
„Use Hadoop to store copies of internal log and dimension data
sources and use it as a source for reporting/analytics. 600 machine
cluster.“
AOL, IBM, Rackspace, Hulu, the New York Times
...
26
27. Hadoop
Basics
/usr/bin/hadoop --> Command-line wrapper
Zugriff auf mehrere Subsysteme von Hadoop
fs --> HDFS
-ls, -put, -cat, -get, -copyToLocal
-rm, -rmr, -mv, -cp, -mkdir, etc.
jar --> MapReduce Jobs
job --> Job-Steuerung
-list, -status, -kill
Java und Streaming Interface (Perl, PHP, Python,
Ruby, Bash, etc.)
27
29. Einsatzmöglichkeiten
Verteiltes Grep
Suche in großen Mengen von Log-Files
map()
liefert eine Zeile als Zwischenergebnis, falls diese dem
entsprechendem Pattern entspricht
reduce()
kopiert Zwischenergebnisse als Endergebnis
29
30. Einsatzmöglichkeiten
Web-Server Statistik
Aus welchen Ländern und Städten erfolgen die meisten
Zugriffe auf bestimmte Web-Seiten?
map()
filtert Zugriffe auf bestimmte Web-Seten und liefert die
entsprechenden IP-Adressen aus den Access-Logs als
Zwischenergebnisse
reduce()
Reduziert IP-Adresse auf Class C-Adresse
Ergebnisse können im Nachgang mit Geoinformationen
aus IP-Adressdatenbanken angereichert werden
Hive (DWH), Sqoop (RDBMS)
30
31. Einsatzmöglichkeiten
Invertierter Web-Link Graph
Bestimmung aller URLs, welche ein bestimmtest Ziel
referenzieren
map()
liefert (Ziel, Quelle) Paare für jeden Link innerhalb einer
Web-Seite
reduce()
Fasst die Liste aller Quell-URLs zusammen, von welchen
aus ein bestimmtest Ziel referenziert wird (Ziel,
List(Quelle))
31
32. Einsatzmöglichkeiten
Rankingfaktor „Term Vector“
Welche Websites sind die Spezialisten für ein
gesuchtes Thema?
map()
liefert (Hostname, Term Vector) Paare für jedes
Eingabedokument
Der Hostname wird aus der URL bestimmt
reduce()
Führt die häufigsten (z.B. Top 10) Zwischenergebnisse zu
einem Endergebnis (Hostname, Term Vector) zusammen
32
33. Einsatzmöglichkeiten
Beispiel Facebook
Backendsystem „Scribe“
Logfiledaten Verarbeitung
25 TByte Logfiles pro Tag
chronologische Konsolidierung
Hadoop-Cluster mit rund 1.000 Nodes
erlaubt Analysen des Nutzerverhaltens
„wie neue Funktionen von Nutzern verwendet
werden"
33
34. Einsatzmöglichkeiten
Weitere spannenden Einsatzgebiete...
Business Intelligence
Log-File Analyse
Wetterdaten
Data Mining
Auswertung von User Verhalten
Profil Berechnungen
Index Erstellung
Server Monitoring --> Annomalien Reports
...
34
35. Einsatzmöglichkeiten
Beispiel Google
Web-Scale Search Index
Google‘s Suche umfasst n Milliarden Web-Seiten
August 2004 29.000 Jobs
September 2007 2.2 Millionen
Aktuell täglich ca. 100.000 Jobs
35
37. Google‘s Patent #7650331 vom 19.01.2010
„A large-scale data processing system and method
includes one or more application-independent map
modules configured to read input data and to apply at
least one application-specific map operation to the
input data to produce intermediate data values...“
37
38. Google‘s Patent
Lizenz für Hadoop!
„we have granted a license for Hadoop“
From Owen O'Malley <omal...@apache.org> Subject Re: License for Google's patent Date Fri, 23 Apr 2010
05:27:14 GMT
All,
We got the following email from Larry Rosen, Apache's legal counsel.
-- Owen
On Apr 22, 2010, at 7:49 PM, Lawrence Rosen wrote:
> To: ASF Board
>
> Several weeks ago I sought clarification from Google about its
> recent patent 7,650,331 ["System and method for efficient large-
> scale data processing"] that may be infringed by implementation of
> the Apache Hadoop and Apache MapReduce projects. I just received
> word from Google's general counsel that "we have granted a license
> for Hadoop, terms of which are specified in the CLA."
>
> I am very pleased to reassure the Apache community about Google's
> continued generosity and commitment to ASF and open source. Will
> someone here please inform the Apache Hadoop and Apache MapReduce
> projects that they need not worry about this patent.
>
> Best regards,
>
> /Larry
38
40. Zusammenfassung
Programmiermodell für verteiltes Rechnen
OSS Implementierung mit breiter Unterstützung
verfügbar
Bewege Code anstelle von Daten
Lizenzfrage geklärt
Breite Akzeptanz, wenig Kritik
„MapReduce: A major step backwards”
(Michael Stonebraker)
Sehr guter kommerzieller Support Verfügbar
Prädikat: Empfehlenswert! ;)
40
41. Fragen & Antworten
Tobias Joch
System Architecture
Project Management
inovex GmbH
Karlsruher Straße 71
75179 Pforzheim
0173.3181 004
tobias.joch@inovex.de
www.inovex.de
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
42. Vielen Dank! ;)
Tobias Joch
System Architecture
Project Management
inovex GmbH
Karlsruher Straße 71
75179 Pforzheim
0173.3181 004
tobias.joch@inovex.de
www.inovex.de
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.