Planejando e configurando frotas de instâncias para seu cluster Amazon EMR - 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á.

Planejando e configurando frotas de instâncias para seu cluster Amazon EMR

nota

A configuração de frotas de instâncias está disponível somente nas EMR versões 4.8.0 e posteriores da Amazon, excluindo 5.0.0 e 5.0.3.

A configuração da frota de instâncias para EMR clusters da Amazon permite que você selecione uma ampla variedade de opções de provisionamento para EC2 instâncias da Amazon e ajuda a desenvolver uma estratégia de recursos flexível e elástica para cada tipo de nó em seu cluster.

Em uma configuração de frota de instância, especifique uma capacidade de destino para instâncias sob demanda e instâncias spot em cada frota. Quando o cluster é iniciado, a Amazon EMR provisiona instâncias até que as metas sejam cumpridas. Quando a Amazon EC2 recupera uma instância spot em um cluster em execução devido a um aumento de preço ou falha na instância, a Amazon EMR tenta substituir a instância por qualquer um dos tipos de instância que você especificar. Isso facilita recuperar a capacidade durante um pico nos preços Spot.

Você pode especificar no máximo cinco tipos de EC2 instância da Amazon por frota para EMR a Amazon usar ao cumprir as metas, ou no máximo 30 tipos de EC2 instância da Amazon por frota ao criar um cluster usando a AWS CLI Amazon EMR API e uma estratégia de alocação para instâncias sob demanda e spot.

Você também pode selecionar várias sub-redes em diferentes zonas de disponibilidade. Quando a Amazon EMR lança o cluster, ela examina essas sub-redes para encontrar as instâncias e as opções de compra que você especifica. Se a Amazon EMR detectar um evento de AWS grande escala em uma ou mais zonas de disponibilidade, a Amazon EMR automaticamente tentará direcionar o tráfego para fora das zonas de disponibilidade afetadas e tentará lançar novos clusters que você cria em zonas de disponibilidade alternativas de acordo com suas seleções. A seleção da zona de disponibilidade do cluster ocorre somente na criação do cluster. Os nós de cluster já existentes não são reiniciados automaticamente em uma nova zona de disponibilidade em caso de interrupção na zona de disponibilidade.

Considerações para trabalhar com frotas de instâncias

