Survey of different approaches for computing KNN on top of Map Reduce :
There are two kinds algorithms :
KNN : the real k nearest neighbors
-> basic
-> hbnlj : hadoop bloc nest loop
-> voronoi : with indexation of cell of voronoi
AKNN : the approximate nearest neighbors
-> z-value : with space filling curve
-> hlsh : hadoop locality sensitive hashing
8. Map Reduce
MapReduce est un patron d'architecture de
développement informatique, popularisé par
Google, dans lequel sont effectués des calculs
parallèles, et souvent distribués, de données
potentiellement très volumineuses (Wikipedia)
8
21. HBKNNJ :
Hadoop Basic K Nearest Neighbors Join
INCONVENIENTS :
seul la phase map est mise en parallèle
AVANTAGES :
1 seul job map reduce
EN PRATIQUE :
utile pour des petits dataset mais devient très vite
cher en temps pour des plus grand dataset
21
23. HBNLJ :
Hadoop Block Nested Loop Join
But :
On veut mettre le phase reduce en parallèle en
découpant le travail
Methode :
Découper R et S en n*n reducer
23
24. HBNLJ :
Hadoop Block Nested Loop Join
Decoupage :
R1 R1 R1
R2 R2 R2
R3 R3 R3
s1
s1
s1
s2
s2
s2
s3
s3
s3
distribue R en ligne
distribue S en colonne
24
39. HBNLJ :
Hadoop Block Nested Loop Join
JOB 1:
calcul des
candidats
KNN( R ,S)
JOB 2:
calcul des
KNN( R ,S)
INPUT
R
INPUT
S
39
40. HBNLJ :
Hadoop Block Nested Loop Join
Avantage :
On découpe le travail en n*n reducer donc la phase
reduce peut être mis en parallèle.
Inconvenient :
replication de R et S n fois
on a en sortit que les cKNN(R, S) , c’est a dire les
candidats pour les KNN(R,S)
implique un 2nd job pour les KNN(R,S)
40
49. HVKNNJ :
Hadoop Voronoi K Nearest Neighbors
Join
JOB 2:
selection du pivot
le plus proche
+statistique
ETAPE:
grouping
INPUT
R
INPUT
S
JOB 1:
generer les pivots
INPUT
R
JOB 3:
calcul des
KNN
49
50. HVKNNJ : Hadoop Voronoi K Nearest Neighbors
strategie de pivots
Farthest :
sur un échantillon on prend le plus loin
KMeans :
sur un échantillon on prend un nombre de centroides qui seront
les pivots
50
51. HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???
Probleme ?
on a n reducer et p cellule pivots comment distribuer
p dans n ?
But ?
regrouper les pivots pour minimiser la replication de S
avoir un bon balancing (temps equivalent pour les
slots)
51
52. HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???
Probleme ?
on a n reducer et p cellules de pivots
comment distribuer p dans n ?
4 reducers
52
53. HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???
But
éviter la replication de S
avoir des cellule qui prennent le meme temps:good
balancing
53
55. HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???
Geo
Geo : Regrouper les pivots les plus proches
1
2
3
4
5
55
56. HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???
Geo
Geo : Mais les cellules non pas la meme repartion
Prendra plus
longtemps
que
les autres
56
57. HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???
Greedy
Greedy :repartir suivant les scores et les
cellules qui ont le plus de replication commun
grace au stat : on peut borner les réplications
des cellules et donc la complexité en temps
c(v) = complexité d une cellule
c(v)=#r*(#s+#rep)
57
58. HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???
Greedy
2
2
2
2
1
6
1
8
10
3
pivots rep score
A E,B 28
B A,E,D,C 40
C B,D 15
D E,B,C 25
E A,B,D 44
1
A
B
C
D
E
2 reducers
groupe score
58
59. HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???
Greedy
2
2
2
2
1
6
1
8
10
3
pivots rep score
A E,B 28
B A,E,D,C 40
C B,D 15
D E,B,C 25
E A,B,D 44
1
A
B
C
D
E
2 reducers
groupe score
28
15
A
C
59
60. HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???
Greedy
2
2
2
2
1
6
1
8
10
3
pivots rep score
A E,B 28
B A,E,D,C 40
C B,D 15
D E,B,C 25
E A,B,D 44
1
A
B
C
D
E
2 reducers
groupe score
28
55
A
C B
60
61. HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???
Greedy
2
2
2
2
1
6
1
8
10
3
pivots rep score
A E,B 28
B A,E,D,C 40
C B,D 15
D E,B,C 25
E A,B,D 44
1
A
B
C
D
E
2 reducers
groupe score
72
55
A
C B
E
61
62. HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???
Greedy
2
2
2
2
1
6
1
8
10
3
pivots rep score
A E,B 28
B A,E,D,C 40
C B,D 15
D E,B,C 25
E A,B,D 44
1
A
B
C
D
E
2 reducers
groupe score
72
80
A
C B
E
D
62
63. HVKNNJ : Hadoop Voronoi K Nearest Neighbors
etape 3: grouping
Resultat :
Greedy meilleur
avec plus de reducer
63
66. HZKNNJ :
Hadoop Z-Value K Nearest Neighbors
Join
Idee :
Transformer d-dimension
en 1 dimension grace au
Z value
On mappe les 1
dimension pour trouver
les KNNJ
66
67. HZKNNJ :
Hadoop Z-Value K Nearest Neighbors
Join
depart creation des copies
transformation basé
sur le space filling
= mappe sur 1-D
67
68. HZKNNJ :
Hadoop Z-Value K Nearest Neighbors
Join
Z-value
z_q
z+(z_q)z-(z_q)
candidats de q
68
77. HLSH :
Hadoop Locality Sensitive Hashing
1,0,-4
6,-8,7
9,0,-8
Idee :
• hash nos objets
• les objets qui ont le meme
hashing sont dans le meme
bucket
• =cherche de collision
77
78. HLSH :
Hadoop Locality Sensitive Hashing
1,0,-4
6,-8,7
9,0,-8
calcul des KNN des objets R
avec les objets S, du meme bucket
bucket vide (pas de R) = eliminé
78
79. La fonction de hashing
g est une famille de hash de longueur M
L famille de g
HLSH :
Hadoop Locality Sensitive Hashing
longueur M
objet
h1,h2…,hm
h1,h2…,hm
hash L fois
79
80. La fonction de hashing
!
!
!
a = random gaussian vector
b in [0,W]
W = définit la taille du bucket
HLSH :
Hadoop Locality Sensitive Hashing
h(v) =
a• v + b
W
⎢
⎣⎢
⎥
⎦⎥
80
81. La fonction de hashing
3 parametres
L = augmente la precision, mais augmente le temps
M = augmente probabilité que les elements proches sont dans le
meme bucket
W = la taille de la fenêtre
HLSH :
Hadoop Locality Sensitive Hashing
81
82. JOB 1:
générer les
hash et calcul
statistique
ETAPE 2:
définir la
partition grace
aux statistiques
INPUT
S
etape 0:
definir les hash value
INPUT
R JOB 2:
calcul des
KNN
des buckets
=candidats
JOB 3:
calcul des
KNN
HLSH :
Hadoop Locality Sensitive Hashing
82
83. Partition
on a plus de buckets que de reducers
Hadoop fait mal sa partition
Définir une partition pour que chaque reducer ait
la meme complexité en temps
soit P reducer tmps(P) = Sum(#ri*#si) i=bucket
HLSH :
Hadoop Locality Sensitive Hashing
83
84. HLSH :
Hadoop Locality Sensitive Hashing
Pros
rapide et moins de calcul
Cons
la fonction de hash est dataset dépendant
mais il a été prouvée que ce type de fonctions étaient plus efficace
on n a pas l’idée de replication des buckets si
pas assez d'éléments.
peut être améliorer (Multi probe, LSH forest, ….)
84
101. CONFIGURATION
20 nodes
1 slots/node
K = 20 trouver K voisins le plus proches
change taille des données
mesure le temps
Impact du nombre de données … : temps
101
102. Impact du nombre de données
4x10ˆ3 data
time(sec)
0
3500
7000
10500
14000
#data
50 100 200 400 800 1600
HBNLJ: bloc nested loop
102
103. Impact du nombre de données
4x10ˆ3 data
time(sec)
0
10000
20000
30000
40000
#data
50 100 200 400 800 1600
HBNLJ: Bloc nested loop HVKNNJ: Voronoi
103
104. Impact du nombre de données
4x10ˆ3 data
time(sec)
0
10000
20000
30000
40000
#data
50 100 200 400 800 1600
HBNLJ: Bloc nested loop HVKNNJ: Voronoi HLSH : LSH
104
105. Impact du nombre de données
4x10ˆ3 data
time(sec)
0
10000
20000
30000
40000
#data
50 100 200 400 800 1600
HBNLJ: Bloc nested loop HVKNNJ: Voronoi HLSH : LSH HZKNNJ : Zvalue
105
106. Impact du nombre de données
4x10ˆ3 data
time(sec)
0
1250
2500
3750
5000
#data
50 100 200 400 800 1600
HLSH : LSH HZKNNJ : Zvalue
106
107. Impact du nombre de données
accuracy(%)
0,8
0,85
0,9
0,95
1
#data
50 200 400 800 1600
HLSH : LSH HZKNNJ : Zvalue
107
143. HBNNLJ : BLOC NESTED LOOP
• CHOIX DU NOMBRE DE
REDUCER
• BALANCING
143
144. HBNNLJ : BLOC NESTEDtime(sec)
0
400
800
1200
1600
2000
2400
2800
3200
3600
4000
nombre de reducers
5x5 6x6 7x7 8x8 9x9
5m 50m 100m
Contexte : K=20, 15 nodes, 1 slot/nodes
min
min
min
144
145. on découpe en n*n reducers le travail
optimiser le parallélisme le plus possible , en découpant
le travail suivant le nombre de slots disponibles :
on a 15 nodes :
choisir 5x5 est pas optimal car on fait travailler 15 nodes puis 10
nodes , 5 resteront inactif
choisir 7x7 est mieux 49 : 15+15+15 juste 4 reste inactif
8x8 = 64 = 15 *4 +4 mieux pr good balancing
mais plus de reducer = moins de travail par case
HBNNLJ : BLOC NESTED
145
169. La fonction de
Hashing
change W
impact sur la
nombre des
bucket
- buckets => +
elements/buckets
Contexte : K=20, 20 nodes, 1 slot/nodes, file osm , dimension=2,#donnés=400000
169
HLSH : Locality Sensitive
172. A chacun ses problèmes
HBKNNJ :
Basic
pas assez de parallèles,
trop de calcul
HBNLJ :
Bloc Nested
Loop
trop de replications,
trop de calcul inutiles
HVKNNJ:
Voronoi
beaucoup de
calcul,
et long pour HD
peut etre risqué si mauvais choix
de pivots
Mieux pr data disperse
HZKNNJ
Z-Value
precision pas stable pour #data
très bon pour petite dimension
< 30
très mauvais pour HD
HLSH
Locality
Sensitive
Hashing
precision pas
stable pour K
grand
• difficultés des choix des
paramètres:
• depend de K
• depend du dataset
tres utile pour l'use case des
matching, car debase de
beaucoup de candidats
172
178. Similarité entre les images
ETAPE 1:
calcul des des
matching
grace a nos
différents
algorithmes
ETAPE 2:
calcul des K
plus hauts
scores
images
S
Images
R
OUTPUT
les K images
similaires pour
chaque
images
178
179. Impact du nombre de données
time(sec)
0
3500
7000
10500
14000
#image/category
1 2 4 6 8 16
HBNLJ HVKNNJ HLSH
179
180. input
map reduce output
HVKNNJ : Hadoop Voronoi K Nearest Neighbors
JOB 3: KNN
assignation a
son groupe
KNN(r2,S)
p_r,r
g_r2,[r2, s1,s2…]
KNN(r5,S)
p_s,s
decide a quel
groupe de r s
doit etre
répliqu'e
ETAPE:
grouping
g_r1,[r5, s1,s2…]
180