23 Janeiro 2018

Amazon EMR

1 – O que é o Amazon EMR?

O Amazon EMR (Elastic Map Reduce) é um SaaS (Software as a Service) de Big Data armazenado na cloud da Amazon que permite processar de forma fácil e económica grandes quantidades de dados. A sua estrutura base é Apache Hadoop e executa sobre a infraestrutura de virtualização escalável do Amazon Elastic Compute Cloud (Amazon EC2).

O AWS EMR possui capacidades de iniciar/parar ou aumentar/diminuir os nós de processamento de modo a suportar a elasticidade necessária para os aumentos ou diminuição dos volumes de dados processados, desta forma apenas o tempo real de processamento será efetivamente pago.

O conceito de Big Data baseia-se essencialmente na recolha, armazenamento, processamento e visualização de grandes volumes de dados estruturados, não estruturados e semiestruturados para que as organizações possam retirar um maior proveito destes e acrescentar valor ao negócio o mais rapidamente possível para apoiar o processo de tomada de decisão.

Os principais desafios operacionais em plataformas analíticas incluem a instalação, gestão operacional, e alocação dinâmica de capacidade de processamento para acomodar carregamentos variáveis de dados, bem como agregações de dados de diversas fontes e tipos distintos.

O Apache Hadoop e o seu ecossistema de ferramentas ajudam a resolver estes constrangimentos devido ao Hadoop ter capacidades de expansão horizontal para acomodar um crescente volume de dados.
O AWS EMR é facilmente configurável em minutos e, sem complexidade acrescida, o sistema ficará pronto a ser utilizado.

O AWS foi considerado líder em IaaS pela Gartner em junho de 2017.

                                          Gartner Magic Quadrant for IaaS - 2017

2 – Principais vantagens do AWS EMR

2.1 Elasticidade
2.2 Baixo Custo
2.3 Escalabilidade
2.4 Segurança
2.5 Facilidade de Configuração/Utilização

2.1 Elasticidade

• Provisionamento de tanta capacidade quanto for necessária num determinado momento, em CPU e em memória.
• Possível adicionar/remover capacidade a qualquer altura.

 

