P-Grid: A Self-Organizing Access Structure for P2P Information Systems Karl Aberer Presentazione et codice: Antonio Gaetani Marco Montali Marco Tamburini.

Slides:



Advertisements
Presentazioni simili
Programmazione dinamica: problema della sottosequenza più lunga
Advertisements

                      Insertion-Sort
PROGRAMMARE IN PASCAL (le basi)
Generazione di Piani attraverso Grafi di Pianificazione
Cammini minimi con una sorgente
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Code a priorità (Heap) Definizione
Strutture dati elementari
Alberi binari di ricerca
Code con priorità Ordinamento
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
PROGRAMMI DI RICERCA E ORDINAMENTO
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 20/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 06/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 10/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
1 Esempi di consistenza sui limiti Non consistente sui limiti, considera Z=2, poi X-3Y=10 Ma il dominio qui sotto e consistente sui limiti: Confrontare.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Algoritmi e strutture Dati - Lezione 7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Esercizio 4 Data una stringa P di lunghezza m e definita sullalfabeto, scrivere un programma PERL per calcolare la seguente funzione: PREFIX_FUNCTION:
Algoritmi e Strutture Dati Alberi Binari di Ricerca.
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. A)
Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e strutture dati
Progetto e Sviluppo di un algoritmo per la gestione della Federazione Interdominio in unarchitettura di Service Discovery Candidato: XXX Roma, Febbraio.
Sistemi Peer To Peer (P2P) Avanzati Gennaro Cordasco Gennaro Cordasco
Ancora esercizi!!! Chernoff Bound allora
Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan MIT and Berkeley Chord: A Scalable Peer-to-peer Lookup Service for Internet.
Lezione 5 Domande: Laverage path length di Chord con 2^b identificatori e N=2^b nodi è (giustificare la risposta) Laverage path length di Chord con 2^b.
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
Intelligenza Artificiale Algoritmi Genetici
Radix-Sort(A,d) // A[i] = cd...c2c1
Calcolo Parallelo e Distribuito
Per valutare la complessità ammortizzata scomponiamo ogni Union: nelle due FindSet e nella Link che la costituiscono e valuteremo la complessità in funzione.
Algoritmi e Strutture Dati
A.a. 2009/2010 GRUPPO 20 Alessandro Ghidotti Piovan.
Peer-to-Peer Systems Content-Based Routing of Path Queries in Peer-to-Peer Systems Georgia Koloniari and Evaggelia Pitoura Ingargiola Salvatore Montauti.
Introduzione Effettuare query top-k su un sistema altamente distribuito, sfruttando il P2P Nodi Principali (SP = Super Peers) Nodi Secondari (P = Peers)
Outline Database P2P e stato dellarte delle strutture di indice Obiettivi dellarchitettura P-Ring Soluzioni di P-Ring Verifiche sperimentali dei risultati.
Costruzione di una semplice Agenda telefonica Elettronica Esercizio sull'uso delle principali system call Unix.
ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.
Cammini minimi da un sorgente
Algoritmi e Strutture Dati Luciano Gualà
Risoluzione di Problemi con gli algoritmi Ricorsivi
1 Esercitazione Sistemi distribuiti: sistemi che risisedono su più calcolatori interconnessi da una rete di comunicazione Algoritmi distribuiti: programmi.
Implementazione di dizionari Problema del dizionario dinamico Scegliere una struttura dati in cui memorizzare dei record con un campo key e alcuni altri.
Heap concetti ed applicazioni. maggio 2002ASD - Heap2 heap heap = catasta condizione di heap 1.albero binario perfettamente bilanciato 2.tutte le foglie.
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 07/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
1 Ordinamento (Sorting) INPUT: Sequenza di n numeri OUTPUT: Permutazione π = tale che a 1 ’  a 2 ’  … …  a n ’ Continuiamo a discutere il problema dell’ordinamento:
Algoritmi e strutture Dati - Lezione 7 1 Algoritmi di ordinamento ottimali L’algoritmo Merge-Sort ha complessità O(n log(n))  Algoritmo di ordinamento.
1 Ordinamento (Sorting) Input: Sequenza di n numeri Output: Permutazione π = tale che: a i 1  a i 2  ……  a i n Continuiamo a discutere il problema dell’ordinamento:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Master Bioinformatica 2002: Visite di Grafi Algoritmi di visita Scopo: visitare tutti i vertici di un grafo per scoprirne proprietà di vario tipo. Alcune.
Informatica e Informatica di Base
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Progettare algoritmi.
Algoritmi e Strutture Dati HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
Transcript della presentazione:

