As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Camadas de arquitetura e de serviços no Amazon EMR
A arquitetura de serviços do Amazon EMR consiste em várias camadas, cada uma delas fornecendo determinados recursos e funcionalidades ao cluster. Esta seção fornece uma visão geral das camadas e dos componentes de cada uma.
Neste tópico
Armazenamento
A camada de armazenamento inclui os diferentes sistemas de arquivos que são usados com o cluster. Existem vários tipos diferentes de opções de armazenamento, da seguinte maneira.
Hadoop Distributed File System (HDFS)
O Hadoop Distributed File System (HDFS) é um sistema de arquivos distribuído e escalável para o Hadoop. O HDFS distribui os dados armazenados entre as instâncias do cluster, armazenando várias cópias dos dados em instâncias diferentes para garantir que nenhum dos dados se perca caso uma das instâncias falhe. O HDFS é um armazenamento temporário que é reivindicado quando um cluster é encerrado. O HDFS é útil para armazenar em cache os resultados intermediários durante o processamento MapReduce ou para cargas de trabalho que têm uma E/S significativa aleatória.
Para obter mais informações, consulte Opções e comportamento de armazenamento de instâncias na Amazon EMR neste guia ou acesse o HDFS User Guide
Sistema de arquivos do EMR (EMRFS)
Ao usar o Sistema de Arquivos do EMR (EMRFS), o Amazon EMR amplia o Hadoop para adicionar a capacidade de acessar diretamente os dados armazenados no Amazon S3, como se ele fosse um sistema de arquivos como o HDFS. Você pode usar o HDFS ou o Amazon S3 como o sistema de arquivos em seu cluster. Na maioria das vezes, o Amazon S3 é usado para armazenar dados de entrada e de saída, e os resultados intermediários são armazenados no HDFS.
Sistema de arquivos local
O sistema de arquivos local é a um disco conectado localmente. Quando você cria um cluster do Hadoop, cada nó é criado a partir de uma instância do Amazon EC2 que tem componentes configurados previamente para o armazenamento em disco anexado previamente, que é chamado de armazenamento de instância. Os dados nos volumes de armazenamento de instância persistem somente durante o ciclo de vida da instância do Amazon EC2.
Gerenciamento de recursos de cluster
A camada de gerenciamento de recursos é responsável por gerenciar os recursos de cluster e agendar os trabalhos para o processamento de dados.
Por padrão, o Amazon EMR usa o YARN (Yet Another Resource Negotiator), que é um componente introduzido no Apache Hadoop 2.0 para gerenciar centralmente os recursos de cluster para várias estruturas de processamento de dados. No entanto, existem outras estruturas e aplicações disponibilizadas no Amazon EMR que não usam o YARN como gerenciador de recursos. O Amazon EMR também tem um atendente em cada nó que administra os componentes do YARN, mantém o cluster íntegro e se comunica com o Amazon EMR.
Como as instâncias spot são frequentemente usadas para executar nós de tarefas, o Amazon EMR tem a funcionalidade padrão para programar trabalhos do YARN para que os trabalhos em execução não falhem quando os nós de tarefas em execução nas instâncias spot forem encerrados. O Amazon EMR faz isso ao permitir que processos principais de aplicações sejam executados somente em nós centrais. O processo principal da aplicação controla os trabalhos em execução e precisa permanecer ativo durante a vida útil do trabalho.
A versão 5.19.0 e as versões posteriores do Amazon EMR usam o recurso de rótulos de nós do YARNyarn-site
e capacity-scheduler
são configuradas por padrão para que o programador de capacidade e o programador justo do YARN aproveitem os rótulos de nós. O Amazon EMR rotula automaticamente os nós centrais com o rótulo CORE
e define propriedades para que as aplicações principais sejam programadas somente em nós com o rótulo CORE. Modificar manualmente as propriedades relacionadas nas classificações de configuração yarn-site e docapacity-scheduler, ou diretamente nos arquivos XML associados, pode interromper esse recurso ou modificar essa funcionalidade.
Estruturas de processamento de dados
A camada de estruturas de processamento de dados é o mecanismo usado para processar e analisar dados. Existem muitas estruturas disponíveis que são executadas no YARN ou têm seu próprio gerenciamento de recursos. Estruturas diferentes estão disponíveis para tipos distintos de necessidades de processamento, como e lote, interativo, na memória, streaming e assim por diante. A estrutura que você escolhe depende do seu caso de uso. A escolha afeta as linguagens e interfaces disponíveis na camada de aplicativo, que é a camada usada para interagir com os dados que você deseja processar. As principais estruturas de processamento disponíveis para o Amazon EMR são o Hadoop MapReduce e o Spark.
Hadoop MapReduce
O Hadoop MapReduce é um modelo de programação de código-fonte aberto para computação distribuída. Ele simplifica o processo de gravação de aplicativos distribuídos em paralelo, manipulando toda a lógica, enquanto você fornece as funções Map e Reduce. A função Map mapeia dados para conjuntos de pares de chave/valor chamados de resultados intermediários. A função Reduce combina os resultados intermediários, aplica algoritmos adicionais e produz o resultado final. Existem várias estruturas disponíveis para o MapReduce, como o Hive, que geram automaticamente programas Map e Reduce.
Para obter mais informações, acesse How map and reduce operations are actually carried out
Apache Spark
O Spark é um modelo de programação e estrutura de cluster para o processamento de workloads de big data. Como o Hadoop MapReduce, o Spark é um sistema de processamento distribuído de código-fonte aberto, mas usa gráficos acíclicos dirigidos para planos de execução e tira proveito do armazenamento em cache na memória para conjuntos de dados. Ao executar o Spark no Amazon EMR, você pode usar o EMRFS para acessar diretamente os dados no Amazon S3. O Spark oferece suporte a vários módulos de consulta interativos, como o SparkSQL.
Para obter mais informações, consulte Apache Spark on Amazon EMR clusters no Guia de lançamento do Amazon EMR.
Aplicações e programas
O Amazon EMR oferece suporte para muitas aplicações, como o Hive, o Pig e a biblioteca Spark Streaming, para fornecer funcionalidades como o uso de linguagens de nível superior para criar workloads de processamento, o uso de algoritmos de machine learning, a criação de aplicações de processamento de fluxos e o desenvolvimento de data warehouses. Além disso, o Amazon EMR também oferece suporte a projetos de código aberto que têm suas próprias funcionalidades de gerenciamento de cluster em vez de usarem o YARN.
Você usa várias bibliotecas e linguagens para interagir com as aplicações executadas no Amazon EMR. Por exemplo, você pode usar Java, Hive ou o Pig com o MapReduce ou o Spark Streaming, o Spark SQL, o MLlib e o GraphX com o Spark.
Para obter mais informações, consulte o Guia de versão do Amazon EMR.