2.2 Baixo Custo

  • Baixo Custo por hora de utilização/processamento (ver https://aws.amazon.com/emr/pricing/).
  • Integração com Amazon EC2 em modo Spot ou de instância reservada (as mais vantajosas em termos de custo):
  • Instância On-Demand – Capacidade de computação paga por hora, sem pagamento de um valor inicial;
  • Instância Reservada – Pagamento de um valor inicial e desconto no valor cobrado por hora de computação;
  • Instância Spot – Possibilidade de realizar uma oferta à Amazon por computação EC2 não utilizada por outros clientes e alocar esse valor de computação a um preço/hora muito abaixo do valor usual.

 

2.3 Escalabilidade

O tipo de servidor (CPU/memória) definido num cluster de EMR pode ser alterado a qualquer altura o que permite facilmente escalar a infraestrutura na medida do necessário para o processamento do momento.

2.4 Segurança

Além da firewall da AWS, toda a comunicação entre o EMR, S3 ou outra base de dados da Amazon bem como a sistemas externos é feita com SSL (encriptação do lado do servidor) isto permite uma maior segurança na comunicação de dados.

O cluster de EMR inicia com diferentes grupos de segurança para o Master Node e para os Slave Nodes. O Master Node possui um porto para comunicação com o serviço EMR e um porto SSH para as instâncias EC2 Slave que utilizam a chave de segurança definida na criação do cluster.
Os Slave Nodes apenas interagem com o Master Node via SSH e os grupos de segurança da Amazon AWS podem ser criados/configurados de forma a conterem diferentes regras de acesso.

2.5 Facilidade de configuração/utilização

A criação e configuração de um cluster de EMR demora em média 10 minutos, basta selecionar o tipo de servidor para o cluster, definir os grupos de segurança que se lhe irão aplicar, o tipo de instância (on-demand, reservada, spot) e a configuração ficará concluída.

3 – Armazenamento de dados flexível no Amazon EMR

Permite separar a capacidade de armazenamento da capacidade de processamento, isto permite ter capacidade de processamento paralela entre os vários nós que um cluster EMR, ao contrário das versões on-premise ou Hadoop no EC2.

Na imagem abaixo temos os principais exemplos de ferramentas para armazenamento de dados que estão interligadas com o EMR.


                                         Ferramentas de armazenamento para EMR

4 – O papel do Amazon EMR no pipeline de dados da Amazon

O EMR tem um papel central no pipeline de dados da Amazon, a sua principal função é de processamento de dados de entrada na infraestrutura Amazon para em seguida, depois de pré-processados e agregados, seguirem para as BD relacionais/S3/Redshift da Amazon.

                                                Papel EMR no pipeline AWS

5 – Arquitetura do Amazon EMR

                                                      Arquitetura EMR

  • O EMR consiste num Master Node e um ou mais nós Slave.
    • Master Node
      • Atualmente o EMR não suporta failover automático do nó master ou recuperação do mesmo em caso de falha.
      • Se o master node ficar indisponível, o cluster será terminado e o job em execução precisa de ser reprocessado.
    • Slave Nodes – Core nodes e Task nodes
      • Core nodes
        • Contêm a persistência de dados utilizando o Hadoop Distributed File System (HDFS) e executam tasks Hadoop
        • O seu número pode ser aumentado/diminuído num cluster existente/em execução.
      • Task nodes
        • Apenas executam tasks Hadoop
        • O seu número pode ser aumentado/diminuído num cluster existente/em execução.

 

O EMR é tolerante a falhas nas execuções dos nós slave, portanto continua as execuções no caso de falha de um nó slave. Atualmente o EMR não provisiona outro nó em caso de falha de um nó slave.

O EMR suporta Bootstrap o que permite aos utilizadores executarem setups customizados antes da execução programada no cluster. Pode ser usado para executar configurações necessárias anteriores a execuções, nomeadamente configurações de parâmetros de execuções ou validações iniciais.

6 – Ferramentas Apache Hadoop Suportadas

O EMR suporta diversas ferramentas da framework Apache Hadoop, no momento da criação do cluster é possível selecionar quais as ferramentas pretendidas.

                                                   Criação cluster EMR

6.1 – Hive

Hive é um conjunto ferramentas analíticas open source que funciona sobre Hadoop. As operações são realizadas em Hive QL, uma linguagem baseada em SQL, o que permite aos utilizadores uma interação mais fácil com os dados. O seu foco é a análise de dados.

6.2 – Pig

Pig é um componente analítico open source que executa sobre Hadoop, a sua linguagem de programação é Pig Latin, uma linguagem semelhante ao SQL que permite a estruturação necessária aos dados. O seu foco principal é o processamento de fontes de dados complexas e não estruturadas tais como documentos de texto ou ficheiros de log.

6.3 – Hbase

HBase fornece uma forma eficiente de armazenar grandes volumes de dados dispersos utilizando armazenamento de dados colunar. O Hbase permite rápidos lookups sobre os dados devido ao facto de os dados serem armazenados em memória ao invés do disco. Está otimizado para operações sequenciais de escrita e é altamente eficiente para inserts em formato bulk, updates ou deletes de dados.

6.4 – Impala

Impala é uma ferramenta do ecossistema Hadoop para queries interativas com sintaxe SQL.

Utiliza um motor analítico de base de dados Massively Parallel Processing (MPP) similar a uma base de dados tradicional RDBMS. Isto permite ao Impala a realização de tarefas analíticas de baixa latência sobre os dados utilizando ferramentas de BI com ligações ODBC/JDBC.

6.5 – Presto

Presto é um motor de SQL open source e distribuído para execução de queries analíticas interativas contra bases de dados de qualquer volume, desde gigabytes até petabytes.

6.6 – Hue

O Hadoop User Experience (Hue) é uma interface para Hadoop que facilita o desenvolvimento e a execução de queries Hive, gerir ficheiros em HDFS, desenvolver e executar scripts Pig bem como a gestão dos modelos de dados (BD’s, schemas, tabelas). Permite também a execução SQL sobre ficheiros armazenados no S3.

Desta forma, e utilizando o S3 como HDFS, o utilizador pode aceder aos dados raw tal como o sistema EMR os recebe dos sistemas fonte.

Utilizando o Hue podemos dar acesso a utilizadores avançados com requisitos analíticos sobre os dados raw depois de agregados pelo EMR.

Este acesso é dado sem comprometer a performance da base de dados de Data Warehouse, um grupo tradicional deste tipo são os data scientists.

Além disso, permite também a consolidação de dados em processos de EMR utilizando SQL ao invés de python que é o default para MapReduce em Hadoop.

 

                                       Criação de external table sobre o AWS S3

Em resumo, o EMR mostra-se capaz de ser uma boa hipótese para a consolidação e persistência de dados, principalmente se for utilizado com o S3, dessa forma é possível facilmente criar um data lake robusto e com excelente performance mesmo para processamentos near real time devido à sua escalabilidade.

Além disso, o seu custo, comparativamente com as opções Hadoop on-premise ou mesmo Hadoop sobre EC2, é significativamente mais baixo o que esta a levar cada vez mais organizações a mudarem para EMR.
A facilidade de configuração e o seu time to market são também pontos fortes, principalmente para os decisores de IT que vêm no EMR uma excelente opção para rapidamente entregarem valor aos seus clientes internos de negócio.