Este documento discute como migrar workloads de big data para o Amazon EMR, incluindo: (1) identificando desafios com ambientes locais como super provisionamento e gerenciamento de problemas, (2) migrando componentes para serviços AWS como EMR e S3, (3) casos de uso como GuiaBolso que migrou para uma plataforma de dados escalável na AWS.
2. Agenda
• Descontruindo ambientes de Big Data
• Identificando desafios com ambientes on-premises ou não
gerenciados
• Migrando componentes para o Amazon EMR e AWS Analytics
services
- Escolhendo a ferramenta certa para sua aplicação
- Construindo uma arquitetura
- Arquitetura direcionada a custos e escalabilidade
- Segurança
• Caso de uso GuiaBolso
4. Cluster local de Hadoop
• Servidores de 1 U
• Geralmente 12 Cores, 32/64 GB
RAM, and 6 - 8 TB of HDD ($3-4K)
• Switches de redes e racks
• Distribuição Open-source de
Hadoop ou baseada em
licenciamento de distribuições
comerciais baseada em nós
• Nós com funções diferentes
• HDFS com disco e fator de
replicação 3:1
Server rack 1
(20 nodes)
Server rack 2
(20 nodes)
Server rack N
(20 nodes)
Core
5. Aplicações rodando no mesmo cluster
• Large Scale ETL: Apache Spark, Apache Hive with Apache Tez or
Apache Hadoop MapReduce
• Interactive Queries: Apache Impala, Spark SQL, Presto, Apache
Phoenix
• Machine Learning and Data Science: Spark ML, Apache Mahout
• NoSQL: Apache HBase
• Stream Processing: Apache Kafka, Spark Streaming, Apache Flink,
Apache NiFi, Apache Storm
• Search: Elasticsearch, Apache Solr
• Job Submission: Client Edge Node, Apache Oozie
• Data warehouses like Pivotal Greenplum or Teradata
6. Segurança
• Autenticação: Kerberos com KDC local ou Active
Directory, integração LDAP, gestão local de
usuário, Apache Knox
• Autorização: Open-source native authZ (i.e.,
HiveServer2 authZ or HDFS ACLs), Apache
Ranger, Apache Sentry
• Criptografia: Criptografia de disco local com
LUKS, HDFS transparent-data encryption,
criptografia em trânsito para cada framework
• Configuração: Diferente ferramentas de gestão
baseada na distribuição
7. Linha do tempo de execuções
Muito utilizado Pouco utilizado
8. Papel de um administrador Hadoop
• Gerenciamento do cluster (falhas, troca
de hardware, reiniciar, aumento do
cluster)
• Gestão das configurações
• Tuning de jobs ou hardware
• Gerenciar os ambientes de teste e
desenvolvimento
• Backup de dados e disaster recovery
10. Super provisionamento e capacidade ociosa
• Calculo de computação (CPU e memória) e
armazenamento altamente acoplados, requer excesso
de capacidade
• Seu cluster pode estar super provisionado por várias
horas e muito utilizado em alguns horários
• Resultado: Custo alto e baixa eficiência
11. Gerenciamento de problemas
• Gestão de vários aplicativos e alta disponibilidade
• Armazenamento duravel, backup e disaster recovery
• Adicionar novos aplicativos e realizar atualizações
• Multiplos ambientes
• Necessário um time para gerenciar o cluster e comprar novos
equipamentos
13. Por que Amazon EMR?
Baixo custo
Pague por hora
Variedade de aplicações Open-
Source
Ultimas versões de software
Gerenciado
Gaste menos tempo
monitorando
Seguro
Facil gerenciamento
Flexibilidade
Customizavel
Facil de usar
Inicie um cluster em minutos
14. Pontos chave para migração e custos (TCO)
• NAO REPLIQUE SEU AMBIENTE. (LIFT AND SHIFT)
• Desacomple storage de processamento, com Amazon S3
• Utilize ferramentas Open-source
• Use clusters transientes e auto-scaling
• Escolha a instância correta e use EC2 Spot Instances
15. Use a ferramenta certa para o trabalho certo
Storage
S3 (EMRFS), HDFS
YARN
Cluster Resource Management
Batch
MapReduce
Interactive
Tez
In Memory
Spark
Applications
Hive, Pig, Spark SQL/Streaming/ML, Flink, Mahout, Sqoop
HBase/Phoenix
Presto
Athena
Streaming
Flink
- SQL de baixa latência -> Athena or Presto or Amazon Redshift
- Data Warehouse / Reporting -> Spark or Hive ou Glue ou Amazon Redshift
- Gestão e monitoramento -> EMR console ou Ganglia metrics
- HDFS -> S3
- Notebooks -> Zeppelin Notebook ou Jupyter (via bootstrap action)
- Query console -> Athena ou Hue
- Segurança -> Ranger (CF template) ou HiveServer2 ou IAM roles
Glue
Amazon Redshift
16. Diversas integrações de dados e origens
Amazon DynamoDB
Amazon RDS Amazon Kinesis
Amazon Redshift
Amazon S3
Amazon EMR
17. Desacoplar processamento e armazenamento
utilizando Amazon S3
HDFS
S3 desenhado para
entregar 11 9’s de
durabilidade e
altamente escalável
EC2 Instance
Memory
Amazon S3
Amazon EMR
Amazon EMR
Intermediates
stored on local
disk or HDFS
Local
19. Dicas Amazon S3: Partições, compressão e
formatos de arquivos
• Evite chaves de ordenação
• Melhorar a taxa de transferência e listagem de objetos no Amazon
S3
• Use hash e prefixos randomicos ou data reversa
• Comprima seus dados a fim de minimizar consumo de banda entre
Amazon S3 e EC2
• Tenha certeza de que o arquivo foi divido e comprimido a fim
de garantir o melhor desempenho de paralelização do seu
cluster
• Use armazenamento colunar, como por exemplo Parquet para
aumentar o desempenho de leitura de dados
21. Executando suas tarefas
Amazon EMR
Step API
Rode sua aplicação SPARK
Amazon EMR
AWS Data Pipeline
Airflow, Luigi, or other
schedulers on EC2
Crie um pipeline de job
schedulada contendo workflow
complexos. Como transformar os
dados, movê-los entre banco de
dados etc…
AWS Lambda
Use AWS Lambda para executar
suas aplicações seja por API ou
diretamente no seu cluster Spark,
por exemplo.
Use Oozie no seu
cluster para
contruir seu job de
execução
22. Desempenho e hardware
• Transiente ou longa duração
• Tipo de instâncias
• Tamanho do cluster
• Configuração das aplicações
(Hive/Spark/Presto)
• Formato de arquivos e Tunning
de S3
Master Node
r3.2xlarge
Slave Group - Core
c4.2xlarge
Slave Group – Task
m4.2xlarge (EC2 Spot)
Considerações
23. Ajuste de maneira rápida sua necessidade
Aplicações
SQL editor, Workflow designer,
Metastore browser
Notebooks
Design e execução de
queries e workloads
24. Spot para
task nodes
Até 80% de
desconto
comparado com
o preço on-
demand
Sob-demanda
para core
nodes
Preço padrão
para Amazon
EC2 sob-
demanda
Use instâncias Spot e Reservadas para reduzir custos.
Custo fixo previsível Baixo custo excedente
25. Tipos de instância com uso de Spot
Nós master Core Node Task Node
• Provisione vários tipos de instâncias sob-demanda e spot
• Inicie as instâncias na AZ que tenha o melhor custo por capacidade
• Suporte a conjuntos de spot
28. Segurança – Autenticação e Autorização
Tag: user = MyUserIAM user: MyUser
EMR role
EC2 role
SSH key
29. • LDAP para HiveServer2, Hue, Presto,
Zeppelin
• Kerberos para Spark, HBase, YARN,
Hive, e autenticação nas interfaces de
usuário
• EMRFS permissão baseada no
storage (Ex: S3 permissions)
• Autorização baseada em SQL e em
armazenamento
AWS Directory Service
Self-managed Directory
Segurança – Autenticação e Autorização
30. • Plug-ins para Hive, HBase,
YARN, and HDFS
• Autorização Row-level para
Hive (with data-masking)
• Recursos de auditoria com
possibilidade de busca
• Run Ranger em um edge node
– visite AWS Big Data Blog
Apache Ranger
Segurança – Autenticação e Autorização
http://blogs.aws.amazon.com/bigdata/
31. Segurança – Governança e Auditoria
• AWS CloudTrail para APIs EMR
• S3 logs de acesso para o cluster EMR
• YARN logs e logs de aplicações
• Ranger para interface de usuário e auditoria a nivel de
aplicação
33. “AWS permitiu ao GuiaBolso a
criação de uma plataforma de dados
altamente escalável”
• GuiaBolso é uma fintech
brasileira com foco em
transformar a vida financeira do
brasileiro.
• Com mais de 4 milhões de
usuários conectados, a
plataforma GuiaBolso opera
100% na AWS.
“A AWS permitiu a
democratização aos
dados, possibilitando a
diferentes times novas
visões” - Carlos
Barreto, Data Engineer
34. O Desafio
Permitir o consumo dos dados com
a velocidade requerida;
Poder de processamento escalável
conforme a demanda de volume
utilizado;
Possibilitar o uso dos principais
projetos open source voltados para
armazenamento e análise de
dados.
S3 connector for EMR (implements the Hadoop FileSystem interface); EMRFS and PrestoS3Filesystem
Improved performance and error handling options
Transparent to applications – just read/write to “s3://”
Consistent view feature set for consistent list
Support for Amazon S3 server-side and client-side encryption
Faster listing using EMRFS metadata
Important to note – Presto doesn’t support wire encryption yet, and uses the PrestoS3Filesystem (you can configure encryption manually there)
Important to note – Presto doesn’t support wire encryption yet, and uses the PrestoS3Filesystem (you can configure encryption manually there)
Important to note – Presto doesn’t support wire encryption yet, and uses the PrestoS3Filesystem (you can configure encryption manually there)
Explain each
Cross account roles
Access to DDB and KMS
Important to note – Presto doesn’t support wire encryption yet, and uses the PrestoS3Filesystem (you can configure encryption manually there)
Important to note – Presto doesn’t support wire encryption yet, and uses the PrestoS3Filesystem (you can configure encryption manually there)
30 segundos para apresentar a empresa, rapidamente
O objetivo inicial de uso do EMR, foi no uso do Sqoop com HDFS/S3 para a ingestão de dados no Redshift, que é o ambiente de consumo de dados pelos times de analytics.
Conforme crescia o volume de dados, era preciso ter uma plataforma escalável, para a sumarização e consolidação de todo este volume, fazendo uso do Apache Pig e recentemente do Apache Spark.
A configuração nativa de projetos open source como o Hadoop, Hive, Spark e Presto, possibilitou prototipar e colocar em produção rapidamente novas soluções. Um exemplo foi o uso do Presto para acesso a multiplas bases de dados RDS, que era uma demanda da aplicação de CRM.
Nós usamos o EMR em dois casos de uso no GuiaBolso. O primeiro para o nosso ETL que alimenta o nosso data warehouse que roda no Redshift, além do data lake que fica no S3. O segundo caso de uso que usamos EMR é para fornecer uma plataforma de desenvolvimento para os Data Science através do projeto da Apache Zeppelin.
Como vocês podem ver o EMR é usado para extrair dados de algumas bases de dados RDS e também informações do helpshift e mixpanel, o helpshift é uma SaaS de Customer Relationship e o Mixpanel captura eventos de comportamento do aplicativo. Nós usamos o EMR para extrair, transformar e carregar as informações no Redshift de todas essas fontes de dados.
Uma vantagem do EMR é que além dele ser um serviço gerenciado pela AWS, ele elimina o trabalho de configurar um cluster hadoop e instalar os frameworks open source como o Hive, Pig, Spark, você também pode customizar o cluster acessando as instâncióas por ssh. No nosso caso nós rodamos alguns scripts que rodam o job sqoop para a extração do dado, em seguida rodamos o s3-dist-cp para copiar o dado para o S3 e colocamos uma mensagem na fila de SQS. O Lambda vai ler a mensagem da fila e executar o comando COPY no Redshift. As métricas e logs do EMR, SQS e o Lambda são enviadas para o Cloudwatch e o Elasticsearch assim nós temos o tracking e ficamos sabendo quando temos algum problema.
Nós usamos um segundo cluster com o Zeppelin para os data science escreverem e testarem seus notebooks lendo os dados que estão armazenados no S3.
Para as transformações que vem do helpshift e mixpanel nós subimos cluster sob demanda. Uma vez ao dia o cluster liga executa o trabalho e é terminado. Para as extrações de base nós deixamos o cluster ligado direto, uma vantagem para economizar custo é que da pra usar o auto - scaling e instâncias spot para os nodes core e de tasks,
Important to note – Presto doesn’t support wire encryption yet, and uses the PrestoS3Filesystem (you can configure encryption manually there)