Considere os itens a seguir ao usar frotas de instâncias com a AmazonEMR.

  • Você pode ter apenas uma frota de instância por tipo de nó (primário, central, de tarefa). Você pode especificar até cinco tipos de EC2 instância da Amazon para cada frota no AWS Management Console (ou um máximo de 30 tipos por frota de instâncias ao criar um cluster usando o AWS CLI ou Amazon EMR API e umEstratégia de alocação para frotas de instâncias).

  • A Amazon EMR escolhe qualquer um ou todos os tipos de EC2 instância da Amazon especificados para provisionar com opções de compra à vista e sob demanda.

  • Você pode estabelecer capacidades de destino para instâncias spot e sob demanda para frota central e frota de tarefa. Use v CPU ou uma unidade genérica atribuída a cada EC2 instância da Amazon que conta para as metas. A Amazon EMR provisiona instâncias até que cada capacidade alvo seja totalmente cumprida. Para a frota primária, o destino é sempre um.

  • Você pode escolher uma sub-rede (zona de disponibilidade) ou um intervalo. Se você escolher um intervalo, a Amazon EMR provisiona a capacidade na zona de disponibilidade mais adequada.

  • Quando você especificar uma capacidade alvo para instâncias Spot:

    • Para cada tipo de instância, especifique um preço spot máximo. A Amazon EMR provisiona instâncias spot se o preço spot estiver abaixo do preço spot máximo. Você paga o preço spot e não necessariamente o preço spot máximo.

    • Para cada frota, defina um tempo limite para o provisionamento de instâncias Spot. Se a Amazon não EMR puder provisionar a capacidade spot, você poderá encerrar o cluster ou mudar para o provisionamento de capacidade sob demanda. Isso se aplica somente ao provisionamento de clusters, não ao redimensionamento deles. Se o período de tempo limite terminar durante o processo de redimensionamento do cluster, as solicitações spot não provisionadas serão anuladas sem serem transferidas para capacidade sob demanda.

  • Para cada frota, você pode especificar uma das seguintes estratégias de alocação para suas Instâncias Spot: preço-capacidade otimizado, otimizado para capacidade capacity-optimized-prioritized, menor preço ou diversificada em todos os pools.

  • Em cada frota, é possível aplicar as seguintes estratégias de alocação para instâncias sob demanda: a estratégia de menor preço ou a estratégia priorizada.

  • Para cada frota com instâncias sob demanda, você pode optar por aplicar as opções de reserva de capacidade.

  • Se você usa a estratégia de alocação para frotas de exemplo, as seguintes considerações se aplicam ao escolher sub-redes para seu cluster: EMR

    • Quando a Amazon EMR provisiona um cluster com uma frota de tarefas, ela filtra sub-redes que não têm endereços IP disponíveis suficientes para provisionar todas as instâncias do cluster solicitadoEMR. Isso inclui os endereços IP necessários para as frotas de instâncias primárias, centrais e de tarefas durante a inicialização do cluster. A Amazon EMR então aproveita sua estratégia de alocação para determinar o pool de instâncias, com base no tipo de instância e nas sub-redes restantes com endereços IP suficientes, para iniciar o cluster.

    • Se a Amazon EMR não conseguir iniciar o cluster inteiro devido à insuficiência de endereços IP disponíveis, ela tentará identificar sub-redes com endereços IP livres suficientes para iniciar as frotas de instâncias essenciais (principais e primárias). Nesses cenários, sua frota de instâncias de tarefas entrará em estado suspenso, em vez de encerrar o cluster com um erro.

    • Se nenhuma das sub-redes especificadas contiver endereços IP suficientes para provisionar as frotas essenciais de instância principal e primária, a inicialização do cluster falhará com um _. VALIDATION ERROR Isso aciona um evento de encerramento do cluster de CRITICALgravidade, notificando você de que o cluster não pode ser iniciado. Para evitar esse problema, recomenda-se aumentar o número de endereços IP das sub-redes.

  • Ao iniciar instâncias sob demanda, você pode usar reservas de capacidade abertas ou direcionadas para nós primários, centrais e de tarefa em suas contas. Você pode ter capacidade insuficiente com instâncias sob demanda usando estratégia de alocação para frotas de instâncias. Recomendamos que você especifique vários tipos de instância para diversificar e reduzir a chance de ter capacidade insuficiente. Para obter mais informações, consulte Use reservas de capacidade com frotas de instâncias na Amazon EMR.

Opções de frotas de instâncias

Use as seguintes diretrizes para compreender as opções de frota de instância.

Definir capacidades de destino

Especifique as capacidades alvo que deseja para a frota de núcleo e de tarefa. Quando você faz isso, isso determina o número de instâncias sob demanda e instâncias spot que a Amazon EMR provisiona. Quando você especifica uma instância, você decide o quanto cada instância é considerada para o destino. Quando uma instância sob demanda é provisionada, ela é considerada para o destino sob demanda. O mesmo aplica-se para instâncias spot. Ao contrário de frotas centrais e de tarefa, a frota primária é sempre uma instância. Portanto, a capacidade de destino desta frota é sempre um.

Quando você usa o console, as vCPUs do tipo de EC2 instância Amazon são usadas como a contagem das capacidades de destino por padrão. Você pode alterar isso para unidades genéricas e, em seguida, especificar a contagem para cada tipo de EC2 instância. Ao usar o AWS CLI, você atribui manualmente unidades genéricas para cada tipo de instância.

Importante

Quando você escolhe um tipo de instância usando o AWS Management Console, o número de v CPU mostrado para cada tipo de instância é o número de YARN vcores desse tipo de instância, não o número desse tipo EC2 vCPUs de instância. Para obter mais informações sobre o número de vCPUs para cada tipo de instância, consulte Tipos de EC2 instância da Amazon.

