David Novak and Pavel Zezula GRUPPO 13 Decorte Andrea Giammarino Giuseppe Utente f0rnisce un’immagine Trovare immagini simili nel database basandosi su distanza quadratica tra le features LA (h, q; A) D D T a ( h q )( h q ) ( h q ) A (h q) i, j i i j j i 1 j 1 Difficoltà nel lavorare con dati di questo genere? Gruppo 13 M-Chord 2 Dati ad alta dimensionalità Funzioni distanza onerose computazionalmente (nell’ordine di O(D2)) Dati non gestibili efficientemente con spazi vettoriali Query multidimensionali di similarità Servono nuove strategie! Gruppo 13 M-Chord 3 Introduzione di spazi metrici anziché vettoriali Sviluppo di strategie distribuite per dividere il carico di lavoro su nodi interconnessi tra loro Al momento della pubblicazione, numerosi studi su applicazioni di ricerca distribuita, ma la maggior parte di loro si concentrano su spazi vettoriali Gli unici riguardanti spazi metrici sono GHT* (nativamente metrica, basata sui Generalized Hyperplane Tree) e MCAN, che estende il protocollo CAN (Content Addressable Network) Gruppo 13 M-Chord 4 Sviluppare una struttura per la ricerca distribuita che sia applicabile a spazi metrici basandosi su alcune soluzioni esistenti: iDistance Protocollo Chord Esse verranno integrate ed estese nella struttura di M- Chord Gruppo 13 M-Chord 5 Uno spazio metrico M è una coppia (U, d) U è il dominio degli oggetti d è una funzione di distanza Tutti gli oggetti di U soddisfano le seguenti proprietà: d ( x, y ) 0 d ( x, y ) 0 iff x y d ( x, y ) d ( y , x ) d ( x, z ) d ( x, y ) d ( y z ) (non negatività) (identità ) ( simmetria ) (diseg . triangolar e) Gruppo 13 M-Chord 6 Metodo di indicizzazione per ricerca di similarità in spazi vettoriali Partizione dei dati in n cluster, rappresentati da un pivot pi A ogni oggetto x viene assegnata chiave unidimensionale che tiene conto della distanza dal pivot iDist ( x) d ( pi , x) i c c è una costante per separare i cluster Valori sono memorizzati in un B+-tree sulla base della chiave iDist(x) Gruppo 13 M-Chord 7 P2 C0 C2 P0 C1 P1 C 2*C Gruppo 13 M-Chord 3*C 8 Protocollo P2P per Distributed Hash Table Chord specifica come chiavi debbano essere assegnate ai nodi, come si possa localizzare nodo responsabile per una chiave e come esso recuperi valore di una chiave specifica Basato su scambio di messaggi Dinamico, consistent hashing Dominio mappato uniformemente nell’intervallo [0,2m) Gruppo 13 M-Chord 9 Le chiavi Ki sono disposte su un cerchio A ogni nodo Ni viene assegnata la chiave Ki dallo stesso dominio Nodo Ni responsabile per tutte le chiavi dell’intervallo (Ki-1, Ki](mod 2m) Ogni nodo mantiene successore, predecessore e finger table, che garantisce un routing di complessità O(log n) Gruppo 13 M-Chord 10 • Finger table ha dimensioni minori rispetto al numero totale nodi N8 • Tiene anche in conto possibilità di failure del nodo +1 N51 • Necessario mantenerla aggiornata nel tempo N48 • Non contiene info necessarie per raggiungere valori di chiave direttamente Finger Table N1 +2 +4 +32 +8 N8+1 N14 N8+2 N14 N8+4 N14 N8+8 N21 N8+16 N32 N8+32 N42 N14 +16 N42 N21 N38 N32 Gruppo 13 M-Chord 11 Cercando la chiave 54 è necessario visitare 2 altri nodi. Se non avessi finger table, li dovrei passare tutti! Algoritmo semplificato per cercare una chiave: • Se appartiene a chiavi locali, restituisci il valore • Altrimenti accedi alla finger table e cerca il più grande predecessore della chiave richiesta, in modo da avvicinarsi il più possibile al nodo che contiene la chiave K54 N56 N1 N8 lookup(54) N51 N48 N14 N21 N42 N38 N32 Gruppo 13 M-Chord 12 Idee alla base di M-Chord: Generalizzare iDistance a spazi metrici e adattare il suo dominio a quello di Chord Dividere il dominio in intervalli da distribuire sui diversi nodi Sviluppare gli algoritmi Range e kNN Introdurre meccanismi di pruning Gruppo 13 M-Chord 13 Durante partizionamento, che sfrutta diagrammi di Voronoi, distanze dei punti da ogni pivot sono salvate per essere poi sfruttate nel pruning delle query di Range Data una query Range(q, r), per diseguaglianza triangolare oggetto x può essere escluso senza valutare d(q, x) se i (0 i n) :| d ( pi , x) d ( pi , q) | r r x q Pi d(x,Pi) - d(q,Pi) >r ? Gruppo 13 M-Chord 14 Selezione pivot Criterio di selezione: aumentare il più possibile il filtraggio Dominio dei dati Necessaria una funzione di trasformazione h per normalizzare il dominio fornito da iDistance sull’intervallo [0, 2m) ed ottenere una distribuzione uniforme mchord ( x) h(d ( pi , x) i c) Gruppo 13 M-Chord 15 Topologia della rete corrisponde a quella di Chord Fase di inizializzazione (SampleSet S, numero pivot) Un solo nodo attivo che copre tutto (chiave 2m-1) Selezione dei pivot su S Si applica formula di iDistance su S per avere distribuzione dei dati e si ricava funzione di trasformazione h in modo da poter calcolare mchord(x) Gruppo 13 M-Chord 16 Attivazione altri nodi I nodi a cui non sono assegnate chiavi sono non attivi Ogni nodo attivo può invocare una richiesta di split secondo criteri personalizzati (carico…) Procedura di split Si determina la nuova chiave Ki da assegnare al nodo Si spostano i dati al nuovo nodo e si segue il meccanismo standard di join di Chord Si cerca di seguire le forme dei cluster se intervallo copre più di un cluster Gruppo 13 M-Chord 17 Segue l’idea di range query di iDistance Il nodo Nq che avvia la query procede nel seguente modo: Determina per ogni cluster Ci l’intervallo di chiavi Ii I i [h(d ( pi , q) i c r ), h(d ( pi , q) i c r )] Per ogni i invia una richiesta di INTERVALSEARCH(Ii, q, r) al nodo Ni responsabile per il punto centrale dell’intervallo Ii Gruppo 13 M-Chord 18 Se nodo non responsabile dell’intero intervallo, inoltra richiesta a predecessore/successore Ogni nodo crea risposta locale che include gli x | d(q,x)≤ r Invio risposta segnalando eventualmente che è Nq necessario attendere quella di altri nodi Qui si sfruttano distanze NI2 calcolate in precedenza e formula di filtraggio di iDistance Gruppo 13 M-Chord I3 NI3 I1 NI1 wait I2 19 iDistance può escludere un cluster i da ricerca se d(pi, q) –r > max-disti r q max-disti Pi Tale pruning non è applicabile in ambienti distribuiti (max-disti non conosciuto da tutti i nodi) Gruppo 13 M-Chord 20 Approccio di iDistance non adatto ad ambienti distribuiti (query di range a raggio crescente) Proposta degli autori: 1. Utilizzo un’euristica a basso costo per trovare k oggetti vicino q; δk è un’approssimazione (upper bound) della distanza del k-esimo oggetto Gruppo 13 M-Chord 21 Nodo responsabile per mchord(q) cerca nel cluster Ci a cui appartiene q 1. Localizza la foglia del B+-Tree dove si trova q 2. Esplora a sinistra e destra le foglie e aggiunge i primi k oggetti al ResultSet, inizializzando δk 3. Continua a esaminare x finché le chiavi mchord(x) appartengono a I i [h(d ( pi , q) i c k ), h(d ( pi , q) i c k )] K=2 4. Se d(q,x) < δk aggiungo x a RS al posto del k-esimo - δk δ q oggetto e aggiorno + δk k 5. Continuo ricerca finché non ho esplorato tutto Ii o δk = mchord(q) distanza K-esimo oggetto tutto cluster Ci Gruppo 13 M-Chord 22 2. Eseguo una query di Range (q, δk) su altri cluster (salto spazio già esplorato) e restituisco i k oggetti più vicini Si presume la presenza di almeno k oggetti in Ci, altrimenti strategia ottimistica Gruppo 13 M-Chord 23 2 dataset di esempio: Immagini rappresentate da vettori di 45 dimensioni Corpus di testi confrontati con edit distance Buona scalabilità all’aumentare delle dimensioni della query e del dataset Cresce tuttavia numero messaggi scambiati Possibilità di influire sulle prestazioni agendo su politiche di split dei nodi Gruppo 13 M-Chord 24 Buoni livelli di parallelismo intraquery (stessa query processata in parallelo) ed interquery (più query contemporanee) Gruppo 13 M-Chord 25 Costi maggiori per kNN query Gruppo 13 M-Chord 26 Limiti: Previsto solo inserimento nuovi oggetti, no eliminazione/aggiornamento Nessun supporto per disconnessione nodi Pruning di iDistance da adattare a ambiente distribuito Ulteriori studi: Prestazioni su spazi vettoriali a bassa dimensionalità Replicazione Gruppo 13 M-Chord 27 GRUPPO 13 Decorte Andrea Giammarino Giuseppe