Práticas recomendadas para configuração de clusters - Amazon EMR

Práticas recomendadas para configuração de clusters

Use a orientação nesta seção para ajudá-lo a determinar os tipos de instâncias, as opções de compra e a quantidade de armazenamento a ser provisionado para cada tipo de nó em um cluster do EMR.

Que tipo de instância você deve usar?

Existem várias maneiras de adicionar instâncias do Amazon EC2 ao cluster. O método a ser escolhido depende se você usará a configuração de grupos de instâncias ou a configuração de frotas de instâncias para o cluster.

  • Grupos de instâncias

    • Adicione manualmente instâncias do mesmo tipo a grupos de instâncias core e de tarefa existentes.

    • Adicione manualmente um grupo de instâncias de tarefa, que pode usar um tipo de instância diferente.

    • Defina o ajuste de escala automático no Amazon EMR para um grupo de instâncias adicionando e removendo instâncias automaticamente com base no valor de uma métrica do Amazon CloudWatch que você especificar. Para obter mais informações, consulte Usar ajuste de escala de clusters.

  • Frotas de instâncias

    • Adicione uma única frota de instâncias de tarefa.

    • Altere a capacidade de destino para instâncias sob demanda e instâncias spot para as frotas de instâncias core e de tarefas existentes. Para obter mais informações, consulte Configurar frotas de instâncias.

Uma maneira de planejar as instâncias do seu cluster é executar um cluster de teste com um conjunto de dados de amostra representativo e monitorar a utilização dos nós nesse cluster. Para obter mais informações, consulte Visualizar e monitorar um cluster. Outra maneira é calcular a capacidade das instâncias que você está considerando e comparar esse valor com o tamanho dos seus dados.

Em geral, o tipo de nó primário, que atribui tarefas, não requer uma instância do EC2 com muita capacidade de processamento. Instâncias do Amazon EC2 para o tipo de nó central, que processam tarefas e armazenam dados no HDFS, precisam tanto capacidade de processamento como de capacidade de armazenamento. Instâncias do Amazon EC2 para o tipo de nó de tarefa, que não armazenam dados, precisam apenas de poder de processamento. Para conhecer diretrizes sobre instâncias do Amazon EC2 disponíveis e sua configuração, consulte Configurar instâncias do Amazon EC2.

As diretrizes a seguir se aplicam à maioria dos clusters do Amazon EMR.

  • Há um limite de vCPUs para o número total de instâncias sob demanda do Amazon EC2 que você executa em uma conta da AWS por Região da AWS. Para obter mais informações sobre o limite de vCPUs e como solicitar um aumento de limite para sua conta, consulte Instâncias sob demanda no Guia do usuário do Amazon EC2 para instâncias do Linux.

  • O nó primário normalmente não tem grandes requisitos de computação. Para clusters com um grande número de nós ou para clusters com aplicações que são implantadas especificamente no nó primário (JupyterHub, Hue etc.), pode ser necessário usar um nó primário maior, que poderá ajudar a melhorar a performance do cluster. Por exemplo, considere usar uma instância m5.xlarge para clusters pequenos (até 50 nós) e aumentar para um tipo de instância maior para clusters maiores.

  • As necessidades de computação dos nós core e de tarefas dependem do tipo de processamento realizado pelo seu aplicativo. Muitos trabalhos podem ser executados em tipos de instâncias de uso geral, que oferecem uma performance equilibrada em termos de CPU, espaço em disco e entrada/saída. Clusters que usam muitos recursos de computação podem se beneficiar com a execução em instâncias com CPU de alta performance, que possuem proporcionalmente mais CPU do que RAM. Aplicativos de banco de dados e de cache de memória podem se beneficiar com a execução em instâncias com mais memória. Aplicações que fazem uso intenso da rede e da CPU, como análise, NLP e machine learning, podem se beneficiar com a execução de instância de computação em cluster, que fornecem recursos de CPU proporcionalmente altos e maior performance de rede.

  • Se diferentes fases do seu cluster tiverem necessidades de capacidade diferentes, você pode começar com um pequeno número de nós core e aumentar ou diminuir o número de nós de tarefas para atender aos requisitos de capacidade variáveis do seu fluxo de trabalho.

  • A quantidade de dados que você pode processar depende da capacidade de nós core e do tamanho dos seus dados como entrada, durante o processamento, e como saída. Os conjuntos de dados de entrada, intermediários e de saída residem todos no cluster durante o processamento.

Quando você deve usar instâncias spot?

Ao executar um cluster no Amazon EMR, você pode optar por executar instâncias primárias, centrais e de tarefa em instâncias spot. Como cada tipo de grupo de instâncias desempenha um papel diferente no cluster, há implicações na execução de cada tipo de nó em instâncias spot. Você não pode alterar uma opção de compra de instância enquanto um cluster está em execução. Para alterar um grupo de instâncias sob demanda para instâncias spot, ou vice-versa, para nós primários e centrais, você deve terminar o cluster e iniciar um novo. Para nós de tarefa, você pode iniciar um novo grupo de instâncias de tarefa ou frota de instâncias e remover o antigo.

