Elytics - Construindo uma plataforma de big data

Preview:

Citation preview

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