Para cada frota, você especifica até cinco tipos de EC2 instância da Amazon. Se você usa um Estratégia de alocação para frotas de instâncias e cria um cluster usando o AWS CLI ou o Amazon EMRAPI, você pode especificar até 30 tipos de EC2 instância por frota de instâncias. A Amazon EMR escolhe qualquer combinação desses tipos de EC2 instância para atender às capacidades desejadas. Como a Amazon EMR quer preencher completamente a capacidade alvo, um excesso pode acontecer. Por exemplo, se houver duas unidades não atendidas e a Amazon só EMR puder provisionar uma instância com uma contagem de cinco unidades, a instância ainda será provisionada, o que significa que a capacidade alvo é excedida em três unidades.

Se você reduzir a capacidade alvo para redimensionar um cluster em execução, a Amazon EMR tentará concluir as tarefas do aplicativo e encerrar as instâncias para atingir a nova meta. Para obter mais informações, consulte Terminar na conclusão de tarefas.

Opções de inicialização

Para instâncias spot, você pode especificar Preço spot máximo para cada tipo de instância da frota. Você pode definir esse preço como uma porcentagem do preço sob demanda ou como uma quantia em dólar. A Amazon EMR provisiona instâncias spot se o preço spot atual em uma zona de disponibilidade estiver abaixo do seu preço spot máximo. Você paga o preço spot e não necessariamente o preço spot máximo.

nota

As instâncias spot com duração definida (também conhecidas como blocos spot) não estarão mais disponíveis para novos clientes a partir de 1.º de julho de 2021. Aos clientes que utilizaram o recurso anteriormente, continuaremos a oferecer suporte a instâncias spot com duração definida até 31 de dezembro de 2022.

Disponível no Amazon EMR 5.12.1 e versões posteriores, você tem a opção de lançar frotas de instâncias spot e sob demanda com alocação de capacidade otimizada. Essa opção de estratégia de alocação pode ser definida na antiga AWS Management Console ou usando o. API RunJobFlow Não é possível personalizar a estratégia de alocação no novo console. Usar a opção de estratégia de alocação requer outras permissões de perfil de serviço. Se você usar a função de EMR serviço padrão da Amazon e a política gerenciada (EMR_DefaultRoleeAmazonEMRServicePolicy_v2) para o cluster, as permissões para a opção de estratégia de alocação já estão incluídas. Se você não estiver usando a função de EMR serviço padrão e a política gerenciada da Amazon, deverá adicioná-las para usar essa opção. Consulte Função de serviço para a Amazon EMR (EMRfunção).

Para obter mais informações sobre instâncias spot, consulte Instâncias spot no Guia EC2 do usuário da Amazon. Para obter mais informações sobre instâncias sob demanda, consulte Instâncias sob demanda no Guia EC2 do usuário da Amazon.

Ao escolher iniciar frotas de instâncias sob demanda com a estratégia de alocação de menor preço, você terá a opção de usar reservas de capacidade. As opções de reserva de capacidade podem ser definidas usando a Amazon EMR APIRunJobFlow. As reservas de capacidade exigem outras permissões de perfil de serviço que você deve adicionar para usar essas opções. Consulte Permissões da estratégia de alocação. Não é possível personalizar as reservas de capacidade no novo console.

Várias opções de sub-rede (zonas de disponibilidade)

Ao usar frotas de instâncias, você pode especificar várias EC2 sub-redes da Amazon em umaVPC, cada uma correspondendo a uma zona de disponibilidade diferente. Se você usa EC2 -Classic, especifica explicitamente as zonas de disponibilidade. A Amazon EMR identifica a melhor zona de disponibilidade para iniciar instâncias de acordo com as especificações da sua frota. Instâncias são sempre provisionadas em apenas uma Zona de disponibilidade. Você pode selecionar sub-redes privadas ou públicas, mas não pode misturar as duas, e as sub-redes especificadas devem estar dentro das mesmas. VPC

Configuração do nó principal

Como a frota de instância primária é somente uma única instância, sua configuração é um pouco diferente de frotas de instâncias centrais e de tarefa. Você seleciona apenas sob demanda ou spot para a frota de instâncias primária, pois ela é formada por somente uma instância. Se você usar o console para criar a frota de instâncias, a capacidade alvo para a opção de compra que você selecionar será definida como 1. Se você usar o AWS CLI, sempre TargetOnDemandCapacity defina um TargetSpotCapacity ou como 1, conforme apropriado. Ainda é possível escolher até cinco tipos de instância para a frota de instâncias primárias (ou no máximo 30 ao usar a opção de estratégia de alocação para instâncias sob demanda ou spot). No entanto, diferentemente das frotas de instâncias principais e de tarefas, nas quais a Amazon EMR pode provisionar várias instâncias de diferentes tipos, a Amazon EMR seleciona um único tipo de instância para provisionar a frota de instâncias primárias.

