Equivalente ao comando 'top' em um cluster EMR?

1

Eu tenho um cluster EMR de três instâncias em execução na AWS e ele está respondendo muito lentamente no momento.

Ao verificar o painel do Hadoop na porta 8088 com meu navegador, vejo "Memória usada: 203,5 GB" e "Memória disponível: 214 GB". Eu assumo que o problema está lá: Toda a RAM está ocupada atualmente.

Como posso descobrir qual aplicativo está sendo executado e acumulando toda a RAM? Existe algo como o comando top para um cluster? Quando eu SSH para o nó mestre e verifique top e free -g , a saída sugere que > 50% da RAM ainda está disponível, e isso contradiz a saída do relatório da web da porta 8088.

    
por Alexander Engelhardt 24.05.2018 / 09:30

2 respostas

1

A Amazon já fornece uma interface da Web com estatísticas em seu cluster EMR, basta acessar:

link

Escolha o link do cluster em Nome para abrir uma página de detalhes do cluster para o cluster. Use cada guia para visualizar informações relevantes.

Por exemplo, você pode encontrar detalhes da tarefa para um aplicativo Spark acessando Application history e, em seguida, selecionando Application id e expandindo a linha. Mais detalhes: link

    
por 24.05.2018 / 09:57
0

Primeiro, alguns detalhes sobre métricas:

As métricas "memória usada" e "memória disponível" da UI do YARN que você mencionou indicam o uso de memória nos processos YARN, não os hosts usados pelos ResourceManagers do YARN.

você tem 3 nós no cluster, com mais de 64 GB cada (bc 64 * 3 < 214) digamos 128 GB, no entanto, o YARN é configurado para usar ~ 71 GB (214/3). (Sugiro que os números estão incorretos, mas é apenas um exemplo). Para cada nó, todos os processos nele usam cerca de 50% da RAM, no entanto, seu aplicativo usa quase toda a RAM disponível para o YARN no cluster.

Segundo: É totalmente aceitável usar o máximo possível de memória do cluster, a menos que seu cluster atenda às suas necessidades e você não planeje fazer mais carga sem a reconfiguração do cluster. É necessário apenas monitorar as métricas reais dos hosts abaixo, porque a execução de JVMs também precisa de RAM de host livre para sobrecarga, armazenamento fora do ar e assim por diante.

Em terceiro lugar, sugestões sobre o seu caso:

parece que seus nós não são muito usados (carregados). Em comum, 80% de uso é o que você deseja obter para sua infraestrutura (RAM, CPU, etc). Então, você poderia considerar mover para nós menores, mas com um pouco mais deles. Nós menores terminariam com menos quantidade de dados, maior paralelismo e provavelmente acelerando o processamento por menos dinheiro.

    
por 16.06.2018 / 15:17