P-Grid: A Self-Organizing Access Structure for P2P Information Systems Karl Aberer Presentazione et codice: Antonio Gaetani Marco Montali Marco Tamburini

Agenda Stato dellarte e motivazioni: strutture per laccesso ai dati nei sistemi P2P Definizione e proprietà di P-Grid Algoritmo di ricerca allinterno di una P-Grid Costruzione di una P-Grid Considerazioni sullefficienza, problematiche e DEMO!

RICERCA INEFFICIENTE Stato dellarte Tipiche infrastrutture P2P per il file sharing (Gnutella): Nessun meccanismo di indicizzazione Richieste mandate in broadcast

Obiettivo Lo scopo è quindi quello di costruire una struttura distribuita per laccesso ai dati che sia totalmente decentralizzata scalabile affidabile

Lidea di base Mediante meeting randomici tra i peer, essi: Si partizionano lo spazio di ricerca Acquisiscono informazioni per interagire con altri peer durante successive richieste di ricerca Il risultato è la struttura di accesso distribuita chiamata P-Grid

Ricerca con Gnutella (Intuitivamente) Commedia Jeff Kanew La rivincita dei nerdz No! Mi dispiace No! Mi dispiace Sì! Te lo mando

Ricerca con P-Grid (Intuitivamente) Ce lho! Commedia Jeff Kanew La rivincita dei nerdz Gùgù: Gestisco commedie, ma per Jeff Kanew devo chiedere a Tambu Commedia Jeff Kanew La rivincita dei nerdz Tambu: Gestisco commedie di Jeff Kanew, ma per i nerds devo chiedere a Papà Commedia Jeff Kanew La rivincita dei nerdz Papà: Papà Commedia Jeff Kanew La rivincita dei nerdz Papà:

La P-Grid Una P-Grid è una struttura di accesso ai dati distribuita: I dati sono rappresentati da chiavi binarie I peer si ripartiscono lo spazio delle chiavi effettuando degli incontri Ogni peer possiede un path (determinato dagli incontri fatti) che rappresenta il prefisso del sottospazio delle chiavi che gestisce Ogni peer possiede una griglia di riferimenti ad altri peer I peer riferiti da a a livello i hanno la proprietà che completano lo spazio delle chiavi di a rispetto alli-mo bit del path La determinazione di tali riferimenti viene effettuata secondo algoritmi probabilistici Un peer con path 10 gestisce tutte le chiavi che cominciano per 10! Proprietà r può appartenere allinsieme dei riferimenti di a=p 1 …p k a livello i se prefix(i,r)=[prefix(i-1,a),p i ]

Un peer nella P-Grid P1P1 011 chiave doc owner 011…PaPa PbPb PcPc PdPd PXPX PzPz PwPw 1 … … 0 0 … A regime conterrà tutti i documenti nella rete con chiave che inizia per 011! PyPy 1 … … … Livello 1 Livello 2 Livello 3