Estratégia de alocação para frotas de instâncias

Com EMR as versões 5.12.1 e posteriores da Amazon, você pode usar a opção de estratégia de alocação com instâncias sob demanda e spot para cada nó do cluster. Ao criar um cluster usando o AWS CLI EMR console da Amazon EMR API ou da Amazon com uma estratégia de alocação, você pode especificar até 30 tipos de EC2 instância da Amazon por frota. Com a configuração padrão da frota de instâncias de EMR cluster da Amazon, você pode ter até 5 tipos de instância por frota. É recomendável usar a opção de estratégia de alocação para obter provisionamento mais rápido do cluster, alocação mais precisa de instâncias spot e menos interrupções de instâncias spot.

Estratégia de alocação para instâncias sob demanda

As seguintes estratégias de alocação estão disponíveis para as instâncias sob demanda:

lowest-price (padrão)

A estratégia de alocação de menor preço inicia instâncias sob demanda pelo grupo de menor preço que tenha capacidade disponível. Se o grupo com preço mas baixo não tiver capacidade disponível, as instâncias sob demanda virão do próximo grupo com preço mais baixo que tiver capacidade disponível.

prioritized

A estratégia de alocação priorizada permite especificar um valor de prioridade para cada tipo de instância da frota de instâncias. A Amazon EMR lança suas instâncias sob demanda que têm a maior prioridade. Se você usar essa estratégia, deverá configurar a prioridade para pelo menos um tipo de instância. Se você não configurar o valor de prioridade para um tipo de instância, a Amazon EMR atribuirá a prioridade mais baixa a esse tipo de instância. Cada frota de instâncias (primária, central ou de tarefa) em um cluster pode ter um valor de prioridade diferente para um determinado tipo de instância.

nota

Se você usa a estratégia de alocação capacity-optimized-prioritizedspot, a Amazon EMR aplica as mesmas prioridades às suas instâncias sob demanda e às instâncias spot quando você define prioridades.

Estratégia de alocação com instâncias spot

Em Instâncias spot, você escolher uma destas estratégias de alocação:

price-capacity-optimized (recomendado)

A estratégia de alocação otimizada para preço-capacidade inicia instâncias spot com base nos grupos de instâncias spot que têm a maior capacidade disponível e o menor preço para o número de instâncias que estão sendo iniciadas. Como resultado, a estratégia otimizada de preço-capacidade normalmente tem uma chance maior de obter capacidade spot e oferece menores taxas de interrupção. Essa é a estratégia padrão para as versões 6.10.0 e superiores da AmazonEMR.

capacity-optimized

A estratégia de alocação otimizada para capacidade inicia instâncias spot nos grupos mais disponíveis com a menor chance de interrupção no curto prazo. Essa é uma boa opção para workloads que podem ter um custo maior de interrupção associado ao trabalho que é reiniciado. Essa é a estratégia padrão para as EMR versões 6.9.0 e inferiores da Amazon.

capacity-optimized-prioritized

A estratégia de capacity-optimized-prioritized alocação permite que você especifique um valor de prioridade para cada tipo de instância em sua frota de instâncias. A Amazon EMR otimiza primeiro a capacidade, mas respeita as prioridades do tipo de instância com base no melhor esforço possível, como se a prioridade não afetar significativamente a capacidade da frota de provisionar a capacidade ideal. Recomendamos essa opção se você tiver workloads que precisam ter uma quantidade mínima de interrupção e de determinados tipos de instância. Se você usar essa estratégia, deverá configurar a prioridade para pelo menos um tipo de instância. Se você não configurar uma prioridade para nenhum tipo de instância, a Amazon EMR atribuirá o menor valor de prioridade a esse tipo de instância. Cada frota de instâncias (primária, central ou de tarefa) em um cluster pode ter um valor de prioridade diferente para um determinado tipo de instância.

