AWS Data Processing Flashcards
Processing Services
AWS Lambda
Amazon ML
AWS Glue
Sagemaker
EMR
Data Pipeline
O que é o AWS Lambda?
Serviço que permite executar código sem provisionar ou gerenciar servidor.
Exemplos de uso do AWS Lambda
Executa código em resposta a eventos como alterações de dados no S3, atualizações em bancos de dados NoSQL, atividades de streaming de dados, etc.
Why not just run a server?
- Server management (patches, monitoring, hardware failures,
etc.) - Servers can be cheap, but scaling gets expensive really fast
- You don’t pay for processing time you don’t use
- Easier to split up development between front-end and back-end
Por que não apenas executar um servidor?
- Gerenciamento de servidores (patches, monitoramento, falhas de hardware,
etc) - Os servidores podem ser baratos, mas o escalonamento fica caro muito rápido
- Você não paga pelo tempo de processamento que não usa
- Mais fácil de dividir o desenvolvimento entre front-end e back-end
Main uses of Lambda
- Real-time file processing
- Real-time stream processing
- ETL
- Cron replacement
- Process AWS events
Principais usos do Lambda
- Processamento de arquivos em tempo real
- Processamento de fluxo em tempo real
- ETL
- Substituição do cron
- Processar eventos da AWS
Supported languages
- Node.js * Python * Java * C# * Go * Powershell * Ruby
No Lambda com Kinesis como configurar o acionador?
Você especifica um tamanho de lote ao configurar o acionador (até 10.000 registros)
Como o Lambda atua com o Kinesis através de código?
Código Lambda recebe um evento com um lote de registros de stream
Qual o limite de carga útil entre Lambda e Kinesis
6MB
O que acontece se o lote for muito grande ao acionar o Kinesis com o Lambda?
Pode causar timeouts
Cost Model Lambda
- “Pay for what you use”
- Generous free tier (1M requests/month, 400K GB-seconds compute time)
- $0.20 / million requests
- $.00001667 per GB/second
Modelo de custo do Lambda
- “Pague pelo que usar”
- Generoso nível gratuito (1M
solicitações/mês, computação de 400K GB por segundo) - US$ 0,20/milhão de solicitações
- $.00001667 por GB/segundo
Other promises Lambda
- High availability
- No scheduled downtime
- Retries failed code 3 times
- Unlimited scalability*
- Safety throttle of 1,000 concurrent executions per region
- High performance
- New functions callable in seconds
- Events processed in milliseconds
- Code is cached automatically
- But you do specify a timeout! This can cause problems. Max is 900 seconds (15 min)
Lambda - Outras promessas
- Alta disponibilidade
- Sem tempo de inatividade programado
- Novas tentativas de código com falha 3 vezes
- Escalabilidade ilimitada
- Limite de segurança de 1.000
execuções simultâneas por região - Alto desempenho
- Novas funções que podem ser chamadas em segundos
- Eventos processados em milissegundos
- O código é armazenado em cache automaticamente
- Mas você especifica um tempo limite!
Isso pode causar problemas. máximo é
900 segundos (15 minutos)
Anti-Patterns
- Long-running applications
- Use EC2 instead, or chain functions
- Dynamic websites
- Although Lambda can be used to develop “serverless” apps that rely on client-side AJAX
- Stateful applications
- But you can work in DynamoDB or S3 to keep track of state
O que é serviço Elasticsearch
Serviço de busca e análise de dados em tempo real, baseado em código aberto e distribuído sob a licença Apache.
What is Glue?
- Serverless discovery and definition
of table definitions and schema * S3 “data lakes” * RDS * Redshift * DynamoDB * Most other SQL databases - Custom ETL jobs * Trigger-driven, on a schedule, or on demand
- Fully managed
O que é o Glue?
Serviço de integração de dados sem servidor que facilita a descoberta, preparação, movimentação e integração de dados de várias fontes de análise, ML e aplicações.
Glue + Hive
- Hive lets you run SQL like queries from EMR
- The Glue Data Catalog can serve as a Hive metastore
- You can also import a Hive metastore into Glue
Como o catálogo de dados do Glue pode servir em relação ao Hive?
O catálogo de dados do Glue pode servir como um “metastore” do Hive
Qual o comando no AWS Lambda para carregar dados no Redshift?
Para carregar dados no Redshift a partir do AWS Lambda, você pode usar a biblioteca do AWS SDK para JavaScript para executar o comando COPY do Redshift.
Glue ETL
- Automatic code generation
- Scala or Python
- Encryption
- Server-side (at rest)
- SSL (in transit)
- Can be event-driven
- Can provision additional “DPU’s” (data processing units) to increase
performance of underlying Spark jobs - Enabling job metrics can help you understand the maximum capacity in
DPU’s you need - Errors reported to CloudWatch
- Could tie into SNS for notification