A partir das versões 3.49.0 e 5.15.0 do EMR, o serviço define dinamicamente os valores padrão de memória para componentes do YARN durante a criação do cluster, com base nos tipos de instância selecionados e nos serviços implantados. Após criar o cluster, ajuste esses valores no console do EMR.
Se os componentes do YARN receberem menos memória que o esperado após a inicialização do cluster, verifique dois pontos:
Quantidade de serviços implantados no cluster. O EMR distribui a memória disponível entre todos os serviços ativos; portanto, quanto mais serviços, menor a memória destinada a cada componente.
Especificações das instâncias do Elastic Compute Service (ECS) no grupo de nós. Verifique se atendem aos requisitos de memória de todos os serviços implantados.
Tamanho da memória heap para componentes do YARN
Na aba Configure da página de serviço do YARN no console do EMR, defina os parâmetros abaixo em yarn-env.sh ou mapred-env.sh. Todos os parâmetros têm efeito no nível do cluster e exigem reinicialização do componente para aplicação.
|
Componente |
Parâmetro |
Arquivo de configuração |
Quando ajustar |
Restrições |
|
ResourceManager |
|
yarn-env.sh |
Alto volume de jobs pequenos causa lentidão no ResourceManager |
Valor mínimo: 1024. Reinicie o ResourceManager para aplicar. |
|
NodeManager |
|
yarn-env.sh |
Coleta de lixo completa (GC) ocorre porque o Shuffle Service ocupa memória excessiva do NodeManager |
Reinicie o NodeManager para aplicar. |
|
WebAppProxyServer |
|
yarn-env.sh |
Valor padrão insuficiente |
Reinicie o WebAppProxyServer para aplicar. |
|
TimelineServer |
|
yarn-env.sh |
Valor padrão insuficiente |
Reinicie o TimelineServer para aplicar. |
|
TimelineServer |
|
yarn-env.sh |
Pressão de memória direta no TimelineServer |
Valor mínimo: 512m. Reinicie o TimelineServer para aplicar. |
|
MRHistoryServer |
|
mapred-env.sh |
Valor padrão insuficiente |
Reinicie o MRHistoryServer para aplicar. |
Configuração de recursos do cluster para o YARN
Na aba Configure da página de serviço do YARN no console do EMR, configure os seguintes parâmetros de yarn-site.xml.
Limites de alocação do agendador
Estes parâmetros aplicam-se no nível do cluster e controlam os limites máximo e mínimo de recursos por contêiner. As alterações exigem reinicialização do ResourceManager.
|
Parâmetro |
Descrição |
Padrão |
Quando ajustar |
|
|
Memória máxima que um único contêiner pode solicitar ao agendador |
— |
Aumente para cargas de trabalho que enviam jobs grandes em contêineres únicos. Valores excessivamente altos podem causar fragmentação de recursos. |
|
|
Memória mínima que um único contêiner pode solicitar ao agendador |
— |
Raramente requer ajuste. |
|
|
Número máximo de vCPUs que um único contêiner pode solicitar ao agendador |
32 |
Aumente para cargas de trabalho que enviam jobs grandes em contêineres únicos. Valores excessivamente altos podem causar fragmentação de recursos. |
|
|
Número mínimo de vCPUs que um único contêiner pode solicitar ao agendador |
1 |
Raramente requer ajuste. |
Limites de recursos do NodeManager
Estes parâmetros aplicam-se no nível do grupo de nós. Ao configurá-los, selecione Node group level configuration no console do EMR; caso contrário, a alteração não terá efeito. O EMR suporta tipos de instância mistos entre grupos de nós, mas todas as instâncias ECS dentro de um mesmo grupo compartilham o mesmo tipo. Configurar os recursos do NodeManager no nível do grupo de nós evita sobrecarga em nós menores e subutilização em nós maiores.
|
Parâmetro |
Descrição |
Padrão |
Quando ajustar |
|
|
Memória física total disponível para o NodeManager alocar aos contêineres |
Definido na criação do cluster com base no tipo de instância |
Configure conforme a implantação do seu cluster. Reinicie o NodeManager para aplicar. |
|
|
Total de vCPUs disponíveis para o NodeManager alocar aos contêineres |
Número de vCPUs do tipo de instância. Para tipos de instância com alta memória, o padrão é o dobro da contagem de vCPUs de um tipo de instância com memória regular. |
Ajuste conforme as características da carga de trabalho. Reinicie o NodeManager para aplicar. |
Relação entre a memória do agendador e do NodeManager
O valor de yarn.scheduler.maximum-allocation-mb deve ser maior que yarn.nodemanager.resource.memory-mb para garantir o agendamento correto dos jobs.
Observe os pontos abaixo ao gerenciar esses dois parâmetros:
O EMR permite configurar ambos os parâmetros durante a criação do cluster ou ao escalar horizontalmente adicionando um grupo de nós pela primeira vez.
Ao atualizar as especificações da instância de um grupo de nós ou alterar manualmente o
yarn.nodemanager.resource.memory-mb, o parâmetroyarn.scheduler.maximum-allocation-mbnão é atualizado automaticamente. Atualize-o manualmente conforme necessário.Ao configurar o
yarn.scheduler.maximum-allocation-mbpela primeira vez para um novo grupo de nós, o ResourceManager não é reiniciado automaticamente. Reinicie manualmente o ResourceManager para aplicar a alteração.
Reiniciar o ResourceManager pode causar falhas em jobs em execução. Execute a reinicialização fora dos horários de pico.