O Amazon EMR permite que você provisione de modo rápido e fácil a quantidade de capacidade necessária, além de adicionar e remover capacidade de forma automática ou manual. Isso é muito útil se você tiver requisitos de processamento variáveis e imprevisíveis. Por exemplo, se o maior volume de processamento ocorrer à noite, talvez você precise de 100 instâncias durante o dia e 500 instâncias à noite. Mas, por outro lado, você pode precisar de uma quantidade significativa de capacidade por um período curto de tempo. Com o Amazon EMR, você pode provisionar rapidamente centenas ou milhares de instâncias, escalar automaticamente para atender a requisitos de computação e encerrar o cluster quando o trabalho for concluído (para evitar pagar por capacidade ociosa).

Comece a usar o Amazon EMR

Crie uma conta gratuita

Precisa de ajuda? Fale conosco.

elastic

Há duas opções principais para adicionar e remover capacidade:

Implementar vários clusters: Se você precisa de mais capacidade, você pode executar rapidamente um cluster e encerrá-lo quando não precisar mais. Não há limite para quantos clusters você pode ter. Você pode querer usar vários clusters se tiver vários usuários e aplicativos. Por exemplo, você pode armazenar seus dados de entrada no Amazon S3 e executar um cluster para cada aplicativo que precisa para processar dados. Um cluster pode ser otimizado para CPU, um segundo cluster pode ser otimizado para armazenamento, etc.

Redimensione um cluster em execução: com o Amazon EMR, é fácil escalar automaticamente ou redimensionar manualmente um cluster em execução. Aumente a escala horizontal de um cluster para aumentar temporariamente seu poder de processamento ou reduza a escala horizontal do cluster para economizar custos quando a capacidade estiver ociosa. Por exemplo, alguns clientes adicionam centenas de instâncias aos clusters quando ocorre seu processamento em lote e removem as instâncias extras quando o processamento termina. Agora, ao adicionar instâncias ao cluster, o EMR poderá começar a utilizar capacidade provisionada assim que estiver disponível. Ao reduzir a escala, o EMR escolherá proativamente nós ociosos para reduzir o impacto sobre os trabalhos em execução.

O Amazon EMR foi desenvolvido para reduzir o custo do processamento de grandes quantidades de dados. Alguns recursos que mantêm o baixo custo incluem baixa definição de preço por segundo, integração com instâncias spot do Amazon EC2, integração com as instâncias reservadas do Amazon EC2, elasticidade e integração com o Amazon S3.

Preço baixo por segundo: A definição de preço do Amazon EMR é por segundo de instância, com um mínimo de um minuto, a partir de 0,015 USD por hora de instância para uma instância pequena (131,40 USD por ano). Veja a seção de definição de preço para obter mais detalhes.

Integração de spot do Amazon EC2: As instâncias spot do Amazon EC2 permitem que você indique seu próprio preço pela capacidade do Amazon EC2. Basta você especificar o preço por hora máximo que está disposto a pagar para executar um determinado tipo de instância. Desde que o preço sugerido por você exceda o preço de mercado do spot, você manterá as instâncias e pagará, normalmente, uma fração do preço por demanda. O Preço Spot oscila com base no fornecimento e na demanda das instâncias, mas você nunca pagará mais que o preço máximo que especificou. O Amazon EMR facilita o uso de instâncias spot, assim você economiza tempo e dinheiro. Os clusters Amazon EMR incluem "nós de núcleo" que executam HDFS e "nós de tarefa" que não executam. Os nós de tarefa são ideais para spot, pois se o preço do spot aumentar e você perder aquelas instâncias, você não perderá os dados armazenados no HDFS. (Saiba mais sobre os nós de núcleo e de tarefa.)

Integração de instâncias reservadas do Amazon EC2: As instâncias reservadas do EC2 permitem que você preserve os benefícios da computação elástica ao mesmo tempo em que diminui os custos e reserva a capacidade. Com as instâncias reservadas, você paga uma pequena taxa única e recebe em troca um desconto significativo sobre a cobrança por segundo dessa instância. O Amazon EMR facilita o uso de instâncias reservadas para que você possa economizar até 65% do preço por demanda.

