You are on page 1of 38

Como no fazer Data Science:

Muitos dados ou pouca arquitetura?


Intervalo C.E.S.A.R.
Guilherme Peixoto

cincia da computao (UFPE)

lead data engineer @ In Loco


MAIN PRODUCT
IN LOCO MEDIA

Brand In Loco Publishers Visits


In Loco Indoor Location Tech

+ +

Accelerometer Magnetic Field Wi-fi

Sem utilizar beacons ou bluetooth.


5+ bilhes
eventos / ms

50+ milhes
usurios ativos

A maior Mobile Ad Network da


Amrica Latina
L O C AT I O N - AWA R E D ATA P L AT F O R M
01 o incio
tudo comeou assim
e depois foi gerando dados no
Data Lake no S3
como analisar?

document-based, log JSON


gerar log em BSON para facilitar insero no Mongo
e comprimir com gzip para minimizar uso do S3
queries no Mongo DB para gerar insights
vamos analisar
de 0 a 30.000 rpm

~1B de eventos/ms

mais de 20 mquinas

banco de logs no aguentou


attempt #1: escalar verticalmente

melhorar a mquina do banco (HD e memria)

soluo no escalvel horizontalmente

custo no crescia linearmente


attempt #2: escalar horizontalmente

separao de responsabilidades

escalar horizontalmente

aplicaes

processamento de dados
O comeo do fim

muitos registros .BSON.gz, demorando para processar


soluo: agregar para carregar respostas pr-computadas
usando Hadoop MapReduce
crontab para gerenciar quando rodar jobs

consultar em bancos pelas estatsticas agregadas


Arquitetura Big Data
02 Vamos fazer
Data Science
but it worked, until

Estatsticas bsicas do negcio de anncios no mais suficiente

Demandas ad hoc de anlises de dados

Surge a necessidade de Data Science na empresa


Mobile
histograma de tempo de back to application por aplicativo
mdia de misclicks por publisher, aplicativo, tipo de criativo
anlise extensa de localizaes por OS

Location
em que bairro / cidade / estado / pas temos mais pontos de localizao
qual o comportamento da localizao indoor em determinado estabelecimento
erro / preciso mdia de localizao dado parmetros (WiFi, GPS, aplicativo, proximidade de estabelecimento)

Publisher
requests, impresses, fill rate, cliques, CTR, receita, eCPM (da base toda, por publisher, por app e por slot de anncio)

Ad Ops
tempo mdio de visita por estabelecimento
perfil sociodemogrfico impactado por campanha
quantos usurios que so X foram impactados por campanha C e foram ao estabelecimento E depois de tempo T e depois
Fazendo Data Science em larga escala

Cdigo MapReduce especfico anlise em um repositrio central

Compilar, subir o .jar

Quebrar, resolver, esperar, rodar de novo

Entregar
Muda esse parmetro e roda de novo por favor
problemas
~100GB de logs comprimidos/dia

cdigo MapReduce trabalhoso

cada aplicao gerencia os logs sua maneira

modelo de compresso errado (.gz)

esquema de dados errado (.bson)

consolidao dos logs em perodos diferentes (30 minutos)


problemas
desperdcios
processamento

tempo do desenvolvedor

financeiro

custo de oportunidade - produto no avanava


03 organizando e
centralizando
Construindo o Data Warehouse
Mudana de logs apropriadas para SparkSQL,
Hive e outras engines de SQL

Uso de Kafka para fazer ETL em real time com


o mnimo de processamento possvel

Interpretadores e engines SQL e Spark


para anlises no Data Warehouse

Dashboards para visualizao interativa


dos dados

Uso de ferramentas de pipeline para jobs


Spark mais complexos
Big Data Architecture
benchmarking

Daily Active Users (DAU) on 5 x (16GB RAM, 4 vCPU)


Spark on .bson.gz: 50min22s
( + T(compilao) + T(desenvolvimento) + T(publicar .jar pro S3, executar step))

Presto on Parquet: 9s
SELECT COUNT(DISTINCT mad_id) WHERE DAY = 'YYYY/MM/DD'

~336x speedup
ganhos
flexibilidade de anlise
anlise de dados em near real time

remoo da responsabilidade gerenciar logs das aplicaes

amortecimento de picos de eventos (backpressure)

diminuio de complexidade (Spark/Presto)


anlises utilizando SQL

escrever cdigos de processamento distribudo mais facilmente

feedback de anlises e resultados mais rapidamente


desafios

Aumento de complexidade ao lidar com streaming

Overhead operacional do cluster Hadoop


como realizar deploy? como subir novamente se cair?
como sincronizar backups constantes? como monitorar uso do HDFS? como escalar automaticamente?

Gerenciamento de prioridades / execues paralelas


como garantir que duas pessoas realizando queries ao mesmo tempo obtm recursos de forma justa?
como forar que jobs em produo tenham prioridade de recursos sob anlises pontuais?
Como no fazer Data Science

Assumindo que apenas usar MapReduce/Spark resolve qualquer escala de dados


Como no fazer Data Science

Assumindo que apenas usar MapReduce/Spark resolve qualquer escala de dados

No identificando gargalos (e.g.: estrutura de logs) e procurando respostas fceis


Como no fazer Data Science

Assumindo que apenas usar MapReduce/Spark resolve qualquer escala de dados

No identificando gargalos (e.g.: estrutura de logs) e procurando respostas fceis

No arrumando a arquitetura para possibilitar os cientistas a fazerem o seu trabalho


Como no fazer Data Science

Assumindo que apenas usar MapReduce/Spark resolve qualquer escala de dados

No identificando gargalos (e.g.: estrutura de logs) e procurando respostas fceis

No arrumando a arquitetura para possibilitar os cientistas a fazerem o seu trabalho

No conhecendo o modelo de execuo / algoritmos / ferramentas do que usado no dia-a-dia


Como no fazer Data Science

Assumindo que apenas usar MapReduce/Spark resolve qualquer escala de dados

No identificando gargalos (e.g.: estrutura de logs) e procurando respostas fceis

No arrumando a arquitetura para possibilitar os cientistas a fazerem o seu trabalho

No conhecendo o modelo de execuo / algoritmos / ferramentas do que usado no dia-a-dia

Deixando apenas o "time de Dados" sabendo onde os dados esto e como usar
Como no fazer Data Science

Assumindo que apenas usar MapReduce/Spark resolve qualquer escala de dados

No identificando gargalos (e.g.: estrutura de logs) e procurando respostas fceis

No arrumando a arquitetura para possibilitar os cientistas a fazerem o seu trabalho

No conhecendo o modelo de execuo / algoritmos / ferramentas do que usado no dia-a-dia

Deixando apenas o "time de Dados" sabendo onde os dados esto e como usar

No deixando que TODO funcionrio da empresa seja um Data Scientist


Thank You!
guilherme.peixoto@inlocomedia.com

www.inlocomedia.com

You might also like