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á.
Configurar o Docker para uso com clusters do Amazon EMR
O Amazon EMR 6.x é compatível com o Hadoop 3, o que permite que o YARN lance contêineres NodeManager diretamente no cluster do Amazon EMR ou dentro de um contêiner Docker. Os contêineres do Docker fornecem ambientes de execução personalizados nos quais o código do aplicativo é executado. O ambiente de execução personalizado é isolado do ambiente de execução do YARN NodeManager e de outros aplicativos.
Os contêineres do Docker podem incluir bibliotecas especiais usadas pelo aplicativo e podem fornecer diferentes versões de ferramentas e bibliotecas nativas, como R e Python. É possível usar ferramentas familiares do Docker para definir bibliotecas e dependências de runtime para as aplicações.
Os clusters do Amazon EMR 6.x são configurados por padrão para permitir que aplicações do YARN, como o Spark, sejam executadas usando contêineres do Docker. Para personalizar a configuração do contêiner, edite as opções de suporte do Docker definidas nos arquivos yarn-site.xml
e container-executor.cfg
disponíveis no diretório /etc/hadoop/conf
. Para obter detalhes sobre cada opção de configuração e como ela é usada, consulte Launching applications using Docker containers
É possível optar por usar o Docker ao enviar um trabalho. Use as variáveis a seguir para especificar o runtime do Docker e a imagem do Docker.
YARN_CONTAINER_RUNTIME_TYPE=docker
YARN_CONTAINER_RUNTIME_DOCKER_IMAGE={
DOCKER_IMAGE_NAME
}
Quando você usa contêineres do Docker para executar os aplicativos do YARN, o YARN faz download da imagem do Docker especificada ao enviar o trabalho. Para que o YARN resolva essa imagem do Docker, ela deve ser configurada com um registro do Docker. As opções de configuração de um registro do Docker dependem se você implanta o cluster usando uma sub-rede pública ou privada.
Registros do Docker
Um registro do Docker é um sistema de armazenamento e distribuição de imagens do Docker. Para o Amazon EMR, é recomendável usar o Amazon ECR, que é um registro de contêiner do Docker totalmente gerenciado que permite criar suas próprias imagens personalizadas e hospedá-las em uma arquitetura altamente disponível e escalável.
Considerações de implantação
Os registros do Docker exigem acesso à rede de cada host no cluster. Isso ocorre porque cada host faz download de imagens do registro do Docker quando o aplicativo do YARN está sendo executado no cluster. Esses requisitos de conectividade de rede podem limitar sua escolha de registro do Docker, dependendo se você implanta o cluster do Amazon EMR em uma sub-rede pública ou privada.
Public subnet (Sub-rede pública)
Quando os clusters do EMR são implantados em uma sub-rede pública, os nós que executam o YARN NodeManager podem acessar diretamente qualquer registro disponível na Internet.
Sub-rede privada
Quando os clusters do EMR são implantados em uma sub-rede privada, os nós que executam o YARN NodeManager não têm acesso direto à Internet. As imagens do Docker podem ser hospedadas no Amazon ECR e acessadas por meio de. AWS PrivateLink
Para obter mais informações sobre como usar AWS PrivateLink para permitir o acesso ao Amazon ECR em um cenário de sub-rede privada, consulte Configuração do AWS PrivateLink Amazon ECS e do Amazon ECR
Configurar registros do Docker
Para usar registros do Docker com o Amazon EMR, é necessário configurar o Docker para confiar no registro específico que você deseja usar para resolver imagens do Docker. Os registros de confiança padrão são locais (privados) e centOS. Para usar outros repositórios públicos ou o Amazon ECR, é possível substituir as configurações docker.trusted.registries
em /etc/hadoop/conf/container-executor.cfg
usando a API de classificação do EMR com a chave de classificação container-executor
.
O exemplo a seguir mostra como configurar o cluster para confiar em um repositório público, chamado your-public-repo
, e um endpoint de registro do ECR, 123456789123.dkr.ecr.us-east-1.amazonaws.com
. Se você usar o ECR, substitua esse endpoint pelo seu endpoint do ECR específico.
[ { "Classification": "container-executor", "Configurations": [ { "Classification": "docker", "Properties": { "docker.trusted.registries": "local,centos,
your-public-repo
,123456789123.dkr.ecr.us-east-1.amazonaws.com", "docker.privileged-containers.registries": "local,centos,your-public-repo,123456789123.dkr.ecr.us-east-1.amazonaws.com" } } ] } ]
Para iniciar um cluster do Amazon EMR 6.0.0 com essa configuração usando o AWS Command Line Interface (AWS CLI), crie um arquivo nomeado container-executor.json
com o conteúdo da configuração JSON anterior do executor de contêineres. Depois, use os comandos a seguir para executar o cluster.
export KEYPAIR=<
Name of your Amazon EC2 key-pair
> export SUBNET_ID=<ID of the subnet to which to deploy the cluster
> export INSTANCE_TYPE=<Name of the instance type to use
> export REGION=<Region to which to deploy the cluster
> aws emr create-cluster \ --name "EMR-6.0.0" \ --region $REGION \ --release-label emr-6.0.0 \ --applications Name=Hadoop Name=Spark \ --service-role EMR_DefaultRole \ --ec2-attributes KeyName=$KEYPAIR,InstanceProfile=EMR_EC2_DefaultRole,SubnetId=$SUBNET_ID \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=$INSTANCE_TYPE InstanceGroupType=CORE,InstanceCount=2,InstanceType=$INSTANCE_TYPE \ --configuration file://container-executor.json
Configurar o YARN para acessar o Amazon ECR no EMR 6.0.0 e versões anteriores
Se você está começando a usar o Amazon ECR agora, siga as instruções em Como começar a usar o Amazon ECR e verifique se você tem acesso ao Amazon ECR de cada instância no cluster do Amazon EMR.
No EMR 6.0.0 e versões anteriores, para acessar o Amazon ECR usando o comando do Docker, é necessário primeiro gerar credenciais. Para verificar se o YARN pode acessar imagens do Amazon ECR, use a variável de ambiente do contêiner YARN_CONTAINER_RUNTIME_DOCKER_CLIENT_CONFIG
para transmitir uma referência às credenciais geradas.
Execute o comando a seguir em um dos nós core para obter a linha de login da conta do ECR.
aws ecr get-login --region us-east-1 --no-include-email
O comando get-login
gera o comando correto da CLI do Docker que deve ser executado para criar credenciais. Copie e execute a saída de get-login
.
sudo docker login -u AWS -p <
password
> https://<account-id
>.dkr.ecr.us-east-1.amazonaws.com
Esse comando gera um arquivo config.json
na pasta /root/.docker
. Copie esse arquivo para o HDFS para que os trabalhos enviados ao cluster possam usá-lo a fim de fazer a autenticação no Amazon ECR.
Execute os comandos a seguir para copiar o arquivo config.json
no diretório inicial.
mkdir -p ~/.docker sudo cp /root/.docker/config.json ~/.docker/config.json sudo chmod 644 ~/.docker/config.json
Execute os comandos a seguir para colocar o config.json no HDFS para que ele possa ser usado por trabalhos em execução no cluster.
hadoop fs -put ~/.docker/config.json /user/hadoop/
O YARN pode acessar o ECR como um registro de imagem do Docker e extrair contêineres durante a execução do trabalho.
Depois de configurar os registros do Docker e o YARN, é possível executar aplicativos do YARN usando contêineres do Docker. Para obter mais informações, consulte Run Spark applications with Docker using Amazon EMR 6.0.0.
No EMR 6.1.0 e versões posteriores, não é necessário configurar a autenticação no Amazon ECR manualmente. Se um registro do Amazon ECR for detectado na chave de classificação container-executor
, o atributo de autenticação automática do Amazon ECR será ativado, e o YARN gerenciará o processo de autenticação quando você enviar um trabalho do Spark com uma imagem do ECR. Você pode confirmar se a autenticação automática está habilitada verificando yarn.nodemanager.runtime.linux.docker.ecr-auto-authentication.enabled
em yarn-site. A autenticação automática está habilitada e a configuração de autenticação do YARN está definida como true
se docker.trusted.registries
contém um URL de registro do ECR.
Pré-requisitos para usar a autenticação automática no Amazon ECR
EMR versão 6.1.0 ou posterior
O registro ECR incluído na configuração está na mesma região do cluster
Perfil do IAM com permissões para obter o token de autorização e extrair qualquer imagem
Para obter mais informações, consulte Configuração com o Amazon ECR.
Como habilitar a autenticação automática
Siga Configurar registros do Docker para definir um registro do Amazon ECR como registro confiável e garantir que o repositório do Amazon ECR e o cluster estejam na mesma região.
Para habilitar esse atributo mesmo quando o registro ECR não estiver definido no registro confiável, use a classificação de configuração para definir yarn.nodemanager.runtime.linux.docker.ecr-auto-authentication.enabled
como true
.
Como desabilitar a autenticação automática
Por padrão, a autenticação automática é desabilitada se nenhum registro do Amazon ECR for detectado no registro confiável.
Para desabilitar a autenticação automática, mesmo quando o registro do Amazon ECR estiver definido no registro confiável, use a classificação de configuração para definir yarn.nodemanager.runtime.linux.docker.ecr-auto-authentication.enabled
como false
.
Como verificar se a autenticação automática está habilitada em um cluster
No nó principal, use um editor de texto, como vi
, para visualizar o conteúdo do arquivo de log: vi /etc/hadoop/conf.empty/yarn-site.xml
. Verifique o valor de yarn.nodemanager.runtime.linux.docker.ecr-auto-authentication.enabled
.