Configurações do Amazon EMR para evitar falhas em trabalhos causado pelo término de instâncias spot de nós de tarefa

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 YARN integrado para conseguir isso. (As versões anteriores usavam um patch de código). As propriedades nas classificações de configuração yarn-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.

O Amazon EMR configura as seguintes propriedades e valores por padrão. Tenha cuidado ao configurar essas propriedades.

  • yarn-site (yarn-site.xml) Em todos os nós

    • yarn.node-labels.enabled: true

    • yarn.node-labels.am.default-node-label-expression: 'CORE'

    • yarn.node-labels.fs-store.root-dir: '/apps/yarn/nodelabels'

    • yarn.node-labels.configuration-type: 'distributed'

  • yarn-site (yarn-site.xml) em nós primários e centrais

    • yarn.nodemanager.node-labels.provider: 'config'

    • yarn.nodemanager.node-labels.provider.configured-node-partition: 'CORE'

  • capacity-scheduler (capacity-scheduler.xml) Em todos os nós

    • yarn.scheduler.capacity.root.accessible-node-labels: '*'

    • yarn.scheduler.capacity.root.accessible-node-labels.CORE.capacity: 100

    • yarn.scheduler.capacity.root.default.accessible-node-labels: '*'

    • yarn.scheduler.capacity.root.default.accessible-node-labels.CORE.capacity: 100

nota

A partir do Amazon EMR série 6.x, o recurso de rótulos de nó do YARN é desabilitado por padrão. Os processos primários da aplicação podem ser executados tanto nos nós centrais como nos nós de tarefa por padrão. É possível habilitar o recurso de rótulos de nó do YARN configurando as seguintes propriedades:

  • yarn.node-labels.enabled: true

  • yarn.node-labels.am.default-node-label-expression: 'CORE'

Nó primário como uma instância spot

O nó primário controla e direciona o cluster. Quando ela for terminada, o cluster será encerrado. Portanto, você só deve iniciar o nó primário como uma instância spot se você estiver executando um cluster em que o término repentino seja aceitável. Este pode ser o caso se você está testando uma nova aplicação, tem um cluster que periodicamente mantém a persistência de dados em um armazenamento externo, como o Amazon S3, ou está executando um cluster em que o custo é mais importante do que garantir a conclusão do cluster.

Quando você executa o grupo de instâncias primárias como uma instância spot, o cluster não é iniciado até que essa solicitação de instância spot seja atendida. Isso é algo a considerar ao selecionar seu preço spot máximo.

Você só pode adicionar um nó primário de instância spot ao iniciar o cluster. Não é possível adicionar ou remover nós primários de um cluster em execução.

Normalmente, você só executaria o nó primário como uma instância spot se estivesse executando o cluster inteiro (todos os grupos de instâncias) como instâncias spot.

Nós centrais em instâncias spot

Nós core processam dados e armazenam informações usando o HDFS. O encerramento de uma instância core representa risco de perda de dados. Por esse motivo, você só deve executar nós core em instâncias spot quando a perda de dados HDFS parcial é aceitável.

Quando você executa o grupo de instâncias centrais como instâncias spot, o Amazon EMR aguarda até poder provisionar todas as instâncias centrais solicitadas antes de iniciar o grupo de instâncias. Em outras palavras, se você solicitar seis instâncias do Amazon EC2 e apenas cinco estiverem disponíveis no preço spot máximo ou abaixo dele, o grupo de instâncias não será iniciado. O Amazon EMR continuará esperando até que todas as seis instâncias do Amazon EC2 estejam disponíveis ou até que você encerre o cluster. Você pode alterar o número de instâncias spot em um grupo de instâncias core para adicionar capacidade a um cluster em execução. Para obter mais informações sobre como trabalhar com grupos de instâncias, e como as instâncias spot funcionam com frotas de instâncias, consulte Criar um cluster com frotas de instâncias ou grupos de instâncias uniformes.

Nós de tarefa em instâncias spot

Os nós de tarefa processam dados, mas não retêm dados persistentes no HDFS. Se eles forem encerrados porque o preço spot ultrapassou seu preço spot máximo, não haverá perda de dados, e o efeito no seu cluster será mínimo.

Quando você executa um ou mais grupos de instâncias de tarefa como instâncias spot, o Amazon EMR provisiona o número possível de nós de tarefa usando o preço spot máximo. Isso significa que, se você solicitar um grupo de instâncias de tarefa com seis nós, e apenas cinco instâncias spot estiverem disponíveis até seu preço spot máximo, o Amazon EMR executará o grupo de instâncias com cinco nós, adicionando o sexto posteriormente, se possível.

A execução de grupos de instâncias de tarefas como instâncias Spot é uma maneira estratégica de expandir a capacidade do seu cluster e, ao mesmo tempo, minimizar os custos. Se você executar os grupos de instâncias primárias e centrais como instâncias sob demanda, a capacidade será garantida para a execução do cluster. Você pode adicionar instâncias de tarefa aos grupos de instâncias da tarefa conforme necessário, para processar picos de tráfego ou agilizar processamento de dados.