nota

Se você usa a estratégia priorizada de alocação sob demanda, a Amazon EMR aplica o mesmo valor de prioridade às suas instâncias sob demanda e spot quando você define prioridades.

diversified

Com a estratégia de alocação diversificada, a Amazon EC2 distribui instâncias spot em todos os pools de capacidade spot.

lowest-price

A estratégia de alocação de menor preço inicia instâncias spot pelo grupo de menor preço que tenha capacidade disponível. Se o grupo com menor preço não tiver capacidade disponível, as instâncias spot virão do próximo grupo com menor preço que tiver capacidade disponível. Se um pool ficar sem capacidade antes de atender à capacidade solicitada, a EC2 frota da Amazon usa o próximo pool de menor preço para continuar atendendo à sua solicitação. Para garantir que a capacidade desejada seja atendida, é possível receber instâncias spot de vários grupos. Como essa estratégia considera apenas o preço da instância e não considera a disponibilidade de capacidade, ela pode resultar em altas taxas de interrupção.

Permissões da estratégia de alocação

A opção de estratégia de alocação requer várias IAM permissões que são incluídas automaticamente na função de EMR serviço padrão da Amazon e na política EMR gerenciada pela Amazon (EMR_DefaultRoleeAmazonEMRServicePolicy_v2). Ao usar um perfil de serviço personalizado ou uma política gerenciada para o cluster, você deverá adicionar essas permissões antes de criar o cluster. Para obter mais informações, consulte Permissões da estratégia de alocação.

As reservas opcionais de capacidade sob demanda (ODCRs) estão disponíveis quando você usa a opção de estratégia de alocação sob demanda. As opções de reserva de capacidade permitem que você especifique uma preferência para usar primeiro a capacidade reservada para EMR clusters da Amazon. Você pode usar isso para garantir que suas cargas de trabalho críticas usem a capacidade que você já reservou usando aberta ou direcionadaODCRs. Para workloads não essenciais, as preferências de reserva de capacidade permitem especificar se a capacidade reservada deverá ser consumida.

As reservas de capacidade só podem ser usadas por instâncias que correspondam a seus atributos (tipo de instância, plataforma e zona de disponibilidade). Por padrão, as reservas de capacidade aberta são usadas automaticamente pela Amazon EMR ao provisionar instâncias sob demanda que correspondam aos atributos da instância. Se você não tiver nenhuma instância em execução que corresponda aos atributos das reservas de capacidade, elas permanecerão não utilizadas até você iniciar uma instância com atributos correspondentes. Se você não quiser usar nenhuma reserva de capacidade ao iniciar o cluster, defina a preferência de reserva de capacidade como nenhuma nas opções de inicialização.

No entanto, também é possível destinar uma reserva de capacidade para workloads específicas. Isso permite que você controle explicitamente quais instâncias têm permissão para executar na capacidade reservada. Para obter mais informações sobre reservas de capacidade sob demanda, consulte Use reservas de capacidade com frotas de instâncias na Amazon EMR.

IAMPermissões necessárias para uma estratégia de alocação

O Função de serviço para a Amazon EMR (EMRfunção) precisa de outras permissões para criar um cluster que use a opção de estratégia de alocação para frotas de instâncias sob demanda ou spot.

Incluímos automaticamente essas permissões na função de EMR serviço padrão da Amazon EMR_DefaultRolee na política EMR gerenciada da Amazon AmazonEMRServicePolicy_v2.

Ao usar um perfil de serviço personalizado ou uma política gerenciada para o cluster, você deverá adicionar as seguintes permissões:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DeleteLaunchTemplate", "ec2:CreateLaunchTemplate", "ec2:DescribeLaunchTemplates", "ec2:CreateLaunchTemplateVersion", "ec2:CreateFleet" ], "Resource": "*" } }

As permissões de perfil de serviço a seguir são necessárias para criar um cluster que usa reservas de capacidade abertas ou direcionadas. É necessário incluir essas permissões além das permissões necessárias para usar a opção de estratégia de alocação.

exemplo Documento de política para reservas de capacidade de perfil de serviço