Elasticidade:como o Amazon EMR facilita escalar automaticamente seu cluster, não será necessário provisionar o excesso de capacidade. Por exemplo, você pode não saber quantos clusters de dados estará usando em 6 meses, ou pode ter picos de necessidade de processamento. Com o Amazon EMR, você não precisa adivinhar seus requisitos ou provisões futuras para pico de demanda, pois você pode adicionar/remover capacidade facilmente a qualquer momento.

Integração com Amazon S3: O EMR File System (EMRFS) permite que os clusters do EMR usem o Amazon S3 com eficiência e segurança como um armazenamento de objetos para o Hadoop. Você pode armazenar seus dados no Amazon S3 e usar vários clusters do Amazon EMR para processar o mesmo conjunto de dados. Cada cluster pode ser otimizado para uma determinada carga de trabalho, que pode ser mais eficiente que um único cluster atendendo a várias cargas de trabalho com requisitos diferentes. Por exemplo, você pode ter um cluster que é otimizado para E/S e outro, otimizado para CPU, cada um processando o mesmo conjunto de dados no Amazon S3. Além disso, armazenando seus dados de entrada e saída no Amazon S3, você pode encerrar clusters quando não forem mais necessários. 

O EMRFS oferece um ótimo desempenho na leitura/gravação de/para o Amazon S3, é compatível com a criptografia do lado do servidor e com a criptografia do cliente do S3 usando o AWS Key Management Service (KMS) ou chaves gerenciadas pelo cliente. Além disso, oferece uma visualização uniforme opcional que verifica a uniformidade da lista e da leitura após gravação para os objetos rastreados em seus metadados. Além disso, os clusters do Amazon EMR podem usar EMRFS e HDFS para que você não tenha que escolher entre o armazenamento no cluster e o Amazon S3.

Integração ao AWS Glue Data Catalog: é possível usar o AWS Glue Data Catalog como um repositório gerenciado de metadados para armazenar metadados de tabela externa do Apache Spark e do Apache Hive. Além disso, ele disponibiliza uma descoberta automática de schemas, bem como um histórico de versões de schema. Isso permite persistir metadados de modo fácil para tabelas externas no Amazon S3, fora do cluster.

Com o Amazon EMR, você pode aproveitar vários armazéns de dados, incluindo o Amazon S3, o Hadoop Distributed File System (HDFS) e o Amazon DynamoDB.

DetailsPage_EMR-Diagram

Amazon S3: O Amazon S3 é um serviço de armazenamento altamente durável, escalável, seguro, rápido e econômico. Com o EMR File System (EMRFS), o Amazon EMR pode usar o Amazon S3 com eficiência e segurança como um armazenamento de objetos para o Hadoop. O Amazon EMR fez inúmeras melhorias no Hadoop para que você possa processar grandes quantidades de dados armazenados no Amazon S3. Além disso, o EMRFS pode ativar a visualização consistente para verificar a consistência de lista e de leitura após gravação para objetos no Amazon S3.  O EMRFS é compatível com a criptografia do lado do servidor e a criptografia do cliente do S3 para processar objetos criptografados do Amazon S3. Você também pode usar o AWS Key Management Service (KMS) ou um fornecedor de chaves personalizadas.

Quando você executa seu cluster, o Amazon EMR transmite os dados do Amazon S3 para cada instâncias do seu cluster e começa a processá-lo imediatamente. Uma vantagem de armazenar seus dados no Amazon S3 e processá-lo com o Amazon EMR é que você pode usar vários clusters para processar os mesmos dados. Por exemplo, você pode ter um cluster de desenvolvimento Hive otimizado para memória e um cluster de desenvolvimento Pig otimizado para CPU, ambos usando o mesmo conjunto de dados de entrada.

