Big Data na Globo.com - Dev Version - 2016

2.500 visualizações

Publicada em

Curta apresentação sobre a arquitetura de big data na globo.com.
Essa apresentação visa mostrar como Big Data auxiliou recomendação e analytics na empresa, bem como conseguimos construir uma plataforma (pipeline) para distribuir os dados pela empresa.
Essa apresentação será feita no TDC - Florianópolis.

Publicada em: Dados e análise
  • Seja o primeiro a comentar

Big Data na Globo.com - Dev Version - 2016

  1. 1. Big Data na globo.com Como estamos revolucionando com dados o maior portal do Brasil @renan_oliveira dev version www.renanoliveira.net
  2. 2. Eventos • 3 bilhões de eventos diários • 50 milhões de usuários únicos por mês • +100 mil novos conteúdos por mês
  3. 3. O que fazemos? RECOMENDAÇÃO ANALYTICS PIPELINE
  4. 4. • Lambda: Streaming + Batch • APIs com tempo de resposta em ms • Ferramentas de analise de dados • MapReduce está morto :) • Cuidado com HIVE Metastore :) Arquitetura
  5. 5. Consumo do Kafka • Usamos Spark Streaming • Quase em tempo real • Usamos para escrever os Parquets • Algoritmos de atualização constante
  6. 6. Batch • Usamos Spark + MLlib • Lemos de vários parquets (pv, track..) • Maioria dos algoritmos • Salvamos em outros bancos para facilitar o consumo nas APIs
  7. 7. ANÁLISE AD-HOC
  8. 8. object SparkExample extends App { val sparkConf = new SparkConf() val sc = new SparkContext(sparkConf) val sql = new SQLContext(sc) import sql.implicits._ val df_imp = sqlContext.read.parquet(“…”) val expCount = df_imp.groupBy(df_imp.exp).count() expCount.write.save(“…”) }
  9. 9. object SparkExample extends App { val sparkConf = new SparkConf() val sc = new SparkContext(sparkConf) val sql = new SQLContext(sc) import sql.implicits._ val df_imp = sqlContext.read.parquet(“…”) val expCount = df_imp.groupBy(df_imp.exp).count() expCount.write.save(“…”) } val df_imp = sqlContext.read.parquet("/ namenode/impressions/2016042510")
  10. 10. object SparkExample extends App { val sparkConf = new SparkConf() val sc = new SparkContext(sparkConf) val sql = new SQLContext(sc) import sql.implicits._ val df_imp = sqlContext.read.parquet(“…”) val expCount = df_imp.groupBy(df_imp.exp).count() expCount.write.save(“…”) } val df_imp = sqlContext.read.parquet("/ namenode/impressions/2016042510") val expCount = df_imp.groupBy(df_imp.experiment).count( ).orderBy(desc("count")).head(10)
  11. 11. object SparkExample extends App { val sparkConf = new SparkConf() val sc = new SparkContext(sparkConf) val sql = new SQLContext(sc) import sql.implicits._ val df_imp = sqlContext.read.parquet(“…”) val expCount = df_imp.groupBy(df_imp.exp).count() expCount.write.save(“…”) } expCount.write.save("/namenode/ exp_count/x.parquet")
  12. 12. WORKFLOW
  13. 13. Globo AB
  14. 14. • 100 mil recomendações por minuto • 15 ms de tempo de resposta (p50) • +200 testes A/B nos últimos 2 anos • +20 algoritmos diferentes Números
  15. 15. Algoritmos • Collaborative Filtering • Content-Based • Matrix Factorization - ALS
  16. 16. *Dados extraídos em maio de 2016 +30%+52%
  17. 17. *Dados extraídos em maio de 2016 +105% +40%
  18. 18. 13.2% feed editorial Maior diversidade feed recomendado 100% *matérias que foram para o feed
  19. 19. Obrigado renanoliveira.net
  20. 20. grandesdados.com
  21. 21. talentos.globo.com

×