Para usar reservas de capacidade aberta, é necessário incluir as permissões adicionais a seguir.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeCapacityReservations", "ec2:DescribeLaunchTemplateVersions", "ec2:DeleteLaunchTemplateVersions" ], "Resource": "*" } ] }

Para usar reservas de capacidade direcionada, é necessário incluir as permissões adicionais a seguir.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeCapacityReservations", "ec2:DescribeLaunchTemplateVersions", "ec2:DeleteLaunchTemplateVersions", "resource-groups:ListGroupResources" ], "Resource": "*" } ] }

Configurar frotas de instâncias para o cluster

Console
Para criar um cluster com frotas de instâncias usando o console
  1. Faça login no e abra AWS Management Console o EMR console da Amazon em https://console.aws.amazon.com/emr.

  2. EMREC2Em Ativado, no painel de navegação esquerdo, escolha Clusters e escolha Criar cluster.

  3. Em Configuração do cluster, escolha Frotas de instâncias.

  4. Em cada Grupo de nós, selecione Adicionar tipo de instância e escolha até cinco tipos de instância para frotas de instâncias primárias e centrais e até quinze tipos de instância para frotas de instâncias de tarefa. A Amazon EMR pode provisionar qualquer combinação desses tipos de instância ao iniciar o cluster.

  5. Para alterar essas configurações, em cada tipo de grupo de nós, escolha o menu suspenso Ações ao lado de cada instância:

    Adicionar EBS volumes

    Especifique EBS os volumes a serem anexados ao tipo de instância depois que a Amazon a EMR provisionar.

    Editar capacidade ponderada

    Para o grupo de nós centrais, altere esse valor para qualquer número de unidades adequado a suas aplicações. O número de YARN vCores para cada tipo de instância de frota é usado como unidades de capacidade ponderada padrão. Não é possível editar a capacidade ponderada do nó primário.

    Editar preço máximo spot

    Especifique um preço spot máximo para cada tipo de instância da frota. Você pode definir esse preço como uma porcentagem do preço sob demanda ou como uma quantia em dólar. Se o preço spot atual em uma zona de disponibilidade estiver abaixo do preço spot máximo, a Amazon EMR provisiona instâncias spot. Você paga o preço spot e não necessariamente o preço spot máximo.

  6. Opcionalmente, para adicionar grupos de segurança aos seus nós, expanda os grupos de EC2 segurança (firewall) na seção Rede e selecione seu grupo de segurança para cada tipo de nó.

  7. Opcionalmente, marque a caixa de seleção ao lado de Aplicar estratégia de alocação, se quiser usar a opção de estratégia de alocação, e selecione a estratégia de alocação que deseja especificar para as instâncias spot. Você não deve selecionar essa opção se sua função EMR de serviço da Amazon não tiver as permissões necessárias. Para obter mais informações, consulte Estratégia de alocação para frotas de instâncias.

  8. Escolha qualquer outra opção que se aplique ao cluster.

  9. Para iniciar o cluster, escolha Criar cluster.

AWS CLI

Para criar e executar um cluster com frotas de instâncias com o AWS CLI, siga estas diretrizes:

  • Para criar e executar um cluster com frotas de instâncias, use o comando create-cluster com parâmetros --instance-fleet.

  • Para obter detalhes sobre a configuração das frotas de instâncias em um cluster, use o comando list-instance-fleets.

  • Para adicionar vários Amazon Linux personalizados AMIs a um cluster que você está criando, use a CustomAmiId opção com cada InstanceType especificação. Você pode configurar nós de frota de instâncias com vários tipos de instância e vários personalizados AMIs para atender às suas necessidades. Consulte Exemplos: criar um cluster com a configuração de frotas de instâncias.

  • Para fazer alterações na capacidade alvo para uma frota de instâncias, use o comando modify-instance-fleet.

  • Para adicionar uma frota de instância de tarefas a um cluster que ainda não tem uma, use o comando add-instance-fleet.

  • Vários itens personalizados AMIs podem ser adicionados à frota de instâncias de tarefas usando o CustomAmiId argumento com o add-instance-fleet comando. Consulte Exemplos: criar um cluster com a configuração de frotas de instâncias.

  • Para usar a opção de estratégia de alocação ao criar uma frota de instâncias, atualize o perfil de serviço de modo a incluir o exemplo de documento de política na seção a seguir.

  • Para usar as opções de reservas de capacidade ao criar uma frota de instâncias com a estratégia de alocação sob demanda, atualize o perfil de serviço de modo a incluir o exemplo de documento de política na seção a seguir.

  • As frotas de instâncias são incluídas automaticamente na função de EMR serviço padrão e na política EMR gerenciada da Amazon (EMR_DefaultRoleeAmazonEMRServicePolicy_v2). Ao usar um perfil de serviço personalizada ou uma política gerenciada personalizada para o cluster, você deverá adicionar as novas permissões para a estratégia de alocação na seção a seguir.

