O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Padrões de arquitetura para big data na AWS

1.459 visualizações

Publicada em

Com um conjunto cada vez maior de tecnologias para processar grandes volumes de dados, as organizações muitas vezes lutam para entender como construir aplicações escaláveis para suprir esses casos de uso.

Neste webinar, vamos ajuda-lo a entender como simplificar o processamento desses dados como um pipeline que abrange vários estágios, e mostrar-lhe como escolher a tecnologia certa para cada etapa com base em critérios como, estrutura de dados, padrões de design e melhores práticas.

Objetivos de aprendizado:
- Compreender os principais serviços da AWS para Big Data, incluindo S3, Amazon EMR, Kinesis e Redshift.
- Aprender padrões de arquitetura para Big Data
- Ficar por dentro das melhores práticas para a construção de aplicações de Big Data na AWS

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Padrões de arquitetura para big data na AWS

  1. 1. 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.
  2. 2. Agenda Desafios de big data Como simplificar o processamento de big data Quais tecnologias você deve usar? • Por quê? • Como? Arquitetura de referência Padrões de design
  3. 3. Big data em constante crescimento
  4. 4. Evolução do big data Lote Relatório Tempo real Alertas Predição Previsão
  5. 5. Grande número de ferramentas Amazon Glacier S3 DynamoDB RDS EMR Amazon Redshift Data Pipeline Amazon Kinesis CloudSearch Aplicativo habilitado para Kinesis Lambda ML SQS ElastiCache DynamoDB Streams
  6. 6. Há uma arquitetura de referência? Quais ferramentas eu devo usar? Como? Por quê?
  7. 7. 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 acesso Use 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
  8. 8. Simplifique o processamento de big data incluir/ coletar armazenar processar/ analisar consumir/ visualizar Tempo até a resposta (latência) Taxa de transferência Custo
  9. 9. Incluir /coletar
  10. 10. 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 RegistroIoTAplicações Dados transacionais Dados de arquivos Dados de fluxo Aplicações móveis Dados de pesquisa Pesquisar Coletar Armazenar RegistroIoT
  11. 11. Armazenar
  12. 12. Armaze- namento de streams A iOS Android Aplicações Web Logstash Amazon RDS Amazon DynamoDB Amazon ES Amazon S3 Apache Kafka Amazon Glacier Amazon Kinesis Amazon DynamoDB Amazon ElastiCache PesquisaSQLNoSQL Cache Armazenamentode fluxo Armazename ntode arquivos Dados transacionais Dados de arquivos Dados de fluxo Aplicações móveis Dados de pesquisa Banco de dados Armazena- mento de arquivos Pesquisar Coletar Armazenar RegistroIoTAplicações 
  13. 13. 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
  14. 14. 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 1 4 3 2 1 4 3 2 1 4 3 2 1 4 3 2 1 4 4 3 3 2 2 1 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 DynamoDB Stream Kinesis Stream Tópico do Kafka
  15. 15. 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 SQS fila Assinante
  16. 16. Qual armazenamento de fluxo devo usar? Amazon Kinesis DynamoDB Streams Amazon SQS Amazon 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.)
  17. 17. Armaze- namento de arquivos A iOS Android Aplicações Web Logstash Amazon RDS Amazon DynamoDB Amazon ES Amazon S3 Apache Kafka Amazon Glacier Amazon Kinesis Amazon DynamoDB Amazon ElastiCache PesquisaSQLNoSQL Cache ArmazenamentodefluxoArmazenamentode arquivos Dados transacionais Dados de arquivos Dados de fluxo Aplicações móveis Dados de pesquisa Banco de dados Pesquisar Coletar Armazenar RegistroIoTAplicações 
  18. 18. 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
  19. 19. 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
  20. 20. Banco de dados + Pesquisa Nível A iOS Android Aplicações Web Logstash Amazon RDS Amazon DynamoDB Amazon ES Amazon S3 Apache Kafka Amazon Glacier Amazon Kinesis Amazon DynamoDB Amazon ElastiCache PesquisaSQLNoSQLCacheArmazenamentodefluxoArmazenamentode arquivos Dados transacionais Dados de arquivos Dados de fluxo Aplicações móveis Dados de pesquisa Coletar Armazenar 
  21. 21. Banco de dados + Antipadrão do nível de pesquisa Banco de dados + Nível de pesquisa
  22. 22. Melhor prática - Use a ferramenta certa para a tarefa Camada de dados Search Amazon Elasticsearch Service Amazon CloudSearch Cache Redis Memcached SQL Amazon Aurora MySQL PostgreSQL Oracle SQL Server NoSQL Cassandra Amazon DynamoDB HBase MongoDB Banco de dados + Search
  23. 23. Visualizações materializadas
  24. 24. 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
  25. 25. Estrutura dos dados e padrões de acesso Padrõ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
  26. 26. Qual é a temperatura dos dados/do acesso?
  27. 27. Quentes Mornos Frios Volume MB–GB GB–TB PB Tamanho do item B–KB KB–MB KB–TB Latência ms ms, s min, h Durabilidade Baixa–alta Alta Muito alta Taxa de solicitações Muito alta Alta Baixa Custo/GB $$-$ $-¢¢ ¢ Dados quentes Dados mornos Dados frios Características dos dados/do acesso: Quentes, mornos, frios
  28. 28. Cache SQL Taxa de solicitações Alta Baixa Custo/GB Alta Baixa Latência Baixo Alto Volume de dados Baixa Alta Glacier Estrutura NoSQL Dados quentes Dados mornos Dados frios Baixo Alto Pesquisa
  29. 29. Amazon ElastiCache Amazon DynamoDB Amazon Aurora Amazon Elasticsearch 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 armazenamento GB/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 frios Qual armazenamento de dados devo usar?
  30. 30. 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
  31. 31. Design baseado em custo Exemplo: devo usar o Amazon S3 ou o Amazon DynamoDB? https://calculator.s3.amazonaws.com/index.html Calculadora mensal simples
  32. 32. 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 ou Amazon DynamoDB?
  33. 33. 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
  34. 34. Processar/ analisar
  35. 35. AnalisarA iOS Android Aplicações Web Logstash Amazon RDS Amazon DynamoDB Amazon ES Amazon S3 Apache Kafka Amazon Glacier Amazon Kinesis Amazon DynamoDB Amazon Redshift Impala Pig Amazon ML Amazon Kinesis AWS Lambda AmazonElasticMapReduce Amazon ElastiCache PesquisaSQLNoSQLCache StreamsBatchInterativo Registro Armazenamentodefluxo IoTAplicações Armazenamentode arquivos Quente s Frios Mornos Quente s Quente s ML Dados transacionais Dados de arquivos Dados de fluxo Aplicações móveis Dados de pesquisa Coletar Armazenar Analisar   Streaming
  36. 36. Análise interativa É necessário um grande volume de dados (quentes/frios) Leva segundos para receber as respostas Exemplo: painéis de autoatendimento
  37. 37. 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
  38. 38. Análise em tempo real Use 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
  39. 39. 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
  40. 40. 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 Amazon Kinesis AWS Lambda AmazonElasticMapReduce ProcessamentodefluxosLoteInterativoML Analisar Streaming
  41. 41. 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 Alta
  42. 42. Qual tecnologia de processamento de dados devo usar? Amazon Redshift 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 Compatibilida de com SQL Alta Média Alta Baixa (SparkSQL) Média (HQL) AltaMédia
  43. 43. E quanto à ETL? Armazenar Analisar https://aws.amazon.com/big-data/partner-solutions/ ETL
  44. 44. Consumir/ visualizar
  45. 45. Coletar Armazenar Analisar Consumir A iOS Android Aplicações Web Logstash Amazon RDS Amazon DynamoDB Amazon ES Amazon S3 Apache Kafka Amazon Glacier Amazon Kinesis Amazon DynamoDB Amazon Redshift Impala Pig Amazon ML Amazon Kinesis AWS Lambda AmazonElasticMapReduce Amazon ElastiCache PesquisaSQLNoSQLCache ProcessamentodefluxosLoteInterativo Registro Armazenamentodefluxo IoTAplicações Armazenamentode arquivos Análiseevisualização Quente s Frios Morno s Quente s Baixa Quentes ML Rápido Rápido Dados transacionais Dados de arquivos Dados de fluxo Notebooks Previsões Aplicativos e APIs Aplicações móveis IDE Dados de pesquisa ETL Streaming Amazon QuickSight
  46. 46. Consumir Previsões Análise e visualização Notebooks IDE Aplicativos e API Consumir AnáliseevisualizaçãoNotebooks Previsões Aplicativos e APIs IDE Armazenar Analisar ConsumirETL Usuários comerciais Cientista de dados, desenvolvedores Amazon QuickSight
  47. 47. Resumindo tudo...
  48. 48. Coletar Armazenar Analisar Consumir A iOS Android Aplicações Web Logstash Amazon RDS Amazon DynamoDB Amazon ES Amazon S3 Apache Kafka Amazon Glacier Amazon Kinesis Amazon DynamoDB Amazon Redshift Impala Pig Amazon ML Amazon Kinesis AWS Lambda AmazonElasticMapReduce Amazon ElastiCache PesquisaSQLNoSQLCache ProcessamentodefluxosLoteInterativo Registro Armazenamentodefluxo IoTAplicações Armazenamentode arquivos Análiseevisualização Quente s Frios Mornos Quente s Baix a Quente s ML Rápido Rápido Dados transacionais Dados de arquivos Dados de fluxo Notebooks Previsões Aplicativos e APIs Aplicações móveis IDE Dados de pesquisa ETL Arquitetura de referência Streaming Amazon QuickSight
  49. 49. Padrões de design
  50. 50. "Barramento de dados" desconectado em várias etapas Várias etapas Armazenamento desconectado do processamento Armazenar Processar Armazenar Processar processar armazenar
  51. 51. Vários aplicativos (ou conectores) de processamento podem ler de vários armazenamentos de dados ou gravar neles Amazon Kinesis AWS Lambda Amazon DynamoDB Amazon Kinesis S3 Connector processar armazenar Amazon S3
  52. 52. Estruturas de processamento (KCL, Storm, Hive, Spark etc.) poderiam ler de vários armazenamentos de dados Amazon Kinesis AWS Lambda Amazon S3 Amazon DynamoDB Hive SparkStorm Amazon Kinesis S3 Connector processar armazenar
  53. 53. Streaming do Spark, Apache Storm AWS Lambda KCL Amazon Redshift Spark Impala Presto Hive Amazon Redshift Hive Spark Presto Impala Amazon Kinesis Apache Kafka Amazon DynamoDB Amazon S3dados Quentes Frios Temperatura dos dados Latênciado processamento Baixa Alta Respostas Amazon EMR (HDFS) Hive Nativo KCL AWS Lambda Temperatura dos dados x latência do processamento Batch
  54. 54. Análise em tempo real Produtor Apache Kafka KCL AWS Lambda Spark Streaming Apache Storm Amazon SNS Amazon ML Notificações Amazon ElastiCache (Redis) Amazon DynamoDB Amazon RDS Amazon ES Alerta Estado do aplicativo Previsão em tempo real KPI processar armazenar DynamoDB Streams Amazon Kinesis
  55. 55. Camada em lote Amazon Kinesis dados processar armazenar Amazon Kinesis S3 Connector Amazon S3 A p l i c a ç õ e s Amazon Redshift Amazon EMR Presto Hive Pig Spark resposta Camada de velocidade resposta Camada de veiculação Amazon ElastiCache Amazon DynamoDB Amazon RDS Amazon ES resposta Amazon ML KCL AWS Lambda Streaming do Spark Storm Arquitetura Lambda
  56. 56. 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ção Utilize os serviços gerenciados da AWS • Sem/pouca administração Crie um design baseado em custo • Big data ≠ grande custo
  57. 57. Obrigado! Encontre Guias de conceitos básicos | Tutoriais | Laboratórios aws.amazon.com/big-data

×