Perspektiverende Datalogi Internetalgoritmer MapReduce Gerth Stølting Brodal.

Slides:



Advertisements
Lignende præsentationer
1 Frameworks. 2 Plan Frameworks • Kollektioner • Input/output Nyt designmønster: Decorator.
Advertisements

MapReduce implementationer MapReduce Hadoop Apache open source projekt.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Array og ArrayList Et slideshow. Som er sødt.. Hvordan virker ArrayList?  ArrayList NAVN = new ArrayList ();  NAVN.add(”Værdi”);  NAVN.add(index, ”værdi”)
Datastrukturer og Collections Oversigt og forskel imellem Jave og.net Collections library Collection interfaces ArrayList IList interface Hashtable Hashtable.
Algoritmer og Datastrukturer 1...mere Sortering [CLRS, kapitel 8] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ] Gerth Stølting Brodal.
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
Algoritmer og Datastrukturer 1 Union-Find [CLRS, kapitel ] Gerth Stølting Brodal.
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
Arrays ● Arrangere erklærede ens datatyper ● Giver mulighed for indeksering med tal ● Valgfri størrelse ved oprettelse ● Er integreret i sproget/compileren.
Begreber og Redskaber 5. Collections i Java 1.2 Framework: samling af datastrukturer og algoritmer som generelt værktøj. En ramme til at arbejde med søgning.
Perspektiverende Datalogi Internetalgoritmer MapReduce Gerth Stølting Brodal.
1 HMAK XMLRelationel model og XMLNOEA / PQC 2005 SQLServer og XML Hent data via URL Generering af xml –Raw –Auto –Explicit Hent data via template Evt.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
Stig Irming-Pedersen ASP.NET MVC Partner Copenhagen Software.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
AJAX/Otto Knudsen 1 AJAX Motivation Definition. AJAX/Otto Knudsen 2 Motivation En typisk web-applikation er synkron klienten sender en forespørgsel og.
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
Lektion 7 Læsestof: Kopier fra Caranno
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
Fundamentale datastrukturer
Perspektiverende Datalogi Internetalgoritmer Gerth Stølting Brodal.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper: arrays, stakke, køer,
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
Fremstilling af Simple WEB steder [ITPL] Foråret 2004
8.5 JDBC1 JDBC 8.5 Java Database Connectivity. 8.5 JDBC2 JDBC introduktion, 393 JDBC er ikke en forkortelse for –Java Database Connectivity Sun har defineret.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ] Gerth Stølting Brodal.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Forelæsning 7.1 – repetition
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Suffiks træer [GT, kapitel 9.2], Suffiks arrays [Smyth, kapitel 5.3.2]
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design klasse model ”Klassemodellen på vej til kode”
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
Variabler, klassevariabler, identitet og lighed, collections
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
DAIMIIntroducerende Objektorienteret Programmering1 Collections og opremsning Nye typer collections, objektorienteret sweep.
Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,
Indledende Programmering Uge 6 - Efterår 2006
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
 Jens Bennedsen 2002Objektorienteret systemudvikling Modelleringsperspektiver Hvad betyder en klassemodel egentlig?
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.
Interfaces – hvorfor, hvad og hvordan?.  Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface)
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
DAIMIIntroducerende objektorienteret programmeringfletning.1 Fletning.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Collections og opremsning Nye typer collections, objektorienteret sweep.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Dokumentation.
Præsentationens transcript:

Perspektiverende Datalogi Internetalgoritmer MapReduce Gerth Stølting Brodal

MapReduce Implementationer MapReduce Hadoop Apache open source projekt Dean, F. and Ghemawat, S. (2004) MapReduce: Simplified Data Processing on Large Clusters. In: Sixth Symposium on Operating System Design and Implementation (OSDI 2004):

Parallelle algoritmer – Teori vs Praksis Behandling af massiv data kræver parallelle algoritmer (fx Google) Ideelle Teoretiske Verden – mange maskiner samarbejder synkront – kan kommunikere i hvert beregningsskridt – utallige teoretiske algoritmer udviklet Ønskes: Simpel men slagkraftig parallel model Praksis – meget svært at programmere – korrekthed, concurrency problemer, … – maskiner arbejder med forskellige hastigheder, strejker, bryder sammen

Afgrænsning af Kommunikation tid Beregning på uafhængige maskiner Synkronisering & kommunikation A B C D E X1X1 X2X2 X3X3 Y1Y1 Y2Y2 Z1Z1 W1W1 W2W2 V1V1 V2V2 V3V3 X1X1 X2X2 X3X3 Y1Y1 Y2Y2 Z1Z1 W1W1 W2W2 V1V1 V2V2 V3V3