Exemplos: criar um cluster com a configuração de frotas de instâncias

Os exemplos a seguir demonstram comandos create-cluster com uma variedade de opções que você pode combinar.

nota

Se você ainda não criou a função de EMR serviço e o perfil de EC2 instância padrão da Amazon, use-os aws emr create-default-roles para criá-los antes de usar o create-cluster comando.

exemplo Exemplo: primário sob demanda, núcleo sob demanda com tipo de instância única, padrão VPC
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}']
exemplo Exemplo: Spot primário, Spot core com tipo de instância única, padrão VPC
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}'] \ InstanceFleetType=CORE,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}']
exemplo Exemplo: núcleo primário sob demanda, misto com tipo de instância única, sub-rede única EC2
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=2,TargetSpotCapacity=6,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=2}']
exemplo Exemplo: primário sob demanda, núcleo spot com vários tipos de instância ponderada, tempo limite para spot, intervalo de sub-redes EC2
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c','subnet-de67890f'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetSpotCapacity=11,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}',\ '{InstanceType=m4.2xlarge,BidPrice=0.9,WeightedCapacity=5}'],\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=120,TimeoutAction=SWITCH_TO_ON_DEMAND}'}
exemplo Exemplo: principal sob demanda, núcleo misto e tarefa com vários tipos de instância ponderada, tempo limite para instâncias spot principais, variedade de sub-redes EC2
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c','subnet-de67890f'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=8,TargetSpotCapacity=6,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}',\ '{InstanceType=m4.2xlarge,BidPrice=0.9,WeightedCapacity=5}'],\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=120,TimeoutAction=SWITCH_TO_ON_DEMAND}'} \ InstanceFleetType=TASK,TargetOnDemandCapacity=3,TargetSpotCapacity=3,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}']
exemplo Exemplo: Spot primário, sem núcleo ou tarefa, EBS configuração da Amazon, padrão VPC
aws emr create-cluster --release-label Amazon EMR 5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetSpotCapacity=1,\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=60,TimeoutAction=TERMINATE_CLUSTER}'},\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,\ EbsConfiguration={EbsOptimized=true,EbsBlockDeviceConfigs=[{VolumeSpecification={VolumeType=gp2,\ SizeIn GB=100}},{VolumeSpecification={VolumeType=io1,SizeInGB=100,Iop s=100},VolumesPerInstance=4}]}}']
exemplo Exemplo: vários tipos de instância personalizadosAMIs, vários tipos de instância, primário sob demanda, núcleo sob demanda
aws emr create-cluster --release-label Amazon EMR 5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456},{InstanceType=m6g.xlarge, CustomAmiId=ami-234567}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456},{InstanceType=m6g.xlarge, CustomAmiId=ami-234567}']
exemplo Exemplo: adicionar um nó de tarefa a um cluster em execução com vários tipos de instância e vários tipos personalizados AMIs
aws emr add-instance-fleet --cluster-id j-123456 --release-label Amazon EMR 5.3.1 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleet \ InstanceFleetType=Task,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456}',\ '{InstanceType=m6g.xlarge,CustomAmiId=ami-234567}']
exemplo Exemplo: usar um arquivo JSON de configuração

Você pode configurar os parâmetros da frota de instâncias em um JSON arquivo e, em seguida, referenciar o JSON arquivo como o único parâmetro para frotas de instâncias. Por exemplo, o comando a seguir faz referência a um arquivo de JSON configuraçãomy-fleet-config.json:

