O documento discute o uso de big data pela Globo.com para fornecer recomendações personalizadas aos usuários com base em seus interesses e comportamento online. A Globo.com usa diferentes técnicas como filtragem colaborativa, baseada em conteúdo e tops populares para fazer recomendações, e testes A/B para avaliar os algoritmos. Os dados são armazenados e processados usando tecnologias como Apache Hadoop, Spark, Kafka e HBase.
6. “A cada dois dias nós criamos 5
exabytes de dados, isso é o mesmo
que foi criado do início da
civilização até 2003.
-Eric Schmidt (CEO do Google)
7.
8. 5 V
➤ Volume: Grandes de dados,
desafios de armazenamento
➤ Variedade: Diferentes
formatos de dados
estruturados e/ou não
➤ Veracidade: Acurácia e
autenticidade
➤ Valor: Retorno desses dados
para o negócio/sociedade
➤ Velocidade: Tempo entre o
dado gerado e analisado
9. PRA QUE TANTOS DADOS?
➤ Predição
➤ Personalização
➤ As pessoas tem interesses
individuais
➤ Tantas informações são
passadas que cronológico
perde sentido
➤ Mostrar a mesma publicidade
pra mim e pra minha mãe não
faz sentido
➤ Queremos saber mais sobre o
público
12. GOOGLE FILE SYSTEM
➤ Publicação de 2003
➤ Revolucionário
➤ Barateando o custo de
processamento - máquinas
baratas
➤ Os arquivos são divididos em
chunks de 64mb
➤ Cada chunk tá no mínimo em
3 máquinas (localidade)
➤ É uma aplicação e não uma
alteração no kernel
http://cloudgroup.neu.edu.cn/papers/cloud%20data%20storage/gfs.pdf
13. MAPREDUCE
➤ Publicação de 2004 do Google
➤ Modelo para processar grande
volume de dados dividindo o
trabalho em tarefas para
serem processadas
independentemente
➤ A técnica de map e reduce era
muito usadas em linguagens
funcionais
https://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf
14.
15. OPENSOURCE
➤ Nasceu no Yahoo em 2006 por
Doug Cutting
➤ HDFS - Hadoop Distributed
File System, implementação
do GFS
➤ Hadoop MapReduce -
Framework, implementação
do MapReduce
➤ Hadoop Yarn - gestor e
"agendador" de recursos
➤ Java é a sua principal
linguagem
16. ➤ Se tornou um ecossistema
➤ Existem Bancos de dados
baseados nele e novos
Frameworks baseados nele
surgiram
➤ Tem como contribuidores
Yahoo, Facebook, LinkedIn,
eBay, IBM, Google
➤ Cloudera, Hortonworks e
MapR são algumas das
empresas/consultorias que
surgiram para difundir o
Hadoop
APACHE HADOOP
20. EVENTOS
➤ 3 Bilhões de eventos diários
➤ 2 milhões de conexões simultâneas
➤ 50 milhões de usuários únicos por mês
➤ 100 mil novos conteúdos por mês
21. O QUE FAZEMOS?
➤ Recomendação
➤ Personalização
➤ Machine Learning
➤ Análise de consumo
➤ Análise de comportamento
➤ Experimentos
➤ Testes A/B
➤ Publicidade segmentada
➤ Data Driven Organization
22.
23. NÚMEROS
➤ 100 mil recomendações por
minuto
➤ 15 ms de tempo de resposta
(p50)
➤ +300 testes A/B
➤ +20 algoritmos diferentes
➤ Presente em todos os
produtos da globo.com (G1,
GloboEsportes, GShow,
TechTudo, GloboPlay)
➤ Time de Growth focados na
melhoria em cada produto
24. FORMAS DE FAZER RECOMENDAÇÃO
➤ Usamos 2 formas de fazer recomendação
➤ User-Item - Muito usado em homes, página de chegada
não demostrou um interesse específico. Dado um usuário o
que ele tá mais propenso a ver
➤ Item-item - Dado uma matéria ou vídeo quais outros
conteúdos lhe interessam
28. COLLABORATIVE FILTERING CONTENT BASED TOP
surf
medina
peniche
prancha
mundial de
surf john john
mineirinho
pipeline
futebol
guerrero
flamengo
STJD
copa do brasil
fluminense henrique
brasileirão
30. CONTENT BASED
➤ Coisas parecidas com essas, com as mesmas palavras-chave
➤ Ele tem uma rápida atualização
➤ Preciso conhecer do usuário ou do item
➤ Usado no Spotify para criação de playlists automáticas
➤ Duas abordagens são usadas na globo.com TF-IDF e
Semântica
➤ TF-IDF: Automático para extração de palavras-chave
➤ Semântica: Os editores indicam no momento da criação
sobre quem é e onde ocorreu o fato
31. COLLABORATIVE FILTERING
➤ O que usuários parecidos comigo viram que eu não vi
➤ É o de maior taxa de conversão, o mais assertivo
➤ Ele tem uma atualização lenta, não é bom para notícias
bombásticas de agora e preciso conhecer o usuário
➤ Famoso pelo uso na Amazon
➤ Usado em e-commerces de todo mundo
➤ Netflix ficou famoso por fazer um ganho de performance com
o algoritmo ALS - Fatoração de matriz
➤ ALS tem um ótimo resultado dentro da globo.com
32. TOPS
➤ Conteúdos mais visitados
➤ Usado quando não sabemos nada sobre o usuário
➤ Resolve o problema das notícias "bombásticas"
➤ Podem ser inteligentes, top por região do usuário
42. TESTES A/B
➤ Método de avaliação de
desempenho entre grupos
➤ Sempre temos um cenário que
conhecemos, chamamos ele de
controle
➤ Ajuda a dizer se um "botão" é
melhor que outro ou se um
algoritmo vence na maioria
das vezes
➤ Método científico
➤ + de 400 testes já foram
feitos na globo
43.
44. JUPYTER
➤ Interface web para programar
em Julia, Python, R (e outras
linguagens)
➤ Usamos para validar futuros
algoritmos por sua
simplicidade
➤ É usado para os estudos sobre
o comportamento dos usuários
➤ Ótimo para compartilhar
➤ O GitHub fez um renderizador
➤ Tem suporte a Spark
(framework de processamento
de grandes dados)
45.
46. SUPERSET
➤ Criado pelo Airbnb em 2015
➤ Democrático, não precisa
saber programar para usar
➤ Explorador de dados
➤ Gerador de dashboard
➤ Gráficos para acompanhamento
dos acontecimentos
➤ Facilidade de integração com
muitos bancos de dados
➤ Estamos integrando nesse
momento na globo.com
52. REAL TIME
➤ Consumimos do Kafka
➤ Usamos Spark Streaming
➤ Usamos Scala ou Java
➤ Salvamos os dados brutos em
formato Parquet - "usuário fez
algo em algum lugar”
➤ Algoritmos de decisão em
tempo real
➤ Atualização dos modelos
➤ Sumarização usando o
conceito de janela
53. BATCH
➤ Consumimos de muitos
bancos de dados
➤ Usamos Spark + MLib
➤ Usamos Scala, Python ou R
➤ Usamos o Airflow para
disparar o Job
➤ Bom pra ler os Parquets,
muitos dados demoram para
serem processados
➤ A maioria dos algoritmos
usam essa estratégia
54. API - SERVING LAYER
➤ Escrevemos principalmente
em Java e Scala
➤ Retornamos JSON
➤ Usamos Netty e Finagle
➤ Nginx para proxy reverso
➤ +100 mil requisições por
minuto
➤ Tempo de resposta inferior a
20ms
➤ Usamos bancos de chave/valor
- HBase e Redis
55.
56. APACHE KAFKA
➤ Barramento (gestor de filas e
tópicos)
➤ Para grandes volumes de
entrada com baixa latência
para processamento em tempo
real
➤ Tem uma estrutura de cluster
➤ Criado no LinkedIn em 2011
➤ Principal contribuidor é a
Confluent
➤ Quem mais usa: Netflix, Uber,
Spotify e PayPal
57.
58. APACHE SPARK
➤ É um framework para N
linguagens (Scala, Python,
Java e R) - SQL
➤ Todos os nossos Jobs são
feitos usando-o, tanto
streaming quanto batch
➤ Estatísticos friendly
➤ Usa o conceito de DataFrame
o mesmo usado no Pandas e R
➤ Conexão com várias entradas e
saídas de dados
➤ Além do MapReduce
59. APACHE PARQUET
➤ Formato colunar
➤ Todos os nossos dados brutos
ficam armazenados nesse formato
➤ Abstraindo ele é estruturados
parecidos com o excel ou com
CSV
➤ Ele fica salvo no HDFS
➤ Mais usado para salvar dados
brutos (TB, PB de dados)
➤ Tem um ótimo compressor
➤ Os dados tem um schema
61. # Select everybody, but increment the age by 1
df.select(df['name'], df['age'] + 1).show()
# +-------+---------+
# | name|(age + 1)|
# +-------+---------+
# |Michael| null|
# | Andy| 31|
# | Justin| 20|
# +-------+---------+
# Count people by age
df.groupBy("age").count().show()
# +----+-----+
# | age|count|
# +----+-----+
# | 19| 1|
# |null| 1|
# | 30| 1|
# +----+-----+
62. APACHE HBASE
➤ "KeyValue" de alta performance
➤ Feito para guardar dados para
serem acessados de forma
muito rápida
➤ Bom para salvar dados sem
ocupar o espaço do chunk
➤ Salvamos os resultados da
nossas recomendações nele
para ter perfomance de leitura
➤ Os dados ficam armazenados
em regiões (e essas regiões são
ocupadas em ordem
lexicográfica)