Configuração dos tipos de instância de cluster e práticas recomendadas do Amazon EMR para instâncias spot - Amazon EMR

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á.

Configuração dos tipos de instância de cluster e práticas recomendadas do Amazon EMR para instâncias spot

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?

Há várias maneiras de adicionar EC2 instâncias da Amazon a um 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.

    • Configure a escalabilidade automática no Amazon EMR para um grupo de instâncias, adicionando e removendo instâncias automaticamente com base no valor de uma métrica da CloudWatch Amazon que você especificar. Para obter mais informações, consulte Use o ajuste de escala de cluster do Amazon EMR para se ajustar às mudanças nas workloads.

  • 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 Exibição e monitoramento de um cluster do Amazon EMR enquanto executa trabalhos. 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 exige uma EC2 instância com muito poder de processamento; as EC2 instâncias da Amazon para o tipo de nó principal, que processam tarefas e armazenam dados no HDFS, precisam tanto de poder de processamento quanto de capacidade de armazenamento; as EC2 instâncias da Amazon para o tipo de nó de tarefa, que não armazenam dados, precisam apenas de poder de processamento. Para obter diretrizes sobre as EC2 instâncias disponíveis da Amazon e suas configurações, consulteConfigurar tipos de EC2 instância da Amazon para uso com o Amazon EMR.

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

  • Há um limite de vCPU para o número total de instâncias sob demanda da EC2 Amazon que você executa em AWS uma conta por. Região da AWS Para obter mais informações sobre o limite de vCPU e como solicitar um aumento de limite para sua conta, consulte Instâncias sob demanda no Guia do EC2 usuário da Amazon para instâncias 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 aplicativos que são implantados especificamente no nó primário (JupyterHub, Hue etc.), um nó primário maior pode ser necessário e pode ajudar a melhorar o desempenho 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.

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'

  • 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

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 EC2 instâncias da Amazon 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 continua esperando até que todas as seis EC2 instâncias da Amazon 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 Criação de um cluster do Amazon EMR 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 ou a API. AWS CLI 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 EC2 instâncias da Amazon usadas para os nós principais.

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

  • 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

  • Escolha de um tipo de EC2 instância da Amazon 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.