1. Big Compute on Hadoop
Parallélisation de l'algorithme de similarité
« Jaro-Winkler »
Zied Abidi
Jacques Milman
2. 2
Le contexte
§ Dimentionner une plateforme pour
l’exécution d’un traitement lourd.
§ Actuellement le traitement prend 13 jours
§ Mesure de similarité entre des chaines
de caractère avec Jaro-winkler
§ Algorithme de similarité entre des
chaines de caractère
§ Conçu spécialement pour les noms et
prénom
§ La similarité des premiers caractères est
la plus importante
Jaro-Winkler
4. 4
L’implémentation Spark
Lecture des
fichiers
Produit
cartésien
Appliquer
jaro winkler
Enregistrer
le résultat
sur hdfs
spark.read.load("
/user/spark/…
- Taille du fichier de donnnées < taille d’un
block HDFS
- => pré traitemment en divisant le fichier
d’entrée en plusieurs fichier
.join(EXPORT_OC1,
leftDF.id<rightDF.id)
- Le produit cartésien gégère des doublants
: ab, ba
- Inutile de faire les memes comparaisons J
Cart_prod.map(lambda
line: jaro(l.label1,
l.label2) )
.write.save("/user/spark/…
", format="parquet")
- Ecriture avec le format parquet pour
réduire la taille des données écrites
0 1000 2000 3000
Python
C
temps d'execution (Sec) L’écriture en C est
6 fois plus rapide
que
l’implémentation
en python
5. 5
Dimensionnement
§ Vérification de la scalabilité linaire de
l’implémentation:
- En fonction de l’évolution des
données
- En fonction de l’évolution des
nombre d’unité d’exécution (cpu)
§ Calcul du nombre d’operation par
seconde et par coeur de cpu (40.500)
Evolution du nombre d’operation par seconde
Nombre nodes = # traitements / ( Temps d’exécution voulu * # cœur par
noeud * # opération par seconde )
7. 7
Hive is Really 3 Things…
Open source SQL on Hadoop
SQL Execution Engine
Hive
Hive Storage Model
(open source)
CSV Parquet ORC Others…Tab Delim.
Hive Metastore
(open source)MapReduce
Applications
8. 8
Big SQL Preserves Open Source Foundation
Leverages Hive metastore and storage formats.
No Lock-in. Data part of Hadoop, not Big SQL. Fall back to Open Source Hive Engine at any time.
SQL Execution Engines
Big SQL Hive
Hive Storage Model
(open source)
CSV Parquet ORC Others…Tab Delim.
Hive Metastore
(open source)
Applications
9. 9
Big SQL Architecture vs other SQL Engines
Leverages Hive metastore and storage formats.
SQL Execution Engines
Big SQL Hive
Hive Storage Model
(open source)
CSV Parquet ORC Others…Tab Delim.
Hive Metastore
(open source)
BigSQLruntime
Applications
Spark SQL Impala
10. 10
Code implementation
§ UDF Implementation
void SQL_API_FN jaro_winkler
(
char *s1,
char *s2,
double *out,
short *i1,
short *i2,
short *i3,
SQLUDF_TRAIL_ARGS
)
{
*out=jaro_winkler_distance(s1,s2);
*i3 = 0;
}
§ SQL Implementation
CREATE FUNCTION jaro_winkler (
CHAR(32)
,CHAR(32)
)
returns double
not fenced
deterministic
language c
parameter style sql
external name ’jaro!jaro_winkler'
external action;
• Algo implementation
double jaro_winkler_distance(char *s1, char *s2) {...}
11. 11
The query
create external hadoop table jaro_ext
( id1 int,id2 int,score dec(5,4))
row format delimited fields terminated by ',’
lines terminated by 'n’
stored as textfile
location '/user/bigsql/jaro_ext/';
insert into jaro_ext
selects.id as
id_source
,c.id as id_cible,jaro_winkler(s.string,c.string)
from jaro_left s ,jaro_left c
where s.id < c.id;
14. 14
Enseignements
ØComplexité du fine tuning des traitements Spark
ØImportance du langage avec lequel sont écrits les traitements.
ØBigSQL permet des gains de performance et de productivité
ØTechniques d’optimisation similaires