evolucion de big data @ mercadolibre.com
DESCRIPTION
Evolucion y algunos proyectos de BigData en Mercadolibre.com incluyendo Hadoop y Real-Time streamingTRANSCRIPT
![Page 1: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/1.jpg)
Evolución de BigData
@MercadoLibre
2014
![Page 2: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/2.jpg)
![Page 3: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/3.jpg)
Big Data Hoy
● 154 nodos fisicos● 1.9 PB de espacio disponible● ~ 7 Tb de RAM● ~ 3000 cores
![Page 4: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/4.jpg)
Big Data Hoy - Crecimiento Diario
● ~= 4Tb de datos nuevos x Dia● > 10.000.000.000 Rows nuevas x Dia
![Page 5: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/5.jpg)
Big Data Hoy - En cosas cotidianas
500.000 DVD’s
![Page 6: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/6.jpg)
Big Data Hoy - En cosas cotidianas
1800 Mac Book Pro
![Page 7: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/7.jpg)
Usos de BigData @ MELI
● Mejora de experiencia al Usuario
● Log Mining● Ad Hoc Análisis
![Page 8: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/8.jpg)
Como empezamos ?
![Page 9: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/9.jpg)
Algo de Historia
![Page 10: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/10.jpg)
Algo de Historia
![Page 11: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/11.jpg)
Algo de Historia
● Año 2011● 6 Nodos● 48Tb● 192 Gb de Ram● 72 Cpu’s
![Page 12: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/12.jpg)
Algo de Historia
“Con que datos comenzamos?”
![Page 13: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/13.jpg)
Algo de Historia
Almacenamiento de la Plataforma de Traqueo
PixelOld Storage Filer
![Page 14: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/14.jpg)
Algo de Historia
Almacenamiento de la Plataforma de Traqueo
Pixel
Old Storage Filer
Hadoop Uploader & Compresor
![Page 15: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/15.jpg)
Algo de Historia
![Page 16: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/16.jpg)
public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text();
public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> 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<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { int sum = 0; while (values.hasNext()) { sum += values.next().get(); } output.collect(key, new IntWritable(sum)); } }
public static void main(String[] args) throws Exception { JobConf conf = new JobConf(WordCount.class); conf.setJobName("wordcount");
conf.setOutputKeyClass(Text.class); conf.setOutputValueClass(IntWritable.class);
conf.setMapperClass(Map.class); conf.setCombinerClass(Reduce.class); conf.setReducerClass(Reduce.class);
conf.setInputFormat(TextInputFormat.class); conf.setOutputFormat(TextOutputFormat.class);
FileInputFormat.setInputPaths(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1]));
JobClient.runJob(conf); }
![Page 17: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/17.jpg)
Algo de Historia
![Page 18: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/18.jpg)
Algo de Historia
● Facil de explicar y usar (SQL)● Soporte de UDFS● Particionamiento de la información
simple● JDBC
![Page 19: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/19.jpg)
Algo de Historia
SELECT count(1) FROM tracking WHERE ds>=’2014-09-16 00:00:00’AND ds>=’2014-09-16 23:59:59’AND PAGE_ID=’HOME’
![Page 20: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/20.jpg)
Algo de Historia
Hadoop facil y disponible para todos
![Page 21: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/21.jpg)
“Tenemos un entorno sobre el que hacer procesos batch y discovery. Entonces Manos a la obra.”
![Page 22: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/22.jpg)
Proyectos
Recommendations
![Page 23: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/23.jpg)
Proyectos - Recommendations
Premisa: “Si una serie de usuarios ven productos similares, entonces les interesan las mismas cosas (en un momento
dado)”
![Page 24: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/24.jpg)
Proyectos - Recommendations
Session Categoria Score
1 MLA1051 30
1 MLA1052 45
2 MLA1051 15
2 MLA1052 25
2 MLA1053 18
![Page 25: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/25.jpg)
Proyectos - Recommendations
Categ Origen Categ Recommendada Score
MLA1051 MLA1052 70
MLA1051 MLA1053 18
MLA1052 MLA1051 30
MLA1052 MLA1053 18
....
....
![Page 26: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/26.jpg)
Proyectos - RecommendationsCREATE TEMPORARY FUNCTION category_encode AS 'com.ml.utils.udf.intdecode.CategoryEncode';CREATE TEMPORARY FUNCTION generate_score AS 'com.ml.utils.udf.score.GenerateScore';
INSERT OVERWRITE TABLE rc_user_relationsselect main.user,main.categ, if(main.score>100,100,main.score) from ( select user_hash as user , category_encode(request_data['_categid']) as categ, sum(generate_score(ds,31,3)) as score from tracking
where ds>='${startDate}' and
ds<='${endDate}' and user_id <> "" and user_hash<>"0" and page_id='PAGE_ID_VIP' and request_data['_categid'] <> "" and request_data['_categid'] is not null and request_data['_categid'] RLIKE "^[A-Z]{3}[0-9]+$" group by user_id, category_encode(request_data['_categid']) ) main
INSERT OVERWRITE TABLE rc_categ_recommendations SELECT ur1.categ_id as categ, ur2.categ_id as categ_recommend,
sum(ur1.score) as tot FROM rc_user_relations ur1
JOIN rc_user_relations ur2 on ur1.cust_id=ur2.cust_id WHERE ur2.score>6
AND ur1.categ_id <> ur2.categ_id group by ur1.categ_id, ur2.categ_id
order by categ, categ_recommend, tot desc;
![Page 27: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/27.jpg)
Proyectos - Recommendations
“Buenisimo!!! Podemos calcular recomendaciones, pero… Esta info es Batch, como la mostramos a
nuestros usuarios”
![Page 28: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/28.jpg)
Proyectos - Recommendations
Recommendations Api RedisDB
On-Line
![Page 29: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/29.jpg)
Proyectos - Suggestions
Suggestions
![Page 30: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/30.jpg)
Proyectos - Suggestions
● Calculamos lo más buscado del último año (> 50M de búsquedas distintas)
● Subimos esta data a un storage temporal● Cargamos la data a un cluster de árboles de
prefijos
![Page 31: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/31.jpg)
SWIFT
Proyectos - Suggestions
Proxy MLA
Shard 0
Shard 1
Shard N
![Page 32: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/32.jpg)
Otras fuentes de Datos
![Page 33: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/33.jpg)
Otras fuentes de datos
● Load Balancer access-log● MercadoClics (clics/prints)● Scoring & Fraude● Seguridad
![Page 34: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/34.jpg)
“Hasta aca pudimos resolver problemáticas Batch, el problema surgió cuando se necesito empezar a contar con
la información más rápido”
![Page 35: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/35.jpg)
Real-Time
![Page 36: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/36.jpg)
● Poder contar con la información a medida que se genera (t < 10s)
● Poder tomar acciones de forma instantánea
● Permitir a cualquier proyecto consumir los datos
● Poder trabajar sobre todo el volumen de información
Real-Time
![Page 37: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/37.jpg)
Real-Time - Nueva Plataforma de Tracking
Load Balancer
WS
Stream
Hadoop
Real Time Consumers
![Page 38: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/38.jpg)
Real-Time - Nueva Plataforma de Tracking - Stream
Sources
Complementador
Pipeline Consumidores
1
N
![Page 39: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/39.jpg)
Real-Time - Por que Kafka?
● Escalabilidad Horizontal● Poco consumo de recursos● Rapido● Soporte de volúmenes muy elevados de tráfico● Confiable
![Page 40: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/40.jpg)
Real-Time - Por que Kafka?
![Page 41: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/41.jpg)
Proyecto usando Real-Time
![Page 42: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/42.jpg)
Filter and Process
Std-INKReader
API
Stream
![Page 43: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/43.jpg)
“Tenemos off-line y on-line, para BigData, que pasa con un warehouse tradicional? ”
![Page 44: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/44.jpg)
DataWarehouse
![Page 45: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/45.jpg)
DataWarehouse
![Page 46: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/46.jpg)
Extract and Summarize Process
DataWarehouse
![Page 47: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/47.jpg)
Proximos Pasos...
![Page 48: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/48.jpg)
Proximos Pasos
● Real Time Analytics Query○ Impala○ Presto○ Shark
● Spark como remplazo a MapReduce● Consumo simple del Stream
![Page 49: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/49.jpg)
![Page 50: Evolucion de big data @ mercadolibre.com](https://reader035.vdocuments.net/reader035/viewer/2022062313/55900bc71a28abdd3d8b45ee/html5/thumbnails/50.jpg)