Hadoop Distributed File System (HDFS): O HDFS é o sistema de arquivos do Hadoop. A topologia atual do Amazon EMR agrupa suas instâncias em 3 grupos lógicos de instâncias: grupo mestre, que executa o YARN Resource Manager e o serviço HDFS Name Node; grupo principal, que executa o HDFS DataNode Daemon e o serviço YARN Node Manager, e grupo de tarefas, que executa o serviço YARN Node Manager. O Amazon EMR instala o HDFS no armazenamento associado às instâncias do grupo principal.  

Cada instância do EC2 é fornecida com uma quantidade fixa de armazenamento, denominada "armazenamento de instâncias", anexada à instância. Também é possível personalizar o armazenamento em uma instância adicionando volumes do Amazon EBS à instância. O Amazon EMR permite adicionar os tipos de volume de propósito geral (SSD), provisionado (SSD) e magnético. Os volumes do EBS adicionados a um cluster do EMR não persistem dados após o encerramento do cluster. O EMR limpa automaticamente os volumes após o encerramento do cluster.

Também é possível habilitar a criptografia completa do HDFS usando uma configuração de segurança do Amazon EMR ou criar manualmente zonas de criptografia do HDFS com o Hadoop Key Management Server

Amazon DynamoDB: o Amazon DynamoDB é um serviço de banco de dados NoSQL rápido e totalmente gerenciado. O Amazon EMR tem uma integração direta com o Amazon DynamoDB, assim você pode, com rapidez e eficiência, processar dados armazenados no Amazon DynamoDB e transferir dados entre o Amazon DynamoDB, Amazon S3 e HDFS no Amazon EMR.

Outros armazéns de dados da AWS: Os clientes do Amazon EMR também usam o Amazon Relational Database Service (um serviço da web que facilita a configuração, a operação e o dimensionamento de um banco de dados relacional na nuvem), o Amazon Glacier (um serviço de armazenamento de custo extremamente baixo que oferece armazenamento seguro e durável para arquivamento e backup de dados) e o Amazon Redshift (um serviço de armazém de dados rápido e totalmente gerenciado em escala de petabytes). O AWS Data Pipeline é um serviço da web que ajuda os clientes a processar e movimentar dados de forma confiável entre diferentes serviços de armazenamento e computação da AWS (incluindo o Amazon EMR), além de fontes de dados locais, em intervalos especificados.

O Amazon EMR é compatível com ferramentas poderosas e comprovadas do Hadoop, como Hive, Pig, HBase e Impala. Além disso, pode executar estruturas de computação distribuída além do Hadoop MapReduce, como Spark ou Presto, usando ações de bootstrap. Você também pode usar o Hue e o Zeppelin como GUIs para interagir com aplicações no seu cluster.

O Hive é um armazém de dados e um pacote analítico de código aberto que é executado por cima do Hadoop. O Hive é operado pela Hive QL, uma linguagem baseada em SQL, que permite aos usuários estruturar, resumir e consultar dados. O Hive QL vai além do SQL padrão, adicionando suporte de primeira classe às funções mapear/reduzir e a tipos de dados complexos e extensíveis definidos pelo usuário, como JSON e Thrift. Esse recurso permite o processamento de fontes de dados complexas e até não estruturadas, como documentos de texto e arquivos de log. O Hive permite extensões de usuário via funções definidas pelo usuário escritas em Java. O Amazon EMR tem feito inúmeras melhorias ao Hive, incluindo a integração direta com o Amazon DynamoDB e o Amazon S3. Por exemplo, com o Amazon EMR, você pode carregar partições de tabela automaticamente do Amazon S3, você pode gravar dados em tabelas no Amazon S3 sem usar arquivos temporários e você pode acessar recursos no Amazon S3, como roteiros para operações personalizadas de mapeamento/redução e bibliotecas adicionais. Saiba mais sobre o Hive e o Amazon EMR.