Algoritmo di ricerca query(peer a,query p,livello l) { found= false; remanent_path = sub_path(path(a), l, k); common_path = common_prefix_of(p, rempath); IF length(common_path) = length(p) THEN result = a ELSE IF length(path(a)) > l + length(compath) THEN querypath = sub_path(p, length(compath) + 1,length(p)); refs = refs(l + length(compath) + 1, a); WHILE |refs| 1 AND NOT found r = random_select(refs); IF online(peer(r)) found = query(peer(r), querypath, l+length(compath)); RETURN found; } (peer1, 1000, 1) { 1000; Lunghezza Della query iniziale IF 4 = 4 peer1 peer1 responsabile per 1000 path(peer1)=1000

Algoritmo di ricerca (altro esempio) query(peer a,query p,livello l) { found= false; remanent_path = sub_path(path(a), l, k); common_path = common_prefix_of(p, rempath); IF length(common_path) = length(p) THEN result = a ELSE IF length(path(a)) > l + length(compath) THEN querypath = sub_path(p, length(compath) + 1,length(p)); refs = refs(l + length(compath) + 1, a); WHILE |refs| 1 AND NOT found r = random_select(refs); IF online(peer(r)) found = query(peer(r), querypath, l+length(compath)); RETURN found; } peer1, 1000, 1 ) { path(peer1)=1011 NO Esempio: peer3 (ON) peer5 (OFF) peer6 (ON) peer3 query(peer3, 00, 3); peer3 query(peer a,query p,livello l) { found= false; remanent_path = sub_path(path(a), l, k); common_path = common_prefix_of(p, rempath); IF length(common_path) = length(p) THEN result = a ELSE... Prende la parte di query che rimane togliendo il prefisso comune Estrae i riferimenti al livello 3, quindi a peer che gestiscono path del tipo 100… path(peer3)=1000… peer3, 00, 3 00 peer 3 è responsabile per la chiave 1000

Algoritmo di ricerca Si noti come il peer risultante dalla query non sia leffettivo owner del documento ma colui che se interrogato è in grado di restituire il peer che è il reale possessore del dato Per acquisire litem il P ASKER non dovrà fare altro che interrogare successivamente il risultante della query e colui che gli sarà segnalato come owner del documento

P-Grid (già inizializzata) P1P1 P2P2 P5P5 P6P6 P4P4 P3P

Esempio di query (1°) P1P ask(011) MATCH

Esempio di query (2°) P1P ask(010) ask(010,level(3)) P5P5 010XX0 response(P 5 ) MATCH

Esempio di query (3°) P1P ask(110) ask(110,level(1)) P2P response(P 4 ) P4P4 ask(110,level(2)) response(P 4 ) 110X10 MATCH

P2P2 Esempio di query (4°) P1P ask(111) ask(111,level(1)) P6P6 response(P 4 ) PEER OFF-LINE MATCH

Costruzione della P-Grid Il processo di costruzione della P-Grid si basa sul concetto di meeting Un meeting è un incontro di due peer durante il quale viene effettuata la procedura di exchange Tramite la procedura di exchange la coppia cerca di Raffinare il proprio path Aggiornare i propri riferimenti Due peer si possono incontrare: Randomicamente Durante altre operazioni Quando si trovano in relazione mentre eseguono una query

Procedura di exchange exchange(a1, a2, r) { commonpath = common_prefix_of(path(a1), path(a2)); lc = length(commonpath); IF lc > 0 { commonrefs = union(refs(lc, a1), refs(lc, a2)); refs(lc, a1) = random_select(refmax, commonrefs); refs(lc, a2) = random_select(refmax, commonrefs);. PAPA PBPB PYPY 011 PXPX PZPZ 010 PYPY PWPW PYPY PXPX PZPZ PWPW lc=2 PXPX PWPW refmax=3 refmax è un parametro che indica il numero massimo di riferimenti per livello

Procedura di exchange l1 = length(sub_path(path(a1), lc + 1, length(path(a1))); l2 = length(sub_path(path(a2), lc + 1, length(path(a2))); CASE l1 = 0 AND l2 = 0 AND length(commonpath) < maxlength path(a1) = append(path(a1), 0); path(a2) = append(path(a2), 1); refs(lc + 1, a1) = {a2}; refs(lc + 1, a2) = {a1}; Caso 1: se i path dei peer sono uguali si introduce un nuovo livello maxlength è un parametro che indica la dimensione massima dei path

Esempio di exchange (1°) PAPA 01 1 PBPB 01 0 PBPB PAPA

Procedura di exchange CASE l1 = 0 AND l2 > 0 AND length(commonpath) < maxlength path(a1) = append(path(a1), value(lc+1, path(a2)^-); refs(lc + 1,a1)={a2}; refs(lc + 1,a2)=random_select(refmax,union({a1},refs(lc+1,a2)); Caso 2: se il path di un peer è prefisso dellaltro e non si è raggiunta ancora la maxlength splittiamo lo spazio del primo peer con il valore (lc+1)-esimo complementato del secondo e aggiorniamo i riferimenti Banalmente se l1>0 e l2=0 vale una procedura speculare alla precedente

Esempio di exchange (2°) PAPA 01 1 PBPB PBPB PYPY 010 PXPX PAPA PYPY PXPX refmax=2 PAPA

Procedura di exchange CASE l1 > 0 AND l2 > 0 AND r < recmax, refs1 = refs(lc+1, a1) \ {a2}; refs2 = refs(lc+1, a2) \ {a1}; FOR r1 IN refs1 DO IF online(peer(r1)) THEN exchange(a2, peer(r1), r+1); FOR r2 IN refs2 DO IF online(peer(r2)) THEN exchange(a1, peer(r2), r+1); Caso 3: se i path dei due peer sono differenti si considera il livello corrispondente al primo bit differente (che è l lc+1- mo). I riferimenti di quel livello di ciascuno dei due peer saranno oggetto di exchange con laltro. recmax è un parametro che indica il massimo grado di ricorsione della procedura di exchange

Esempio di exchange (3°) PAPA PBPB PGPG PFPF PDPD PCPC PEPE PHPH PBPB PAPA

Attenzione CASE l1 > 0 AND l2 > 0 AND r < recmax, r parametro di input della procedura recmax valore di sistema (numero massimo di ricorsioni successive) Sperimentalmente: recmax ottimo =2 PAPA PBPB PDPD PCPC PEPE PKPK 0100

Non siete convinti? Intuitivamente può capitare che uno dei peer sul percorso sia offline… e allora addio al file desiderato!!! Vi dimostreremo che sarà possibile: con solo il 30% di nodi online 99% di possibilità di reperire il documento

Considerazioni Definiamo: refmax # riferimenti memorizzati dal singolo peer per ogni livello k lunghezza della chiave p probabilità che un peer sia on-line Nel nostro esempio ci riferiamo a valori di refmax=20, k=10, p=30% Consideriamo il caso peggiore ad ogni livello un nuovo peer deve essere contattato

Dimostrazione 1-(1-p) refmax (1-(1-p) refmax ) k probabilità di raggiungere un peer al livello successivo probabilità effettuare una ricerca con successo valore relativo: 99,9% valore relativo: 99,2% consideriamo k livelli

Inizializzazione Come la P-Grid debba essere costruita in fase di start-up è un problema che non viene trattato dagli algoritmi precedenti Sarà tra poco pubblicato un lavoro riguardante queste tematiche. In breve ad ogni meeting: Ciascun peer arricchisce la propria conoscenza sui documenti presenti nella rete esplorando quelli dellaltro (aggiungendo item a livello foglia) Fa una update sui documenti da lui gestiti in caso di modifica del proprio path (eliminazione di documenti non più gestiti) Per maggiori informazioni, le tecniche esposte sono state implementate nella nostra applicazione

Update Allaggiunta di un nuovo documento in uno dei peers facenti parte della P-Grid è necessario eseguire una procedura di update su ciascun peer che a livello foglia dovrebbe gestire la chiave della nuova entry Varie tecniche sono possibili: Facendo ripetutamente ricerche randomiche depth-first nella speranza di fare tutte le update necessarie Facendo ununica ricerca breadth-first e conseguenti update Mantenendo una lista dei peers che sono responsabili della stessa chiave e facendo una solo ricerca depth-first Sperimentalmente è risultata la miglior soluzione

N-GRID E un simulatore di una rete P2P basata su P-Grid le cui parti costituenti sono: Un peerPooler, che gestisce i meeting tra i peer N peer, ciascuno dei quali rappresenta un nodo fisico: È in realtà un thread che esegue in modo indipendente dagli altri peer È lowner di una serie di documenti le cui chiavi sono generate a caso Risponde a query per un documento Manifesta (su richiesta) i suoi riferimenti ai vari livelli Unastrazione di rete, che ci ha permesso di implementare gli algoritmi come se ci trovassimo effettivamente in un ambiente distribuito

Riferimenti [1] Karl Aberer, Magdalena Punceva, Manfred Hauswirth, Roman Schmidt: Improving Data Access in P2P Systems [2] Karl Aberer, Philippe Cudré-Mauroux, Anwitaman Datta, Zoran Despotovic, Manfred Hauswirth, Magdalena Punceva, Roman Schmidt: P-Grid: A Self-organizing Structured P2P System [3] Karl Aberer, Philippe Cudré-Mauroux, Anwitaman Datta, Zoran Despotovic, Manfred Hauswirth, Magdalena Punceva, Roman Schmidt, Jie Wu :Advanced Peer-to-Peer Networking: The P-Grid System and its Applications [4] Roman Schmidt: Gridella: an open and efficient Gnutella- compatible Peer-to-Peer System based on the P-Grid approach [5] Karl Aberer, Anwitaman Datta, Manfred Hauswirth, Roman Schmidt: Indexing data-oriented overlay networks (NON ANCORA PUBBLICATO)