aws emr create-cluster --release-label emr-5.30.0 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets file://my-fleet-config.json

O my-fleet-config.json arquivo especifica frotas de instâncias primárias, principais e de tarefas, conforme mostrado no exemplo a seguir. A frota de instâncias principais usa um preço spot máximo (BidPrice) como uma porcentagem do sob demanda, enquanto as frotas de tarefas e instâncias primárias usam um preço spot máximo (BidPriceAsPercentageofOnDemandPrice) como sequência de caracteres. USD

[ { "Name": "Masterfleet", "InstanceFleetType": "MASTER", "TargetSpotCapacity": 1, "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 120, "TimeoutAction": "SWITCH_TO_ON_DEMAND" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPrice": "0.89" } ] }, { "Name": "Corefleet", "InstanceFleetType": "CORE", "TargetSpotCapacity": 1, "TargetOnDemandCapacity": 1, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first", "CapacityReservationResourceGroupArn": "String" } }, "SpotSpecification": { "AllocationStrategy": "capacity-optimized", "TimeoutDurationMinutes": 120, "TimeoutAction": "TERMINATE_CLUSTER" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPriceAsPercentageOfOnDemandPrice": 100 } ] }, { "Name": "Taskfleet", "InstanceFleetType": "TASK", "TargetSpotCapacity": 1, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "CapacityReservationPreference": "none" } }, "SpotSpecification": { "TimeoutDurationMinutes": 120, "TimeoutAction": "TERMINATE_CLUSTER" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPrice": "0.89" } ] } ]

Modificar capacidades de destino para uma frota de instâncias

Use o comando modify-instance-fleet para especificar novas capacidades alvo para uma frota de instâncias. Você deve especificar o ID de cluster e o ID de frota de instância. Use o list-instance-fleets comando para recuperar a frota IDs de instâncias.

aws emr modify-instance-fleet --cluster-id <cluster-id> \ --instance-fleet \ InstanceFleetId='<instance-fleet-id>',TargetOnDemandCapacity=1,TargetSpotCapacity=1

Adicionar uma frota de instâncias de tarefa a um cluster

Se um cluster tiver apenas frotas de instâncias primárias e centrais, você poderá usar o comando add-instance-fleet para adicionar uma frota de instâncias de tarefa. Isso só pode ser usado para adicionar frotas de instância de tarefa.

aws emr add-instance-fleet --cluster-id <cluster-id> --instance-fleet \ InstanceFleetType=TASK,TargetSpotCapacity=1,\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=20,TimeoutAction=TERMINATE_CLUSTER}'},\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}']

Obter detalhes da configuração de frotas de instâncias em um cluster

Use o comando list-instance-fleets para obter detalhes de configuração das frotas de instâncias em um cluster. O comando utiliza um ID de cluster como entrada. O exemplo a seguir demonstra o comando e sua saída para um cluster que contém um grupo de instâncias de tarefa primárias e um grupo de instâncias de tarefa centrais. Para obter a sintaxe completa da resposta, consulte ListInstanceFleetsna Amazon EMR API Reference.

list-instance-fleets --cluster-id <cluster-id>
{ "InstanceFleets": [ { "Status": { "Timeline": { "ReadyDateTime": 1488759094.637, "CreationDateTime": 1488758719.817 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 6, "Name": "CORE", "InstanceFleetType": "CORE", "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 60, "TimeoutAction": "TERMINATE_CLUSTER" } }, "ProvisionedOnDemandCapacity": 2, "InstanceTypeSpecifications": [ { "BidPrice": "0.5", "InstanceType": "m5.xlarge", "WeightedCapacity": 2 } ], "Id": "if-1ABC2DEFGHIJ3" }, { "Status": { "Timeline": { "ReadyDateTime": 1488759058.598, "CreationDateTime": 1488758719.811 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 0, "Name": "MASTER", "InstanceFleetType": "MASTER", "ProvisionedOnDemandCapacity": 1, "InstanceTypeSpecifications": [ { "BidPriceAsPercentageOfOnDemandPrice": 100.0, "InstanceType": "m5.xlarge", "WeightedCapacity": 1 } ], "Id": "if-2ABC4DEFGHIJ4" } ] }