Você pode adicionar ou remover nós de tarefas usando o console, a AWS CLI ou a API. Você também pode acrescentar grupos de tarefas adicionais, mas não poderá remover um grupo de tarefas depois de criado.

Configurações de instâncias para cenários de aplicações

A tabela a seguir é uma referência rápida às opções de compras de tipos de nó e configurações que são geralmente apropriadas para vários cenários de aplicativos. Escolha o link para exibir mais informações sobre cada tipo de cenário.

Cenário de aplicações Opção de compra do nó primário Opção de compra de nós centrais Opção de compra de nós de tarefa
Clusters de execução prolongada e data warehouses Sob demanda Combinação de frotas de instâncias ou Sob demanda Combinação de spot ou frota de instâncias
Cargas de trabalho com base no custo Spot Spot Spot
Cargas de trabalho críticas para dados Sob demanda Sob demanda Combinação de spot ou frota de instâncias
Testes de aplicativos Spot Spot Spot

Há vários cenários em que instâncias spot são úteis para executar um cluster do Amazon EMR.

Clusters de execução prolongada e data warehouses

Se você estiver executando um cluster do Amazon EMR persistente que tem uma variação previsível de capacidade computacional, como um data warehouse, pode lidar com a demanda de pico com um custo menor usando instâncias spot. Você pode iniciar seus grupos de instâncias primárias e central como instâncias sob demanda para lidar com a capacidade normal e iniciar o grupo de instâncias de tarefa como instâncias spot para lidar com requisitos de carga de pico.

Cargas de trabalho com base no custo

Ao executar clusters transitórios para os quais um custo menor é mais importante do que o tempo para conclusão, e uma perda parcial do trabalho é aceitável, você pode executar o cluster inteiro (grupos de instâncias primárias, centrais e de tarefa) como instâncias spot para se beneficiar com a maior redução dos custos.

Cargas de trabalho críticas para dados

Se você estiver executando um cluster para o qual o menor custo é mais importante que o tempo para conclusão, mas uma perda parcial do trabalho não é aceitável, inicie os grupos de instâncias primárias e centrais como instâncias sob demanda e complemente-as com um ou mais grupos de instâncias de tarefa de instâncias spot. Executar grupos de instâncias primárias e centrais como instâncias sob demanda garante que seus dados sejam mantidos no HDFS e que o cluster fique protegido contra término devido a flutuações do mercado spot, proporcionando ao mesmo tempo redução de custos decorrentes da execução de grupos de instâncias de tarefa como instâncias spot.

Testes de aplicativos

Ao testar uma nova aplicação a fim de prepará-la para inicialização em um ambiente de produção, você pode executar o cluster inteiro (grupos de instâncias primárias, centrais e de tarefa) como instâncias spot para reduzir os custos de testes.

Calcular a capacidade necessária do HDFS de um cluster

A quantidade de armazenamento no HDFS disponível para o cluster depende dos seguintes fatores:

  • O número de instâncias do Amazon EC2 usadas para nós centrais.

  • A capacidade de armazenamento de instância do Amazon EC2 para o tipo de instância usado. Para obter mais informações sobre volumes de armazenamento de instância, consulte Armazenamento de instância do Amazon EC2 no Guia do usuário do Amazon EC2 para instâncias do Linux.

  • Do número e do tamanho dos volumes do Amazon EBS anexados a nós centrais.

  • De um fator de replicação, que explica como cada bloco de dados é armazenado no HDFS para redundância semelhante ao RAID. Por padrão, o fator de replicação é de três para um cluster de 10 ou mais nós core, dois para um cluster com 4 a 9 nós core e um para um cluster de três nós ou menos.

Para calcular a capacidade do HDFS de um cluster, para cada nó central, adicione a capacidade do volume de armazenamento de instância à capacidade de armazenamento do Amazon EBS (se usado). Multiplique o resultado pelo número de nós core e, em seguida, divida o total pelo fator de replicação com base no número de nós core. Por exemplo, um cluster com 10 nós centrais do tipo i2.xlarge que tem 800 GB de armazenamento de instância, sem nenhum volume do Amazon EBS anexado, tem um total de aproximadamente 2.666 GB disponíveis para o HDFS (10 nós x 800 GB ÷ 3, que é o fator de replicação).

Se o valor calculado de capacidade do HDFS for menor que os seus dados, você poderá aumentar a quantidade de armazenamento do HDFS das seguintes maneiras:

  • Criando um cluster com volumes do Amazon EBS adicionais ou adicionando grupos de instâncias com volumes do Amazon EBS anexados a um cluster atual

  • Adicionando mais nós core

  • Escolhendo um tipo de instância do Amazon EC2 com maior capacidade de armazenamento

  • Usando a compactação de dados

  • Alterando as definições de configuração do Hadoop para reduzir o fator de replicação

A redução do fator de replicação deve ser usada com cautela, pois ela reduz a redundância dos dados do HDFS e a capacidade do cluster de se recuperar de blocos do HDFS perdidos ou corrompidos.