The Hadoop Connection
-
Upload
inovex-gmbh -
Category
Technology
-
view
285 -
download
0
Transcript of The Hadoop Connection
MapReduce: The Hadoop Connection
JAX 201006.05.2010 | 08:30 - 09:45
Tobias Jochinovex GmbH
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
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@HOMErjurney: @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
Motivation
Verarbeiten großer DatenmengenWeb ScaleHäufigkeiten zählen, Invertierten Index berechnen, ...
Verteiltes RechnenProgrammiermodellLast- und DatenverteilungHochverfügbarkeit auf billiger Standard HardwareBerechnung auf mehrere Rechner verteilenGeographisch verteilt
6
Moore‘s Law
“The density of transistors on a chip doubles every 18 months, for the same cost” (1965)
7
MapReduce
Paper von Google (2004)Software Framework zur parallelen Verarbeitung von großen DatenmengenEinsatz von „Commodity Hardware“ (Fehlertolerant)Inspiration durch die map/fold Funktionen aus der funktionsorientierte ProgrammierungKlare Abstraktion für ProgrammiererVersteckt Low-Level Details
Datenverteilung, Loadbalancing, Fehlertoleranz, Parallelisierung
13
MapReduceProgrammiermodel
Datenverarbeitungsmodell (Pipes, Queues, ...)Berechnung wird in Form von zwei Funktionen vom Benutzer beschrieben
map()Filterung und Transformation in ZwischenergebnisseAusführung findet parallel statt
reduce()Aggregation der ZwischenergebnisseTypischer Weise 0,1 Ergebnisse pro K‘Ausführung kann auch parallel statt finden
14
„Hello World“ für MapReduce: Word Count
map()
15
function map(String key, String value):// key: document name// value: document contentsforeach word w in value:
EmitIntermediate(w, "1");
reduce()function reduce(String key, Iterator values):
// key: a word// values: a list of countsint result = 0;foreach v in values:
result += ParseInt(v);Emit(AsString(result));
Endergebnis
Zwischenergebnisse (K‘, V)
„Hello World“ für MapReduce: Word Count
Eingabe (K, V)
16
„Satz 1“: „Die JAX ist die Konferenz fürganzheitliches ...“
„die“, 1 „JAX“, 1 „ist“, 1 ...„die“, 1
„die“, 2 „JAX“, 1 „ist“, 1 ...
MapReduceScheduling
Ein Master, viele WorkerEingabedaten werden auf M map Tasks gesplitetZwischenergebnisse werden auf R reduce Tasks aufgeteiltTasks werden dynamisch auf W Worker zugeordnetBeispiel: M=200.000, R=4000, W=2000
Master weißt jeden map Task einem freien Worker zuDatenlokalität wird hierbei berücksichtig
Master weißt jeden reduce Task einem freien Worker zuWorker lesen K/V Paare (Zwischenergebnisse)sortieren und führen die reduce() auf den Daten aus
18
Fehlertoleranz
Worker Ausfall:Master überprüft Worker periodischAlle map Tasks werden neu verteilt
Ergebnisse werden lokal gespeichertNicht beendete reduce Tasks müssen neu verteilt werden
Ergebnisse werden global gespeichertAlle reduce Worker werden benachrichtigt, dass map Tasks erneut ausgeführt werden
Master Ausfall:Zustand wird zyklisch gesichertneuer Master stellt Zustand wieder her und übernimmt
19
Daten Lokalität
Ziel: Netzwerkbandbreite schonenHDFS teilt Dateien in Blöcke ein und speichert n Kopien auf unterschiedlichen Knoten im ClusterMaster verteilt map() Tasks unter Berücksichtigung des Speicherortes der EingabedatenZiel
map() Tasks physikalisch auf den selben Maschinen (selbes Rack, Rechenzentrum, ...) wie die Eingabedaten ausführen
20
HadoopHistory
2004Gegründet als Sub-Projekt von Nutch (Lucene)Java basierende OpenSource Implementierung von MapReduce
2006Doug Cutting wechselt zu Yahoo!Eigenes Hadoop-Team@Yahoo! Apache Projekt
2008Top Level Projekt10.000+ Linux Cluster
AktuellVersion 0.20.2Ökosystem mit vielen Subprojekten
22
HadoopGewinnt 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
HadoopSteht für?
LuceneZweitname von Doug Cutting‘s Frau
Nutchsagte Doug Cutting‘s kleiner Sohn für jegliche Art von Mahlzeit
HadoopName eines kleinen gelben Stoffelefanten von seinem Doug Cutting‘s Sohn
24
HadoopSubprojekte
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
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
HadoopBasics
/usr/bin/hadoop --> Command-line wrapperZugriff auf mehrere Subsysteme von Hadoopfs --> HDFS
-ls, -put, -cat, -get, -copyToLocal-rm, -rmr, -mv, -cp, -mkdir, etc.
jar --> MapReduce Jobsjob --> Job-Steuerung
-list, -status, -kill
Java und Streaming Interface (Perl, PHP, Python, Ruby, Bash, etc.)
27
EinsatzmöglichkeitenVerteiltes Grep
Suche in großen Mengen von Log-Filesmap()
liefert eine Zeile als Zwischenergebnis, falls diese dem entsprechendem Pattern entspricht
reduce()kopiert Zwischenergebnisse als Endergebnis
29
EinsatzmöglichkeitenWeb-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
EinsatzmöglichkeitenInvertierter Web-Link Graph
Bestimmung aller URLs, welche ein bestimmtest Ziel referenzierenmap()
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
EinsatzmöglichkeitenRankingfaktor „Term Vector“
Welche Websites sind die Spezialisten für ein gesuchtes Thema?map()
liefert (Hostname, Term Vector) Paare für jedes EingabedokumentDer 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
EinsatzmöglichkeitenBeispiel Facebook
Backendsystem „Scribe“Logfiledaten Verarbeitung25 TByte Logfiles pro Tagchronologische KonsolidierungHadoop-Cluster mit rund 1.000 Nodes erlaubt Analysen des Nutzerverhaltens„wie neue Funktionen von Nutzern verwendet werden"
33
EinsatzmöglichkeitenWeitere spannenden Einsatzgebiete...
Business IntelligenceLog-File AnalyseWetterdaten Data MiningAuswertung von User VerhaltenProfil BerechnungenIndex ErstellungServer Monitoring --> Annomalien Reports...
34
EinsatzmöglichkeitenBeispiel Google
Web-Scale Search IndexGoogle‘s Suche umfasst n Milliarden Web-SeitenAugust 2004 29.000 Jobs September 2007 2.2 MillionenAktuell täglich ca. 100.000 Jobs
35
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
Google‘s PatentLizenz für Hadoop!
„we have granted a license for Hadoop“
38
From Owen O'Malley <[email protected]> Subject Re: License for Google's patent Date Fri, 23 Apr 2010 05:27:14 GMTAll, 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
Zusammenfassung
Programmiermodell für verteiltes RechnenOSS Implementierung mit breiter Unterstützung verfügbarBewege Code anstelle von DatenLizenzfrage geklärtBreite Akzeptanz, wenig Kritik
„MapReduce: A major step backwards” (Michael Stonebraker)
Sehr guter kommerzieller Support VerfügbarPrädikat: Empfehlenswert! ;)
40
Tobias JochSystem ArchitectureProject Management
inovex GmbHKarlsruher Straße 7175179 Pforzheim
0173.3181 [email protected]
Fragen & Antworten
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
Tobias JochSystem ArchitectureProject Management
inovex GmbHKarlsruher Straße 7175179 Pforzheim
0173.3181 [email protected]
Vielen Dank! ;)
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.