padrões de arquitetura para big data na aws
TRANSCRIPT
João Paulo (JP) Santana, Arquiteto de Soluções da AWS
Novembro de 2016
Padrões de arquitetura para big data na AWS
© 2016, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.
Agenda
Desafios de big dataComo simplificar o processamento de big dataQuais tecnologias você deve usar?
• Por quê?• Como?
Arquitetura de referênciaPadrões de design
Big data em constante crescimento
Evolução do big data
Lote
Relatório
Tempo real
Alertas
Predição
Previsão
Grande número de ferramentas
Amazon Glacier
S3 DynamoDB
RDS
EMR
Amazon Redshift
Data PipelineAmazon Kinesis CloudSearch
Aplicativo habilitado para
Kinesis
Lambda ML
SQS
ElastiCache
DynamoDBStreams
Há uma arquitetura de referência?Quais ferramentas eu devo usar?Como? Por quê?
Princípios de arquitetura
“Barramento de dados” desconectado• Dados → Armazenamento → Processamento → Respostas
Use a ferramenta certa para a tarefa• Estrutura de dados, latência, taxa de transferência, padrões de
acessoUse ideias de arquitetura Lambda
• Registro imutável (somente anexação), camada de lote/velocidade/veiculação
Utilize os serviços gerenciados da AWS• Sem/pouca administração
Big data ≠ grande custo
Simplifique o processamento de big data
incluir/coletar
armazenar processar/analisar
consumir/visualizar
dados respostas
Tempo até a resposta (latência)Taxa de transferência
Custo
Incluir/coletar
Tipos de dados
Transacional• Leituras e gravações no banco de
dados (OLTP)• Cache
Pesquisar• Registros• Streams
Arquivo• Arquivos de log (/var/log)• Estruturas e coletores de registros
Stream• Registros de log• Sensores e dados de IoT
Banco de dados
Armazena-mento
de arquivos
Armazena-mento
de streams
A
iOS Android
Aplicações Web
Logstash
Regi
stro
IoT
Aplic
açõe
s
Dados transacionais
Dados de arquivos
Dados de fluxo
Aplicações móveis
Dados de pesquisa
Pesquisar
Coletar ArmazenarRe
gist
roIo
T
Armazenar
Armaze-namento
de streams
A
iOS Android
Aplicações Web
Logstash
Amazon RDS
Amazon DynamoDB
AmazonES
AmazonS3
ApacheKafka
AmazonGlacier
AmazonKinesis
AmazonDynamoDB
AmazonElastiCache
Pesq
uisa
SQ
L N
oSQ
L
Cach
eAr
maz
enam
ento
de
fluxo
Arm
azen
am
ento
de
arqu
ivos
Dados transacionais
Dados de arquivos
Dados de fluxo
Aplicações móveis
Dados de pesquisa
Banco de dados
Armazena-mento
de arquivos
Pesquisar
Coletar ArmazenarRe
gist
roIo
TAp
licaç
ões
Opções de armazenamento de fluxo
Serviços gerenciados da AWS• Amazon Kinesis → fluxos• DynamoDB Streams → tabela + fluxos• Amazon SQS → fila• Amazon SNS → pub/ass
Não gerenciado• Apache Kafka → fluxo
Por que usar o armazenamento de streams?Desconecte produtores e consumidores
Buffer persistente
Colete vários streams
Preserve os pedidos dos clientes
Streaming do MapReduce
Consumo paralelo
4 4 3 3 2 2 1 14 3 2 1
4 3 2 1
4 3 2 1
4 3 2 14 4 3 3 2 2 1 1
Produtor 1
Fragmento 1 / Partição 1
Fragmento 2 / Partição 2
Consumidor 1 Contagem
de chaves vermelhas = 4
Contagem de chaves violeta = 4
Consumidor 2 Contagem
de chaves azuis = 4
Contagem de chaves verdes = 4
Produtor 2
Produtor 3
Produtor N
Chave = Vermelha
Chave = Verde
Chave = Azul
Chave = Violeta
DynamoDB Stream Kinesis Stream Tópico do Kafka
E quanto a filas e pub/sub? • Desconecte produtores
e consumidores/assinantes• Buffer persistente• Colete vários fluxos• Sem consumo paralelo
para o Amazon SQS• O Amazon SNS pode
rotear para várias filas ou funções ʎ
• Sem streaming do MapReduce
Consumidores
Produtores
Produtores
Amazon SNS
Amazon SQS
fila
tópico
função
ʎ
AWS Lambda
Amazon SQSfila
Assinante
Qual armazenamento de fluxo devo usar?Amazon Kinesis
DynamoDB Streams
Amazon SQSAmazon SNS
Kafka
Gerenciado Sim Sim Sim Não
Pedidos Sim Sim Não Sim
Entrega pelo menos uma vez
exatamente uma vez
pelo menos uma vez
pelo menos uma vez
Duração 7 dias 24 horas 14 dias Configurável
Replicação 3 AZ 3 AZ 3 AZ Configurável
Taxa de transferência Sem limite Sem limite Sem limite nº aprox. nós
Clientes paralelos Sim Sim Não (SQS) Sim
MapReduce Sim Sim Não Sim
Tamanho do registro 1 MB 400 KB 256 KB Configurável
Custo Baixo Mais alto (custo da tabela)
Baixo-médio Baixo (+ admin.)
Armaze-namento
de arquivos
A
iOS Android
Aplicações Web
Logstash
Amazon RDS
Amazon DynamoDB
AmazonES
AmazonS3
ApacheKafka
AmazonGlacier
AmazonKinesis
AmazonDynamoDB
AmazonElastiCache
Pesq
uisa
SQ
L N
oSQ
L
Cach
eAr
maz
enam
ento
de
fluxo
Arm
azen
amen
to d
e ar
quiv
os
Dados transacionais
Dados de arquivos
Dados de fluxo
Aplicações móveis
Dados de pesquisa
Banco de dados
Pesquisar
Coletar ArmazenarRe
gist
roIo
TAp
licaç
ões
Por que o Amazon S3 é bom para big data?• Suportado de maneira nativa por estruturas de big data (Spark, Hive, Presto etc.) • Sem necessidade de executar clusters de computação para armazenamento
(diferente de HDFS)• Pode executar clusters Hadoop temporários e instâncias do Amazon EC2 Spot• Vários clusters diferentes (Spark, Hive, Presto) podem usar os mesmos dados• Número ilimitado de objetos • Largura de banda muito alta – sem limite agregado de taxa de transferência• Altamente disponível – pode tolerar falhas de AZ• Desenvolvido para ter uma durabilidade de 99,999999999%• Armazenamento em níveis (Standard-IA, Amazon Glacier) por meio da política de
ciclo de vida• Seguro – SSL, criptografia no lado do cliente/servidor em repouso• Baixo custo
E quanto ao HDFS e ao Amazon Glacier?
• Use o HDFS para dados acessados com muita frequência (quentes)
• Use o Amazon S3 Standard para dados acessados com muita frequência
• Use o Amazon S3 Standard-IA para dados acessados com pouca frequência
• Use o Amazon Glacier para arquivar dados frios
Banco de dados +
Pesquisa
Nível
A
iOS Android
Aplicações Web
Logstash
Amazon RDS
Amazon DynamoDB
AmazonES
AmazonS3
ApacheKafka
AmazonGlacier
AmazonKinesis
AmazonDynamoDB
AmazonElastiCache
Pesq
uisa
SQ
L N
oSQ
L
Cach
eAr
maz
enam
ento
de
fluxo
Arm
azen
amen
to d
e ar
quiv
os
Dados transacionais
Dados de arquivos
Dados de fluxo
Aplicações móveis
Dados de pesquisa
Coletar Armazenar
Banco de dados + Antipadrão do nível de pesquisa
RDBMS
Banco de dados + Nível de pesquisa
Aplicações
Melhor prática - Use a ferramenta certa para a tarefa
Camada de dadosSearch
Amazon Elasticsearch Service
Amazon CloudSearch
Cache
RedisMemcached
SQL
Amazon AuroraMySQLPostgreSQLOracleSQL Server
NoSQL
CassandraAmazon
DynamoDBHBaseMongoDB
Aplicações
Banco de dados + Search
Visualizações materializadas
Qual armazenamento de dados devo usar?
Estrutura de dados → Esquema fixo, JSON, chave-valor
Padrões de acesso → Armazene os dados no formato em que você os acessará
Características de acesso/dados → quentes, mornos, frios
Custo → Custo certo
Estrutura dos dados e padrões de acessoPadrões de acesso O que usar?Put/Get (chave, valor) Cache, NoSQL
Relacionamentos simples → 1:N, M:N NoSQL
Joins de várias tabelas, transações, SQL SQL
Facetamento/pesquisa Search
Estrutura de dados O que usar?Esquema fixo SQL, NoSQL
Sem esquema (JSON) NoSQL, Search
(Chave, valor) Cache, NoSQL
Qual é a temperatura dos dados/do acesso?
Quentes Mornos FriosVolume MB–GB GB–TB PBTamanho do item B–KB KB–MB KB–TBLatência ms ms, s min, hDurabilidade Baixa–alta Alta Muito altaTaxa de solicitações Muito alta Alta BaixaCusto/GB $$-$ $-¢¢ ¢
Dados quentes Dados mornos Dados frios
Características dos dados/do acesso: Quentes, mornos, frios
Cache SQL
Taxa de solicitaçõesAlta Baixa
Custo/GBAlta Baixa
LatênciaBaixo Alto
Volume de dadosBaixa Alta
GlacierE
stru
tura
NoSQL
Dados quentes Dados mornos Dados frios
Baixo
Alto
S3
Pesquisa
HDFS
Amazon ElastiCache
AmazonDynamoDB
AmazonAurora
AmazonElasticsearch
Amazon EMR (HDFS)
Amazon S3 Amazon Glacier
Latência média ms ms ms, s ms, s s, min, h ms, s, min(tamanho aprox.)
h
Volume de dados
GB GB–TBs(sem limite)
GB–TB(No máx. 64 TB)
GB–TB GB–PB(nº aprox. nós)
MB–PB(sem limite)
GB–PB(sem limite)
Tamanho do item
B-KB KB(No máx. 400 KB)
KB(64 KB)
KB(No máx. 1 MB)
MB-GB KB-GB(No máx. 5 TB)
GB(No máx. 40 TB)
Taxa de solicitações
Alta - Muito alta
Muito alta(sem limite)
Alta Alta Baixa – Muito alta
Baixa –Muito alta(sem limite)
Muito baixa
Custo do armazenamentoGB/mês
$$ ¢¢ ¢¢ ¢¢ ¢ ¢ ¢/10
Durabilidade Baixa - Moderada
Muito alta Muito alta Alta Alta Muito alta Muito alta
Dados quentes Dados mornos Dados frios
Dados quentes Dados mornos Dados friosQual armazenamento de dados devo usar?
Design baseado em custo Exemplo: devo usar o Amazon S3 ou o Amazon DynamoDB?
“No momento, estou desenvolvendo um projeto que aumentará muito o uso que minha equipe faz do Amazon S3. Espero que você possa responder a algumas perguntas. A iteração atual do design chama muitos arquivos pequenos, talvez até um bilhão durante o pico. O tamanho total ficaria na ordem de 1,5 TB por mês…”
Taxa de solicitações (gravações/s)
Tamanho do objeto (Bytes)
Tamanho total(GB/mês)
Objetos por mês
300 2048 1483 777,600,000
Design baseado em custo Exemplo: devo usar o Amazon S3 ou o Amazon DynamoDB?
https://calculator.s3.amazonaws.com/index.html
Calculadora mensal simples
Taxa de solicitações (Gravações/s)
Tamanho do objeto(Bytes)
Tamanho total(GB/mês)
Objetos por mês
300 2,048 1,483 777,600,000
Amazon S3 ouAmazon DynamoDB?
Taxa de solicitações (Gravações/s)
Tamanho do objeto (Bytes)
Tamanho total(GB/mês)
Objetos por mês
Cenário 1 300 2,048 1,483 777,600,000
Cenário 2 300 32,768 23,730 777,600,000
Amazon S3
Amazon DynamoDB
use
use
Processar/analisar
AnalisarA
iOS Android
Aplicações Web
Logstash
Amazon RDS
Amazon DynamoDB
AmazonES
AmazonS3
ApacheKafka
AmazonGlacier
AmazonKinesis
AmazonDynamoDB
Amazon Redshift
Impala
Pig
Amazon ML
AmazonKinesis
AWSLambda
Amaz
on E
last
ic
Map
Redu
ce
AmazonElastiCache
Pesq
uisa
SQ
L N
oSQ
L
Cach
e
Stre
ams
Batc
hIn
tera
tivo
Regi
stro
Arm
azen
amen
to d
e flu
xo
IoT
Aplic
açõe
s
Arm
azen
amen
to d
e ar
quiv
os
Quentes
Frios
MornosQuentes
Quentes
ML
Dados transacionais
Dados de arquivos
Dados de fluxo
Aplicações móveis
Dados de pesquisa
Coletar Armazenar Analisar
Streaming
Análise interativa
É necessário um grande volume de dados (quentes/frios)Leva segundos para receber as respostas
Exemplo: painéis de autoatendimento
Análise em Batch
É necessário um grande volume de dados (quentes/frios)Leva minutos ou horas para receber as respostas
Exemplo: geração de relatórios diários, semanais ou mensais
Análise em tempo realUse uma pequena quantidade de dados quentes para fazer perguntas Leva pouco tempo (milissegundos ou segundos) para receber a resposta
Tempo real (evento)• Resposta em tempo real a eventos em fluxos de dados• Exemplo: alertas de faturamento/fraude
Quase em tempo real (microlote)• Operações quase em tempo real em pequenos lotes de eventos
em fluxos de dados• Exemplo: métricas de 1 minuto
Previsões por meio de Machine Learning
Com o ML, os computadores podem aprender sem ser programados de maneira explícita
Algoritmos de aprendizagem automática:Aprendizagem supervisionada ← você “ensina” o programa
- Classificação ← Essa transação é uma fraude? (sim/não) - Regressão ← Valor da vida útil do cliente?
Aprendizagem sem supervisão ← deixe-o aprender sozinho- Clustering ← Segmentação de mercado
Ferramentas e estruturas de análise
Machine Learning• Mahout, Spark ML, Amazon ML
Análise interativa• Amazon Redshift, Presto, Impala, Spark
Processamento em batch• MapReduce, Hive, Pig, Spark
Processamento de streams• Microlote: Streaming do Spark, KCL, Hive, Pig• Tempo real: Storm, AWS Lambda, KCL
Amazon Redshift
Impala
Pig
Amazon Machine Learning
AmazonKinesis
AWSLambda
Amaz
on E
last
ic
Map
Redu
ce
Proc
essa
men
to d
e flu
xos
Lote
Inte
rati
voM
L
Analisar
Streaming
Qual tecnologia de processamento de fluxos devo usar?Streaming do Spark
Apache Storm Biblioteca cliente do Amazon Kinesis
AWS Lambda Amazon EMR (Hive, Pig)
Escala/taxa de transferência
Nº aprox. nós Nº aprox. nós Nº aprox. nós Automático Nº aprox. nós
Lote ou tempo real
Tempo real Tempo real Tempo real Tempo real Lote
Capacidade de gerenciamento
Sim (Amazon EMR)
Faça você mesmo
Amazon EC2 + Auto Scaling
Gerenciado pela AWS
Sim (Amazon EMR)
Tolerância a falhas
AZ único Configurável Multi-AZ Multi-AZ AZ único
Linguagens de programação
Java, Python, Scala
Qualquer linguagem por meio do Thrift
Java por meio de MultiLangDaemon (.Net, Python, Ruby, Node.js)
Node.js, Java, Python
Hive, Pig, linguagens de streaming
Latência da consulta Baixa Alta
(baixa é melhor)
Baixa Baixa
Qual tecnologia de processamento de dados devo usar?
AmazonRedshift
Impala Presto Spark Hive
Latência da consulta
Baixa Baixa Baixa Baixa Média (Tez) – Alta (MapReduce)
Durabilidade Alta Alta Alta Alta Alta
Volume de dados
No máx. 1,6 PB
Nº aprox. nós Nº aprox. nós Nº aprox. nós Nº aprox. nós
Gerenciado Sim Sim (EMR) Sim (EMR) Sim (EMR) Sim (EMR)
Armazena-mento
Nativo HDFS/S3A* HDFS/S3 HDFS/S3 HDFS/S3
Compatibilidade com SQL
Alta Média Alta Baixa (SparkSQL)
Média (HQL)
Latência da consulta Baixa Alta
(baixa é melhor)
Baixa Baixa Média
E quanto à ETL?
Armazenar Analisar
https://aws.amazon.com/big-data/partner-solutions/
ETL
Consumir/visualizar
Coletar Armazenar Analisar Consumir
A
iOS Android
Aplicações Web
Logstash
Amazon RDS
Amazon DynamoDB
AmazonES
AmazonS3
ApacheKafka
AmazonGlacier
AmazonKinesis
AmazonDynamoDB
Amazon Redshift
Impala
Pig
Amazon ML
AmazonKinesis
AWSLambda
Amaz
on E
last
ic
Map
Redu
ce
AmazonElastiCache
Pesq
uisa
SQ
L N
oSQ
L
Cach
e
Proc
essa
men
to d
e flu
xos
Lote
Inte
rati
vo
Regi
stro
Arm
azen
amen
to d
e flu
xo
IoT
Aplic
açõe
s
Arm
azen
amen
to d
e ar
quiv
os Anál
ise
e vi
sual
izaç
ão
Quentes
Frios
MornosQuentes
Baixa
Quentes
ML
Rápido
Rápido
Dados transacionais
Dados de arquivos
Dados de fluxo
Not
eboo
ks
Previsões
Aplicativos e APIs
Aplicações móveis
IDE
Dados de pesquisa
ETL
Streaming
Amazon QuickSight
Consumir
Previsões
Análise e visualização
Notebooks IDE
Aplicativos e API
Consumir
Anál
ise
e vi
sual
izaç
ãoN
oteb
ooks
Previsões
Aplicativos e APIs
IDE
Armazenar Analisar ConsumirETL
Usuários comerciais
Cientista de dados,
desenvolvedores
Amazon QuickSight
Resumindo tudo...
Coletar Armazenar Analisar Consumir
A
iOS Android
Aplicações Web
Logstash
Amazon RDS
Amazon DynamoDB
AmazonES
AmazonS3
ApacheKafka
AmazonGlacier
AmazonKinesis
AmazonDynamoDB
Amazon Redshift
Impala
Pig
Amazon ML
AmazonKinesis
AWSLambda
Amaz
on E
last
ic
Map
Redu
ce
AmazonElastiCache
Pesq
uisa
SQ
L N
oSQ
L
Cach
e
Proc
essa
men
to d
e flu
xos
Lote
Inte
rati
vo
Regi
stro
Arm
azen
amen
to d
e flu
xo
IoT
Aplic
açõe
s
Arm
azen
amen
to d
e ar
quiv
os Anál
ise
e vi
sual
izaç
ão
Quentes
Frios
MornosQuentes
Baixa
Quentes
ML
Rápido
Rápido
Dados transacionais
Dados de arquivos
Dados de fluxo
Not
eboo
ks
Previsões
Aplicativos e APIs
Aplicações móveis
IDE
Dados de pesquisa
ETL
Arquitetura de referência
Streaming
Amazon QuickSight
Padrões de design
"Barramento de dados" desconectado em várias etapas
Várias etapasArmazenamento desconectado do processamento
Armazenar Processar Armazenar ProcessarDados Respostas
processar
armazenar
Vários aplicativos (ou conectores) de processamento podem ler de vários armazenamentos de dados ou gravar neles
Amazon Kinesis
AWS Lambda
Dados Amazon DynamoDB
Amazon Kinesis S3Connector
processararmazenar
Amazon S3
Estruturas de processamento (KCL, Storm, Hive, Spark etc.) poderiam ler de vários armazenamentos de dados
Amazon Kinesis
AWS Lambda
Amazon S3
Dados Amazon DynamoDB
Hive Spark
Respostas
Storm
Respostas
Amazon Kinesis S3Connector
processararmazenar
Streaming do Spark, Apache StormAWS Lambda
KCL
Amazon Redshift Spark
Impala Presto
Hive
AmazonRedshift
Hive
Spark PrestoImpala
Amazon KinesisApache Kafka
Amazon DynamoDB Amazon S3dados
Quentes FriosTemperatura dos dados
Latê
ncia
do
proc
essa
men
to
Baixa
Alta Respostas
Amazon EMR (HDFS)
Hive
NativoKCLAWS Lambda
Temperatura dos dados x latência do processamento
InterativoTempo real
Interativo
Batch
Batch
Análise em tempo real
Produtor ApacheKafka
KCL
AWS Lambda
SparkStreaming
Apache Storm
Amazon SNS
AmazonML
Notificações
AmazonElastiCache
(Redis)
AmazonDynamoDB
AmazonRDS
AmazonES
Alerta
Estado do aplicativo
Previsão em tempo real
KPI
processararmazenar
DynamoDB Streams
Amazon Kinesis
Camada em lote
AmazonKinesis
dados
processararmazenar
Amazon Kinesis S3 Connector
Amazon S3 Aplicações
Amazon Redshift
Amazon EMR
Presto
Hive
Pig
Spark resposta
Camada de velocidade
resposta
Camada de
veiculaçãoAmazon
ElastiCacheAmazon
DynamoDB
AmazonRDS
AmazonES
resposta
Amazon ML
KCL
AWS Lambda
Streaming do Spark
Storm
Arquitetura Lambda
Resumo
Crie um “barramento de dados” desconectado• Dados → Armazenamento ↔ Processamento → Respostas
Use a ferramenta certa para a tarefa• Latência, taxa de transferência, padrões de acesso
Use ideias de arquitetura do Lambda• Registro imutável (somente anexação), camada de
lote/velocidade/veiculaçãoUtilize os serviços gerenciados da AWS
• Sem/pouca administraçãoCrie um design baseado em custo
• Big data ≠ grande custo
Obrigado!
Encontre Guias de conceitos básicos | Tutoriais | Laboratóriosaws.amazon.com/big-data