O Pig é um pacote analítico de código livre que é executado no topo do Hadoop. O Pig é operado pela Pig Latin, uma linguagem similar à SQL, que permite aos usuários estruturar, resumir e consultar dados. Assim como as operações semelhantes ao SQL, o Pig Latin também adiciona suporte de primeira classe para funções mapear/reduzir e tipos de dados complexos e extensíveis definidos pelo usuário. Esse recurso permite o processamento de fontes de dados complexas e até não estruturadas, como documentos de texto e arquivos de log. O Pig permite extensões de usuário via funções definidas pelo usuário escritas em Java. O Amazon EMR fez inúmeras melhorias ao Pig, incluindo a habilidade de usar múltiplos sistemas de arquivos (normalmente o Pig pode acessar somente um sistema de arquivos remoto), a habilidade de carregar JARs e roteiros do cliente do Amazon S3 (por exemplo, “REGISTER s3:///my-bucket/piggybank.jar”) e funcionalidade adicionar para processamento de String e DateTime. Saiba mais sobre o Pig e o Amazon EMR.

HBase é um banco de dados de código aberto, não relacional e distribuído, modelado de acordo com o BigTable da Google. Foi desenvolvido como parte do projeto Hadoop da Apache Software Foundation e é executado sobre o Hadoop Distributed File System(HDFS) para fornecer recursos similares aos da BigTable para Hadoop. O HBase fornece uma maneira eficiente, tolerante a falhas, de armazenar grandes quantidades de dados esparsos usando compressão e armazenamento baseado em colunas. Além disso, o HBase disponibiliza pesquisa rápida de dados porque armazena em cache dados de memória. O HBase é otimizado para operações de gravação sequencial, e é altamente eficiente para inserções, atualizações e exclusões em lote. O HBase funciona sem dificuldade com o Hadoop, compartilhando seu sistema de arquivos e servindo como entrada e saída direta para os trabalhos do Hadoop. O HBase também se integra ao Apache Hive, possibilitando consultas tipo SQL em tabelas HBase, junções com tabelas baseadas no Hive e suporte para Java Database Connectivity (JDBC). Com o Amazon EMR, você pode usar o Amazon S3 como um datastore do Apache HBase, o que permite diminuir custos e reduzir complexidade operacional. Se você usa o HDFS como um datastore, é possível fazer backup do HBase no Amazon S3, além de restaurar usando um backup criado anteriormente. Saiba mais sobre o HBase e o Amazon EMR.

O Phoenix permite SQL de baixa latência com recursos de transação ACID em dados armazenados no Apache HBase. É possível criar facilmente índices secundários para obter desempenho adicional, como também visualizações diferentes sobre a mesma tabela subjacente do HBase. Saiba mais sobre o Phoenix no Amazon EMR.

Impala é uma ferramenta de código aberto no ecossistema Hadoop para consulta ad hoc interativa que usa sintaxe SQL. Em vez de usar o MapReduce, ele utiliza um mecanismo de processamento maciçamente paralelo (MPP) semelhante ao encontrado em sistemas de gestão tradicional de banco de dados relacional (RDBMS). Saiba mais sobre o Impala e o Amazon EMR.

O Hue é uma interface de usuário de código aberto para o Hadoop que facilita a execução e o desenvolvimento de consultas do Hive, o gerenciamento de arquivos no HDFS, a execução e o desenvolvimento de scripts Pig e o gerenciamento de tabelas. O Hue no Amazon EMR também se integra ao Amazon S3, permitindo executar consultas diretas no Amazon S3 e facilitando a transferência de arquivos entre o HDFS e o Amazon S3. Saiba mais sobre o Hue e o Amazon EMR.

O Spark é um mecanismo no ecossistema do Hadoop que processa rapidamente grandes conjuntos de dados. Ele usa conjuntos de dados distribuídos resilientes (RDDs) na memória e tolerante a falhas, e gráficos direcionados acíclicos (DAGs) para definir transformações de dados. O Spark também inclui Spark SQL, Spark Streaming, MLlib e GraphX. Saiba mais sobre o Spark no Amazon EMR.

O Presto é um mecanismo de consulta distribuído de código aberto otimizado para baixa latência e análise de dados ad-hoc. Ele é compatível com o padrão ANSI SQL, que inclui consultas complexas, agregações, junções e funções de janela. O Presto pode processar dados de várias origens de dados, como o Hadoop Distributed File System (HDFS) e o Amazon S3. Saiba mais sobre o Presto no Amazon EMR.

O Zeppelin é uma GUI de código aberto que cria blocos de anotações interativos e de colaboração para a exploração de dados usando o Spark. Você pode usar Scala, Python, SQL (usando Spark SQL) ou HiveQL para manipular dados e visualizar rapidamente resultados. Os blocos de anotações do Zeppelin podem ser compartilhados entre vários usuários, e as visualizações podem ser publicadas em painéis externos. Saiba mais sobre o Zeppelin no Amazon EMR.

O Oozie é um programador de fluxo de trabalho do Hadoop, no qual você pode criar gráficos acíclicos dirigidos (DAGs) das atividades. Você também pode acionar facilmente os fluxos de trabalho do Hadoop por atividades ou horário. Saiba mais sobre o Oozie no Amazon EMR.

O Tez é uma estrutura de execução no Hadoop YARN que oferece desempenho rápido por meio de planos de consulta otimizados e gerenciamento de recursos aprimorado. É possível usar o Tez com o Apache Hive e o Apache Pig em vez do Hadoop MapReduce. Você também pode visualizar planos de execução usando a interface de usuário do Tez. Saiba mais sobre o Tez no Amazon EMR.

Flink é um mecanismo de fluxo de dados de streaming que facilita executar o processamento de streaming em tempo real em fontes de dados com alto throughput. Ele é compatível com semântica de tempo otimizada para eventos com falha, semântica do tipo exactly-once (exatamente uma vez), controle de pressão de retorno e APIs para escrever aplicações de streaming e em lote. Saiba mais sobre o Flink no EMR.

Outros: o Amazon EMR também oferece suporte a vários outros aplicativos e ferramentas populares, como R, Apache MXNet (aprendizado profundo), Mahout (aprendizado de máquina), Ganglia (monitoramento), Accumulo (banco de dados NoSQL seguro), Sqoop (conector de banco de dados relacional) e HCatalog (gerenciamento de tabelas e armazenamento), entre outros. A equipe do Amazon EMR mantém um repositório de ações de bootstrap de código aberto que pode ser usado para instalar software adicional, configurar clusters ou servir como exemplos de codificação de suas próprias ações de bootstrap.

Ajuste seu cluster: Você escolhe quais tipos de instâncias EC2 provisionar no seu cluster (padrão, com mais memória, com CPU de alto desempenho ou E/S de alto desempenho, etc.) com base nos requisitos do seu aplicativo. Você tem acesso à raiz de cada instância e pode personalizar totalmente seu cluster para que se ajuste aos seus requisitos. Saiba mais sobre os tipos de instância compatíveis com o Amazon EC2.

Depure seus aplicativos: Quando você ativa a depuração em um cluster, o Amazon EMR guarda os arquivos de log no Amazon S3 e indexa esses arquivos. Em seguida, você pode usar a interface gráfica no console para percorrer os logs e visualizar o histórico de trabalhos de forma intuitiva. Saiba mais sobre a depuração de trabalhos do Amazon EMR.

Monitore seu cluster: Você pode usar o Amazon CloudWatch para monitorar 23 métricas personalizadas do Amazon EMR, como o número médio de tarefas de mapeamento e redução em execução. Você também pode definir os alarmes nessas métricas. Saiba mais sobre o monitoramento de clusters do Amazon EMR.

Responder a eventos: você pode usar os tipos de evento do Amazon EMR no Amazon CloudWatch Events para responder às alterações de estado em seus clusters do Amazon EMR.Usando regras simples que você pode configurar rapidamente, combine eventos e encaminhe-os para tópicos do Amazon SNS, funções do AWS Lambda, filas do Amazon SQS, entre outros. Saiba mais sobre os eventos em clusters do Amazon EMR.

Programe fluxos de trabalho recorrentes: Você pode usar o AWS Data Pipeline para programar fluxos de trabalho recorrentes envolvendo o Amazon EMR. O AWS Data Pipeline é um serviço da web que ajuda você a processar e movimentar dados de forma confiável entre diferentes serviços de armazenamento e computação da AWS, inclusive fontes de dados locais, em intervalos especificados. Saiba mais sobre o Amazon EMR e o Data Pipeline.

Cascading: O Cascading é uma biblioteca Java de código aberto que oferece uma API de consulta, um planejador de consulta e um agendador de tarefas para criação e execução de aplicativos de MapReduce em Hadoop. Os aplicativos desenvolvidos com o Cascading são compilados e empacotados em arquivo JAR compatíveis com o Hadoop, similares a outros aplicativos Hadoop nativos. Saiba mais sobre o Cascading e o Amazon EMR.

Aprendizado profundo: use estruturas conhecidas de aprendizado profundo como Apache MXNet para definir, treinar e implantar redes neurais profundas. Você pode usar essas estruturas em clusters do Amazon EMR com instâncias de GPU. Saiba mais sobre o MXNet no Amazon EMR.

Controle o acesso de rede ao seu cluster: Você pode executar seu cluster em uma Amazon Virtual Private Cloud (VPC), uma seção logicamente isolada da nuvem da AWS. Você tem controle total sobre seu ambiente de rede virtual, incluindo a seleção do seu próprio intervalo de endereços IP, criação de sub-redes e configuração de tabelas de roteamento e gateways de rede. Saiba mais sobre o Amazon EMR e a Amazon VPC.

Gerencie usuários, permissões e criptografia: Você pode usar ferramentas do AWS Identity and Access Management (IAM), como os usuários e as funções do IAM, para controlar acesso e permissões. Por exemplo, você pode conceder a determinados usuários acesso de leitura, mas não de gravação, aos seus clusters. Além disso, você pode usar as configurações de segurança do Amazon EMR para definir várias opções de criptografia de dados ociosos e em trânsito, incluindo o suporte à criptografia do Amazon S3 e à autenticação do KerberosSaiba mais sobre como controlar o acesso ao seu cluster e as opções de criptografia do Amazon EMR.

Instale software adicional: você pode usar ações de bootstrap ou uma Imagem de máquina da Amazon (AMI) personalizada em execução no Amazon Linux para instalar software adicional no cluster. As ações de bootstrap são roteiros que são executados nos nós do cluster quando o Amazon EMR executa o cluster. Elas são executadas antes que o Hadoop inicie e antes que o nó comece a processar dados. Também é possível pré-carregar e usar software em uma AMI personalizada do Amazon Linux. Saiba mais sobre as ações de bootstrap do Amazon EMR e as AMIs personalizadas do Amazon Linux.

Copie dados com eficiência: Você pode mover rapidamente grandes quantidades de dados do Amazon S3 para o HDFS, do HDFS para o Amazon S3 e entre buckets do Amazon S3 usando o S3DistCp do Amazon EMR, uma extensão da ferramenta de código aberto Distcp, que usa o MapReduce para mover com eficiência grandes quantidades de dados. Saiba mais sobre o S3DistCp.

Hadoop Streaming: O Hadoop Streaming é um utilitário que acompanha o Hadoop que permite o desenvolvimento de executáveis do MapReduce em linguagens que não sejam o Java. O Streaming é implementado na forma de um arquivo JAR. Saiba mais sobre o Hadoop Streaming com o Amazon EMR.

Jar personalizado: Escreva um programa Java, faça a compilação com a versão do Hadoop que irá usar e envie ao Amazon S3. Você pode, então, enviar trabalhos do Hadoop para o cluster usando a interface JobClient do Hadoop. Saiba mais sobre o processamento Custom JAR com o Amazon EMR.

O Amazon EMR pode ser usado com várias ferramentas de software de terceiros:

Transferência de dados

Monitoramento

Ajuste de desempenho

IDE gráfico

Distribuição do Hadoop

BI/Visualização

Inteligência de negócios

Exploração de dados

BI/Visualização

IDE gráfico

BI/Visualização