Parallelle Programmer Traditionelt specielt udviklede programmer for hvert problem man ønsker at løse – mange ikke-trivielle detaljer i parallel programmer – fejl-tolerance (1000’er af maskiner fejler regelmæssigt) – fordeling af opgaver blandt maskiner – balancering af arbejdet blandt maskiner MapReduce interfacet (, 2003) – håndter ovenstående automatisk – meget begrænsede kommunikation mellem maskiner – algoritmen udføres i Map og Reduce faser

MapReduce Brugeren skal definere to funktioner map v1  List[ (k,v2) ] reduce (k, List[ v2 ])  List[ v3 ] Eksempel: Antal forekomster af ord i en tekstsamling ( ” ”der var en gang en...” )  [ (”der”, ”1”), (”var”, ”1”), (”en”, ”1”), (”gang”, ”1”), (”en”, ”1”)... ] ( ” ”en lang gang...” )  [ (”en”, ”1”), (”lang”, ”1”), (”gang”, ”1”),... ] ( ”en”, [ ”1”, ”1”, ”1” ] )  [ ”en 3” ] ( ”gang”, [ ”1”, ”1” ] )  [ ”gang 2” ]... Output fra en map-reduce kan være input til den næste map-reduce map reduce

”Maskine ID” MapReduce map reduce Map-opgaverne ligger spredt ud på maskinerne (i et GFS hvor data typisk er replikleret 3 gange) Hver maskine udfører et antal uafhængige map-opgaver 1 2 Sorter alle parene – varetages automatisk af MapReduce biblioteket Hver Reduce-opgave ender samlet på en maskine En reduce-opgave løses sekventielt på én maskine (mulig FLASKEHALS ) Hver maskine udfører et antal uafhængige reduce-opgaver Output er en delliste af det samlede output 3 Master = en maskine der 1.planlægger og fordeler opgaverne 2.genstarter hængene opgaver på andre maskiner ( ” ”der var en gang en...” )  [ (”der”, ”1”), (”var”, ”1”), (”en”, ”1”), (”gang”, ”1”), (”en”, ”1”)... ] ( ” ”en lang gang...” )  [ (”en”, ”1”), (”lang”, ”1”), (”gang”, ”1”),... ] ( ”en”, [ ”1”, ”1”, ”1” ] )  [ ”en 3” ] ( ”gang”, [ ”1”, ”1” ] )  [ ”gang 2” ]... Antagelse Antal maskiner ≤ n 1-ε, hver maskine hukommelse ≤ n 1-ε

Hadoop : WordCount Java kode fra tutorialen på hadoop.apache.org public class WordCount { public static class Map extends MapReduceBase implements Mapper { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(LongWritable key, Text value, OutputCollector output, Reporter reporter) throws IOException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); output.collect(word, one); } public static class Reduce extends MapReduceBase implements Reducer { public void reduce(Text key, Iterator values, OutputCollector output, Reporter reporter) throws IOException { int sum = 0; while (values.hasNext()) { sum += values.next().get(); } output.collect(key, new IntWritable(sum)); }... }

En søgemaskines dele Indsamling af data Webcrawling (gennemløb af internet) Indeksering data Parsning af dokumenter Leksikon: indeks (ordbog) over alle ord mødt Inverteret fil: for alle ord i leksikon, angiv i hvilke dokumenter de findes Søgning i data Find alle dokumenter med søgeordene Rank dokumenterne

Input:List[ (URL, tekst) ] Output:List[ (Ord, URL’er) ] Inverteret fil Map (URL, tekst)  [ (ord 1, URL),..., (ord k, URL) ] Reduce (ord, [ URL 1,..., URL m ] )  [ (ord, ”URL 1,...,URL m ”) ]

Input:List[ (i, j) ] Output:List[ (i, indgrad(i)) ] Indgrad af alle siderne Map (i, j)  [ ( j, 1) ] Reduce (i, [ 1, 1,..., 1 ] )  [ (i, k) ] k = indgrad(i)

Input:[ x 1,...,x n ] Ouput:[ sum(x 1,..., x n ) ] Sum Map x i  [ (0, x i ) ] Reduce (0, [ x 1,..., x n ] )  [ x 1 +∙∙∙+ x n ] Map x i  [ (random(1..R), x i ) ] Reduce (r, [ x i 1,..., x i k ] )  [ x i 1 +∙∙∙+ x i k ] R ≈ antal maskiner 1 2

Input:List[ (i, j) ] Ouput:List[ (i, p i (s) ) ] Øvelser - PageRank

PageRank Hint ①, ② og ⑤ er nemmest