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á.
Usando um personalizado AMI para fornecer mais flexibilidade para a configuração de EMR clusters da Amazon
Ao usar o Amazon EMR 5.7.0 ou superior, você pode escolher especificar um Amazon Linux personalizado AMI em vez do Amazon Linux padrão para a AMI Amazon. EMR Um personalizado AMI é útil se você quiser fazer o seguinte:
-
Pré-instale aplicativos e realize outras personalizações em vez de usar ações de bootstrap. Isso pode melhorar o tempo de início do cluster e agilizar o fluxo de trabalho de inicialização. Para obter mais informações e um exemplo, consulte Criação de um Amazon Linux personalizado AMI a partir de uma instância pré-configurada.
-
Implementar configurações de cluster e o nó mais sofisticadas do que o permitido por ações de bootstrap.
-
Criptografe os volumes do dispositivo EBS raiz (volumes de inicialização) das EC2 instâncias em seu cluster se você estiver usando uma EMR versão da Amazon inferior à 5.24.0. Assim como no padrãoAMI, o tamanho mínimo do volume raiz para um personalizado AMI é 10 GiB para as EMR versões 6.9 e inferiores da Amazon e 15 GiB para as versões 6.10 e superiores da AmazonEMR. Para obter mais informações, consulte Criação de um volume personalizado AMI com um dispositivo EBS raiz criptografado da Amazon.
nota
A partir da EMR versão 5.24.0 da Amazon, você pode usar uma opção de configuração de segurança para criptografar o dispositivo EBS raiz e os volumes de armazenamento ao especificar AWS KMS como seu provedor de chaves. Para obter mais informações, consulte Criptografia de disco local.
Um personalizado AMI deve existir na mesma AWS região em que você cria o cluster. Também deve corresponder à arquitetura da EC2 instância. Por exemplo, uma instância m5.xlarge tem a arquitetura x86_64. Portanto, para provisionar um m5.xlarge usando um personalizadoAMI, seu personalizado também AMI deve ter a arquitetura x86_64. Da mesma forma, para provisionar uma instância m6g.xlarge, que tem a arquitetura arm64, sua instância personalizada AMI deve ter a arquitetura arm64. Para obter mais informações sobre como identificar um Linux AMI para seu tipo de instância, consulte Encontre um Linux AMI no Guia EC2 do usuário da Amazon.
Importante
EMRclusters que executam Amazon Linux ou Amazon Linux 2 Amazon Machine Images (AMIs) usam o comportamento padrão do Amazon Linux e não baixam e instalam automaticamente atualizações importantes e críticas do kernel que exigem uma reinicialização. Esse é o mesmo comportamento de outras EC2 instâncias da Amazon que executam o Amazon Linux padrãoAMI. Se novas atualizações de software Amazon Linux que exigem uma reinicialização (como kernel e CUDA atualizações) ficarem disponíveis após a disponibilização de uma EMR versão da Amazon, as instâncias de EMR cluster que executam o padrão AMI não baixam e instalam automaticamente essas atualizações. NVIDIA Para obter atualizações do kernel, você pode personalizar sua Amazon EMR AMI para usar o Amazon Linux AMI mais recente.
Criação de um Amazon Linux personalizado AMI a partir de uma instância pré-configurada
As etapas básicas para pré-instalar o software e realizar outras configurações para criar um Amazon Linux personalizado para a AMI Amazon EMR são as seguintes:
-
Execute uma instância a partir do Amazon Linux básicoAMI.
-
Conecte-se à instância para instalar o software e realizar outras personalizações.
-
Crie uma nova imagem (AMIinstantâneo) da instância que você configurou.
Depois de criar a imagem com base na sua instância personalizada, você pode copiar essa imagem para um destino criptografado conforme descrito em Criação de um volume personalizado AMI com um dispositivo EBS raiz criptografado da Amazon.
Tutorial: criar uma AMI a partir de uma instância com software personalizado instalado
Para iniciar uma EC2 instância com base no Amazon Linux mais recente AMI
-
Use o AWS CLI para executar o comando a seguir, que cria uma instância a partir de uma existenteAMI.
Substitua pelo par de chaves que você usa para se conectar à instância eMyKeyName
MyAmiId
pelo ID de um Amazon Linux apropriadoAMI. Para as mais recentes AMIIDs, consulte Amazon Linux AMI. nota
Os caracteres de continuação de linha do Linux (\) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).
aws ec2 run-instances --image-id
MyAmiID
\ --count 1 --instance-typem5.xlarge
\ --key-nameMyKeyName
--regionus-west-2
O valor de saída
InstanceId
é usado como
na próxima etapa.MyInstanceId
-
Execute o seguinte comando:
aws ec2 describe-instances --instance-ids
MyInstanceId
O valor de saída
PublicDnsName
é usado para se conectar à instância na próxima etapa.
Para se conectar à instância e instalar o software
-
Use uma SSH conexão que permita executar comandos shell na sua instância Linux. Para obter mais informações, consulte Conectando-se à sua instância Linux usando SSH o Amazon EC2 User Guide.
-
Realize todas as personalizações necessárias. Por exemplo:
sudo yum install
MySoftwarePackage
sudo pip installMySoftwarePackage
Para criar um snapshot da imagem personalizada
-
Depois de personalizar a instância, use o
create-image
comando para criar uma a AMI partir da instância.aws ec2 create-image --no-dry-run --instance-id
MyInstanceId
--nameMyEmrCustomAmi
O valor de saída
imageID
é usado quando você executa o cluster ou cria um snapshot criptografados. Para ter mais informações, consulte Use um único personalizado AMI em um EMR cluster e Criação de um volume personalizado AMI com um dispositivo EBS raiz criptografado da Amazon.
Como usar um personalizado AMI em um EMR cluster da Amazon
Você pode usar um customizado AMI para provisionar um EMR cluster da Amazon de duas maneiras:
-
Use uma única personalização AMI para todas as EC2 instâncias no cluster.
-
Use personalização diferente AMIs para os diferentes tipos de EC2 instância usados no cluster.
Você pode usar somente uma das duas opções ao provisionar um EMR cluster e não pode alterá-la depois que o cluster for iniciado.
Consideração | Personalização única AMI | Vários personalizados AMIs |
---|---|---|
Use os processadores x86 e Graviton2 personalizados AMIs no mesmo cluster |
|
|
AMIa personalização varia entre os tipos de instância |
|
|
Altere o personalizado AMIs ao adicionar uma nova instância de tarefagroups/fleets to a running cluster. Note: you cannot change the custom AMI of existing instance groups/fleets. |
|
|
Use o AWS console para iniciar um cluster |
|
|
Use AWS CloudFormation para iniciar um cluster |
|
|
Use um único personalizado AMI em um EMR cluster
Para especificar uma AMI ID personalizada ao criar um cluster, use uma das seguintes opções:
-
AWS Management Console
-
AWS CLI
-
Amazon EMR SDK
-
Amazon EMR API RunJobFlow
-
AWS CloudFormation (veja a
CustomAmiID
propriedade em Cluster InstanceGroupConfig, Cluster InstanceTypeConfig InstanceGroupConfig, Recurso ou Recurso InstanceFleetConfig - InstanceTypeConfig)
Use vários personalizados AMIs em um EMR cluster da Amazon
Para criar um cluster usando várias opções personalizadasAMIs, use uma das seguintes opções:
-
AWS CLIversão 1.20.21 ou superior
-
AWS SDK
-
Amazon EMR RunJobFlowna Amazon EMR API Reference
-
AWS CloudFormation (veja a
CustomAmiID
propriedade em Cluster InstanceGroupConfig, Cluster InstanceTypeConfig InstanceGroupConfig, Recurso ou Recurso InstanceFleetConfig - InstanceTypeConfig)
Atualmente, o AWS Management Console não oferece suporte à criação de um cluster usando vários modelos personalizadosAMIs.
exemplo - Use o AWS CLI para criar um cluster de grupos de instâncias usando vários modelos personalizados AMIs
Usando a AWS CLI versão 1.20.21 ou superior, você pode atribuir um único personalizado AMI a todo o cluster ou pode atribuir vários personalizados AMIs a cada nó da instância em seu cluster.
O exemplo a seguir mostra um cluster uniforme de grupos de instâncias criado com dois tipos de instância (m5.xlarge) usados em todos os tipos de nós (primário, central, de tarefa). Cada nó tem vários itens personalizadosAMIs. O exemplo ilustra vários recursos da AMI configuração personalizada múltipla:
-
Não há AMI atribuição personalizada no nível do cluster. Isso é para evitar conflitos entre os vários personalizados AMIs e um único personalizadoAMI, o que faria com que a inicialização do cluster falhasse.
-
O cluster pode ter vários nós de tarefas principais, centrais e individuais personalizadosAMIs. Isso permite AMI personalizações individuais, como aplicativos pré-instalados, configurações sofisticadas de cluster e volumes criptografados do dispositivo raiz da AmazonEBS.
-
O nó principal do grupo de instâncias pode ter somente um tipo de instância e a personalização correspondenteAMI. Da mesma forma, o nó primário pode ter somente um tipo de instância e a personalização correspondenteAMI.
-
O cluster pode ter múltiplos nós de tarefa.
aws emr create-cluster --instance-groups InstanceGroupType=PRIMARY,InstanceType=
m5.xlarge
,InstanceCount=1
,CustomAmiId=ami-123456
InstanceGroupType=CORE,InstanceType=m5.xlarge
,InstanceCount=1
,CustomAmiId=ami-234567
InstanceGroupType=TASK,InstanceType=m6g.xlarge
,InstanceCount=1
,CustomAmiId=ami-345678
InstanceGroupType=TASK,InstanceType=m5.xlarge
,InstanceCount=1
,CustomAmiId=ami-456789
exemplo - Use a AWS CLI versão 1.20.21 ou superior para adicionar um nó de tarefa a um cluster de grupos de instâncias em execução com vários tipos de instância e vários personalizados AMIs
Usando a AWS CLI versão 1.20.21 ou superior, você pode adicionar vários personalizados AMIs a um grupo de instâncias que você adiciona a um cluster em execução. O argumento CustomAmiId
pode ser usado com o comando add-instance-groups
, conforme mostrado no exemplo a seguir. Observe que a mesma AMI ID personalizada múltipla (ami-123456) é usada em mais de um nó.
aws emr create-cluster --instance-groups InstanceGroupType=PRIMARY,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456 InstanceGroupType=CORE,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456 InstanceGroupType=TASK,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-234567 { "ClusterId": "j-123456", ... } aws emr add-instance-groups --cluster-id j-123456 --instance-groups InstanceGroupType=Task,InstanceType=m6g.xlarge,InstanceCount=1,CustomAmiId=ami-345678
exemplo - Use a AWS CLI versão 1.20.21 ou superior para criar um cluster de frota de instâncias, vários tipos de instância personalizadosAMIs, primário sob demanda, núcleo sob demanda, vários núcleos e nós de tarefas
aws emr create-cluster --instance-fleets InstanceFleetType=PRIMARY,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge, CustomAmiId=ami-123456}'] InstanceFleetType=CORE,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-234567},{InstanceType=m6g.xlarge, CustomAmiId=ami-345678}'] InstanceFleetType=TASK,TargetSpotCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-456789},{InstanceType=m6g.xlarge, CustomAmiId=ami-567890}']
exemplo - Use a AWS CLI versão 1.20.21 ou superior para adicionar nós de tarefas a um cluster em execução com vários tipos de instância e vários personalizados AMIs
aws emr create-cluster --instance-fleets InstanceFleetType=PRIMARY,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge, CustomAmiId=ami-123456}'] InstanceFleetType=CORE,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-234567},{InstanceType=m6g.xlarge, CustomAmiId=ami-345678}'] { "ClusterId": "j-123456", ... } aws emr add-instance-fleet --cluster-id j-123456 --instance-fleet InstanceFleetType=TASK,TargetSpotCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-234567},{InstanceType=m6g.xlarge, CustomAmiId=ami-345678}']
Gerenciando atualizações AMI do repositório de pacotes
Na primeira inicialização, por padrão, o Amazon Linux AMIs se conecta aos repositórios de pacotes para instalar atualizações de segurança antes que outros serviços sejam iniciados. Dependendo dos seus requisitos, você pode optar por desativar essas atualizações ao especificar uma personalização AMI para a AmazonEMR. A opção de desativar esse recurso está disponível somente quando você usa um personalizadoAMI. Por padrão, as atualizações de kernel do Amazon Linux e de outros pacotes de software que exigem uma reinicialização não são atualizados. Observe que sua configuração de rede deve permitir HTTP e HTTPS acessar os repositórios do Amazon Linux no Amazon S3, caso contrário, as atualizações de segurança não serão bem-sucedidas.
Atenção
É altamente recomendável que você opte por atualizar todos os pacotes instalados na reinicialização ao especificar um personalizadoAMI. Se os pacotes de atualização não forem atualizados, poderá haver riscos de segurança adicionais.
Com o AWS Management Console, você pode selecionar a opção de desativar as atualizações ao escolher Personalizado AMI.
Com o AWS CLI, você pode especificar --repo-upgrade-on-boot NONE
junto com --custom-ami-id
ao usar o create-cluster comando.
Com a Amazon EMRAPI, você pode especificar NONE
o RepoUpgradeOnBootparâmetro.
Criação de um volume personalizado AMI com um dispositivo EBS raiz criptografado da Amazon
Para criptografar o volume do dispositivo EBS raiz Amazon de um Amazon Linux AMI para AmazonEMR, copie uma imagem instantânea de um destino não criptografado AMI para um destino criptografado. Para obter informações sobre a criação de EBS volumes criptografados, consulte a EBScriptografia da Amazon no Guia EC2 do usuário da Amazon. A origem AMI do snapshot pode ser o Amazon Linux básicoAMI, ou você pode copiar um snapshot de um AMI derivado do Amazon Linux básico AMI que você personalizou.
nota
A partir da EMR versão 5.24.0 da Amazon, você pode usar uma opção de configuração de segurança para criptografar o dispositivo EBS raiz e os volumes de armazenamento ao especificar AWS KMS como seu provedor de chaves. Para obter mais informações, consulte Criptografia de disco local.
Você pode usar um provedor de chave externo ou uma AWS KMS chave para criptografar o volume EBS raiz. A função de serviço que a Amazon EMR usa (geralmente a padrãoEMR_DefaultRole
) deve ter permissão para criptografar e descriptografar o volume, no mínimo, para que EMR a Amazon crie um cluster com o. AMI Ao usar AWS KMS como provedor de chaves, isso significa que as seguintes ações devem ser permitidas:
-
kms:encrypt
-
kms:decrypt
-
kms:ReEncrypt*
-
kms:CreateGrant
-
kms:GenerateDataKeyWithoutPlaintext"
-
kms:DescribeKey"
A maneira mais simples de fazer isso é adicionar o perfil como um usuário de chave, conforme descrito no seguinte tutorial. O exemplo a seguir de declaração de política é fornecido caso você precise personalizar as políticas de função.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EmrDiskEncryptionPolicy", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:CreateGrant", "kms:GenerateDataKeyWithoutPlaintext", "kms:DescribeKey" ], "Resource": [ "*" ] } ] }
Tutorial: Criando um volume personalizado AMI com um dispositivo raiz criptografado usando uma KMS chave
A primeira etapa neste exemplo é encontrar ARN a KMS chave ou criar uma nova. Para obter mais informações sobre como criar chaves, consulte Creating keys no Guia do desenvolvedor do AWS Key Management Service . O procedimento a seguir mostra como adicionar a função de serviço padrão, EMR_DefaultRole
, como um usuário e chave à política de chave. Anote o ARNvalor da chave ao criá-la ou editá-la. Você usa o ARN superior, quando você cria AMI o.
Para adicionar a função de serviço da Amazon EC2 à lista de usuários de chaves de criptografia com o console
-
Faça login no console AWS Management Console e abra o AWS Key Management Service (AWS KMS) em https://console.aws.amazon.com/kms
. -
Para alterar o Região da AWS, use o seletor de região no canto superior direito da página.
-
Escolha o alias da KMS chave a ser usada.
-
Na página de detalhes da chave, em Key Users (Usuários de chaves), escolha Add (Adicionar).
-
Na caixa de diálogo Anexar, escolha a função EMR de serviço da Amazon. O nome da função padrão é
EMR_DefaultRole
. -
Escolha Anexar.
Para criar um criptografado AMI com o AWS CLI
-
Use o
aws ec2 copy-image
comando do AWS CLI para criar um AMI com um volume de dispositivo EBS raiz criptografado e a chave que você modificou. Substitua o--kms-key-id
valor especificado pela totalidade ARN da chave que você criou ou modificou para baixo.nota
Os caracteres de continuação de linha do Linux (\) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).
aws ec2 copy-image --source-image-id
MyAmiId
\ --source-regionus-west-2
--nameMyEncryptedEMRAmi
\ --encrypted --kms-key-idarn:aws:kms:us-west-2:12345678910:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
A saída do comando fornece o ID do AMI que você criou, que você pode especificar ao criar um cluster. Para obter mais informações, consulte Use um único personalizado AMI em um EMR cluster. Você também pode optar por personalizar isso AMI instalando o software e executando outras configurações. Para obter mais informações, consulte Criação de um Amazon Linux personalizado AMI a partir de uma instância pré-configurada.
Práticas recomendadas e considerações
Ao criar um personalizado AMI para a AmazonEMR, considere o seguinte:
-
A série Amazon EMR 7.x é baseada no Amazon Linux 2023. Para essas EMR versões da Amazon, você precisa usar imagens baseadas no Amazon Linux 2023 para personalizaçãoAMIs. Para encontrar uma base personalizadaAMI, consulte Encontrando um Linux AMI.
-
Para EMR versões da Amazon inferiores a 7.x, o Amazon Linux 2023 não AMIs é suportado.
-
O Amazon EMR 5.30.0 e superior e a série Amazon EMR 6.x são baseados no Amazon Linux 2. Para essas EMR versões da Amazon, você precisa usar imagens baseadas no Amazon Linux 2 para personalizaçãoAMIs. Para encontrar uma base personalizadaAMI, consulte Encontrando um Linux AMI.
-
Para EMR versões da Amazon inferiores a 5.30.0 e 6.x, o Amazon Linux 2 não AMIs é suportado.
-
Você deve usar um Amazon Linux de 64 bitsAMI. Não AMI há suporte para 32 bits.
-
O Amazon Linux AMIs com vários EBS volumes da Amazon não é suportado.
-
Baseie sua personalização no EBS Amazon
Linux mais recente com suporte. AMI Para obter uma lista do Amazon Linux AMIs e seus correspondentes AMIIDs, consulte Amazon Linux AMI . -
Não copie um snapshot de uma EMR instância existente da Amazon para criar uma personalizadaAMI. Isto provoca erros.
-
Somente o tipo de HVM virtualização e as instâncias compatíveis com a Amazon EMR são compatíveis. Certifique-se de selecionar a HVM imagem e um tipo de instância compatível com a Amazon EMR ao passar pelo processo de AMI personalização. Para conhecer os tipos de virtualização e instâncias compatíveis, consulte Tipos de instância compatíveis com a Amazon EMR.
-
Sua função de serviço deve ter permissões de lançamento noAMI, portanto, ela AMI deve ser pública ou você deve ser o proprietário da AMI ou compartilhá-la com você pelo proprietário.
-
Criar usuários no AMI com o mesmo nome dos aplicativos causa erros (por exemplo,
hadoop
,hdfs
,yarn
, ouspark
). -
O conteúdo de
/tmp
,/var
, e/emr
(se existirem noAMI) é movido para/mnt/tmp
/mnt/var
, e/mnt/emr
respectivamente durante a inicialização. Os arquivos são preservados, mas, se houver uma grande quantidade de dados, a inicialização poderá demorar mais do que o esperado. Se você usa um Amazon Linux personalizado AMI baseado em um Amazon Linux AMI com uma data de criação de 11/08/2018, o servidor Oozie falhará ao iniciar. Se você usa o Oozie, crie um personalizado AMI com base em um Amazon Linux AMI ID com uma data de criação diferente. Você pode usar o AWS CLI comando a seguir para retornar uma lista de imagens IDs para todo o HVM Amazon Linux AMIs com uma versão 2018.03, junto com a data de lançamento, para que você possa escolher um Amazon Linux apropriado AMI como base. MyRegion Substitua pelo seu identificador de região, como us-west-2.
aws ec2 --region
MyRegion
describe-images --owner amazon --query 'Images[?Name!=`null`]|[?starts_with(Name, `amzn-ami-hvm-2018.03`) == `true`].[CreationDate,ImageId,Name]' --output text | sort -rk1-
Nos casos em que você usa um VPC com um nome de domínio não padrão e AmazonProvidedDNS, você não deve usar a
rotate
opção na DNS configuração de sistemas operacionais. -
Se você criar uma personalização AMI que inclua o agente Amazon EC2 Systems Manager (SSM), o SSM agente habilitado poderá causar um erro de provisionamento no cluster. Para evitar isso, desative o SSM agente ao usar um personalizadoAMI. Para fazer isso, ao escolher e iniciar sua EC2 instância da Amazon, desative o SSM agente antes de usar a instância para criar uma instância personalizada AMI e, posteriormente, criar seu EMR cluster.
Para obter mais informações, consulte Criação de um Linux EBS com suporte da Amazon AMI no Guia do EC2 usuário da Amazon.