SlideShare ist ein Scribd-Unternehmen logo
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.
Agenda



 Motivation
 MapReduce
 Hadoop
 Einsatzmöglichkeiten
 United States Patent #7650331
 Zusammenfassung




                                 2
Motivation
             3
lance@twitter




          „In 140 characters tell me why
         map reduce is important please.“




                                            4
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
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
Moore‘s Law




 “The density of
 transistors on a
 chip doubles every
 18 months, for the
 same cost” (1965)




                      7
8
Commodity Hardware
The Google Way




                     9
Commodity Hardware Cluster
Lamont-Doherty Earth Observatory




    Fats




                                   10
Rechenzentrums Cluster




                         11
MapReduce

            12
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
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
„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
„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
MapReduce
Beispielhafter Ablauf




                        17
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
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
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
Hadoop

         21
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
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
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
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
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
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
Einsatzmöglichkeiten

                       28
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
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
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
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
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
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
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
Google‘s Patent #7650331

                           36
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 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
Zusammenfassung

                  39
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
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.
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.

Weitere ähnliche Inhalte

Ähnlich wie MapRecude: The Hadoop Connection

Fusion der Welten: Hadoop als DWH-Backend bei ProSieben
Fusion der Welten: Hadoop als DWH-Backend bei ProSiebenFusion der Welten: Hadoop als DWH-Backend bei ProSieben
Fusion der Welten: Hadoop als DWH-Backend bei ProSieben
inovex GmbH
 
Textanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und HadoopTextanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und Hadoop
inovex GmbH
 
Dokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBDokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBMario Müller
 
Einfuehrung in Apache Spark
Einfuehrung in Apache SparkEinfuehrung in Apache Spark
Einfuehrung in Apache Spark
Jens Albrecht
 
Hadoop in modernen BI-Infrastrukturen
Hadoop in modernen BI-InfrastrukturenHadoop in modernen BI-Infrastrukturen
Hadoop in modernen BI-Infrastrukturen
inovex GmbH
 
Schweine latein-vortrag
Schweine latein-vortragSchweine latein-vortrag
Schweine latein-vortragRamon Wartala
 
Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)
Nane Kratzke
 
How to use Big Data
How to use Big DataHow to use Big Data
How to use Big Data
Digicomp Academy AG
 
Java und Go im Vergleich
Java und Go im VergleichJava und Go im Vergleich
Java und Go im Vergleich
QAware GmbH
 
Analyse und Evaluierung von Parameterabhängigkeiten anhand der Laufzeit von M...
Analyse und Evaluierung von Parameterabhängigkeiten anhand der Laufzeit von M...Analyse und Evaluierung von Parameterabhängigkeiten anhand der Laufzeit von M...
Analyse und Evaluierung von Parameterabhängigkeiten anhand der Laufzeit von M...
inovex GmbH
 
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GISGeoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Peter Löwe
 
Java Streams und Lambdas
Java Streams und LambdasJava Streams und Lambdas
Java Streams und Lambdas
Nane Kratzke
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Jörn Dinkla
 
Cloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von MetadatenCloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von Metadaten
Magnus Pfeffer
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
QAware GmbH
 
Hadoop Einführung @codecentric
Hadoop Einführung @codecentricHadoop Einführung @codecentric
Hadoop Einführung @codecentric
imalik8088
 
mongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - GrundlagenmongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - Grundlagen
inovex GmbH
 
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
Gunther Pippèrr
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)nwilbert
 
4×4: Big Data in der Cloud
4×4: Big Data in der Cloud4×4: Big Data in der Cloud
4×4: Big Data in der Cloud
Danny Linden
 

Ähnlich wie MapRecude: The Hadoop Connection (20)

Fusion der Welten: Hadoop als DWH-Backend bei ProSieben
Fusion der Welten: Hadoop als DWH-Backend bei ProSiebenFusion der Welten: Hadoop als DWH-Backend bei ProSieben
Fusion der Welten: Hadoop als DWH-Backend bei ProSieben
 
Textanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und HadoopTextanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und Hadoop
 
Dokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBDokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDB
 
Einfuehrung in Apache Spark
Einfuehrung in Apache SparkEinfuehrung in Apache Spark
Einfuehrung in Apache Spark
 
Hadoop in modernen BI-Infrastrukturen
Hadoop in modernen BI-InfrastrukturenHadoop in modernen BI-Infrastrukturen
Hadoop in modernen BI-Infrastrukturen
 
Schweine latein-vortrag
Schweine latein-vortragSchweine latein-vortrag
Schweine latein-vortrag
 
Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)
 
How to use Big Data
How to use Big DataHow to use Big Data
How to use Big Data
 
Java und Go im Vergleich
Java und Go im VergleichJava und Go im Vergleich
Java und Go im Vergleich
 
Analyse und Evaluierung von Parameterabhängigkeiten anhand der Laufzeit von M...
Analyse und Evaluierung von Parameterabhängigkeiten anhand der Laufzeit von M...Analyse und Evaluierung von Parameterabhängigkeiten anhand der Laufzeit von M...
Analyse und Evaluierung von Parameterabhängigkeiten anhand der Laufzeit von M...
 
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GISGeoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
 
Java Streams und Lambdas
Java Streams und LambdasJava Streams und Lambdas
Java Streams und Lambdas
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
 
Cloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von MetadatenCloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von Metadaten
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 
Hadoop Einführung @codecentric
Hadoop Einführung @codecentricHadoop Einführung @codecentric
Hadoop Einführung @codecentric
 
mongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - GrundlagenmongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - Grundlagen
 
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
 
4×4: Big Data in der Cloud
4×4: Big Data in der Cloud4×4: Big Data in der Cloud
4×4: Big Data in der Cloud
 

MapRecude: 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.
  • 2. Agenda Motivation MapReduce Hadoop Einsatzmöglichkeiten United States Patent #7650331 Zusammenfassung 2
  • 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
  • 8. 8
  • 10. Commodity Hardware Cluster Lamont-Doherty Earth Observatory Fats 10
  • 12. MapReduce 12
  • 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
  • 21. Hadoop 21
  • 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.