elytics - construindo uma plataforma de big data
TRANSCRIPT
ElyticsConstruindo uma plataforma de Big Data
Karina Moraeslinkedin: br.linkedin.com/in/karinamoraes
Tiago Viníciuslinkedin: br.linkedin.com/in/viniremigio
Envie sua dúvida no Twitter!#elo7tech
Agenda
● Motivação● Arquitetura● Considerações finais
Motivação
Marketplace
Fluxo de desenvolvimento
Monitoração de sistemas
Negócio
● Quantas buscas, carrinhos e pedidos temos por dias?
● Quais as palavras mais buscadas pelos usuários? Retornam resultados?
● Qual a porcentagem de usuários que adicionam produtos ao carrinho, mas não finalizam a compra? Por que isso acontece?
Relatórios, relatórios, relatórios...
Mudanças!
Mudanças!
Negócio
● Qual a porcentagem de usuários que iniciam uma conversa, mas não finalizam a compra? Por que isso acontece?
● Os vendedores estão respondendo em tempo adequado?
● Como monitoramos mais facilmente e rapidamente uma fraude?
● Como criar visualizações que auxiliem na tomada de decisão em relação à evolução dos produtos
Reports, reports, reports...
Ahh não!
#Comofaz
… sounds like Big Data...
Volume
Velocidade
Veracidade Variedade
Valor
… Houston, we have a Big Problem!
Elytics: Plataforma de Big Data Analytics
● Objetivos○ Criar e visualizar métricas○ Validar novas funcionalidades○ Auxiliar em troubleshooting○ Análises exploratórias utilizando os dados○ Aplicação de técnicas que auxiliem na
otimização de objetivos de negócio
Elytics: Visão geral
Ingestão de dados Processamento Armazenamento
Visualização Machine Learning
Big Data
Big Data Analytics / Data Science
Análise e ModelagemInferência
Arquitetura
Secor
Ingestão de Dados Processamento e Armazenamento
Visualização
Machine Learning
Amazon S3
Amazon EMR
Ingestão de Dados
Ingestão de dados
SECOR
Amazon S3
Apache Kafka
● Publish-subscribe.● Vários consumidores por partição.● Garantia de ordem de entrega.● ~ 5 milhões de mensagens/dia.
Apache Kafka
{"type":"String",
"date":"2016-02-23T22:03:13.034Z[Etc/UTC]",
"payload":{"key":"value"}}
Processamento e Armazenamento
Apache Spark
● Processamento iterativo por Streaming de dados;● RDD - Processamento distribuído em memória;● Suporta Java, Scala, Python e R;
Apache Spark: Visão geral
Cluster Mode
Amazon Elastic MapReduce
Transient Cluster
Amazon S3
Amazon Elastic MapReduce
Persistent Cluster
Streamings
Controle de Offset para Streamings
Driver
Executor
Receiver
`
`
Simple Level API
Monitoração de execução
JMX
E mais...
Source file configuration
Dependency Injection
Datasource configuration
Amazon S3
This is...
Sparta
● Dependency Injection;● Datasource configuration;● Monitoring;● Kafka consumer manager;● Provider configuration;● Distcp;
Sparta: Streaming Configuration
# Kafka Simple API Configurationkafka.brokers=kafka.topics=
# Streaming Configurationstream.max.rate.per.second=stream.graceful.shutdown=stream.batch.interval.ms=stream.writeAheadLog.enable=stream.checkpoint.directory=stream.back.pressure.enabled=
# Kafka Offset Persistentkafka.offset.persistent=kafka.cassandra.hosts=kafka.cassandra.keyspace=kafka.cassandra.auto.migration=
Sparta: Batch Configuration
# File Source Configurationfile.s3.access.key=file.s3.secret.key=file.source=
# Batch History Configurationbatch.cassandra.hosts=batch.cassandra.port=batch.cassandra.user=batch.cassandra.password=batch.cassandra.keyspace=batch.cassandra.datacenter=batch.history.ttl.days=
# Data Source Configurationdatabase.url=database.user=database.pass=database.driver.class=
Sparta: Monitoring Configuration
# Monitoring Configurationreporter.statsd.host=reporter.statsd.port=reporter.statsd.prefix=reporter.enabled=reporter.class=
Sparta Open Source is Comming Soon!
Visualização
Abordagens
Utilizar plataformas de BI
Façamos nós mesmos
NVD3.js, Google Charts...
Apache Zeppelin!!!
Camada de visualizaçãoDados
processados
Análise exploratória/Insights
Dashboards
Amazon S3
Machine Learning
O que é?
● Aplicações○ Recomendação de produtos○ Prevenção a fraudes○ Segmentação de clientes○ Ranking em resultados de busca
Conjunto de dados ? Resposta
Objetivo Atendido!Sim!
Não :(
Satisfatória?
#Comofaz2Conjunto de
dados
X1...
Xn
Respostas
y1...
yn
E aí, qual é a função?
y=f(X)
Encontrar aproximação da função (modelo) Fique tranquilo e favorável, o seu modelo vai errar!
Erro controlado -> otimização do objetivo
Seller Score
É possível criar um score que permita identificar quais são os melhores vendedores do Elo7?
Variáveis de cada observação (X): métricas de desempenho do vendedor
Variável resposta (y ∈ [0,1]): probabilidade do vendedor estar entre os melhores
y = f(X)
Como encontrar a função aproximada (modelo) f ?
Regressão logística
Conjunto de vendedores com score calculado
[(X1,y1),...,(Xn,yn))]
Algoritmo de regressão logística
Modelo gerado!
Avaliar qualidade do
modelo
Modelo preditivo: algoritmo estima parâmetros B0 e B1 para a função
logística
(Função logística)
Vendedor não avaliado (Xn+1,?)
y =
Vendedor avaliado! (Xn+1,yn+1)
Preciso implementar isso?!?!?
Não... (ufa!)
Amazon Machine Learning
Integração com Elytics
Amazon S3
Amazon EMR
Job batch
Seller Score
Aplicações do Seller Score
● Aumentar ranking dos melhores vendedores na busca;
● Permitir contratação de posições de destaque;● Priorizar atendimento;● Prevenção de fraudes.
Recapitulando...
Secor
Ingestão de Dados Processamento e Armazenamento
Visualização
Machine Learning
Amazon S3
Amazon EMR
Para finalizar...
Lições aprendidas
● Source of truth: S3 e/ou HDFS;● Evitar serviços não-gerenciados;● Optar por streaming de dados traz grandes
responsabilidades; ● Visualizar métricas é de extrema importância.
Próximos passos
● Evoluir a plataforma;● Migrar o máximo de serviços para AWS;● Disponibilizar mais dashboards de visualização;● Ampliar projetos de Big Data Analytics.
Obrigado!
Karina Moraeslinkedin: br.linkedin.com/in/karinamoraes
Tiago Viníciuslinkedin: br.linkedin.com/in/viniremigio