Todos os produtos
Search
Central de documentação

E-MapReduce:Perguntas frequentes

Última atualização: Jun 27, 2026

Por que meu serviço ZooKeeper está instável ou reiniciando inesperadamente?

A causa mais comum é o excesso de znodes ou snapshots muito grandes. O ZooKeeper mantém todos os znodes na memória e sincroniza dados entre eles. Se qualquer um desses limites for ultrapassado, a pressão sobre a memória torna o serviço instável ou provoca falhas.

O ZooKeeper é um serviço de coordenação distribuída, não um sistema de arquivos. Caso a quantidade de znodes esteja chegando à casa das centenas de milhares, verifique se as aplicações upstream estão gravando no ZooKeeper além da finalidade prevista.

Mantenha-se dentro dos seguintes limites:

Recurso

Limite recomendado

Quantidade de znodes

Menos de 100.000

Tamanho do snapshot

Inferior a 800 MB por snapshot

Para verificar a quantidade de znodes, acesse a aba Monitoring na página de detalhes do cluster no console E-MapReduce (EMR).

Para verificar o tamanho dos snapshots:

  1. Na aba Configure da página do serviço ZooKeeper, pesquise por dataDir para localizar o caminho do diretório de dados.

  2. Execute o comando abaixo para listar os arquivos de snapshot e seus respectivos tamanhos:

    ls -lrt /mnt/disk1/zookeeper/data/version-2/snapshot*

Se algum limite for excedido, analise a distribuição dos znodes e interrompa as aplicações upstream que estiverem gravando excessivamente no ZooKeeper, com base nessa distribuição.

O que fazer ao receber o erro "Too many connections"?

Quando um processo que utiliza um cliente ZooKeeper reporta o erro "Too many connections", isso pode indicar que o número de conexões originadas pelo cliente ultrapassou o limite permitido.

Na aba maxClientCnxns do serviço ZooKeeper, pesquise e modifique o valor do parâmetro Configuration. Esse parâmetro limita o número de conexões entre cada nó do ZooKeeper e um único endereço IP de cliente. Aumente esse valor conforme necessário e reinicie o serviço ZooKeeper para que a alteração tenha efeito.

Caso o problema persista após o ajuste do parâmetro maxClientCnxns, monitore o número de conexões na página de status do ZooKeeper. Se a quantidade de conexões aumentar continuamente, inspecione o processo que usa o cliente ZooKeeper em busca de problemas. Por exemplo, o processo pode não estar liberando corretamente as conexões após o uso. Corrija quaisquer problemas identificados para garantir o funcionamento adequado do processo cliente do ZooKeeper.

Como migrar o diretório de dados do ZooKeeper sem interromper o serviço?

Se o espaço em disco acabar ou o desempenho do disco degradar, migre o diretório de dados do ZooKeeper para um novo caminho. Processe primeiro os followers e depois o leader — essa abordagem mantém o conjunto ZooKeeper disponível durante toda a migração.

O exemplo a seguir migra o diretório de /mnt/disk1/zookeeper para /mnt/disk2/zookeeper. Neste cluster, master-1-2 é o leader, enquanto master-1-1 e master-1-3 são followers.

Etapa 1: Atualize a configuração do diretório de dados

  1. Na aba maxClientCnxns da página do serviço ZooKeeper, pesquise por dataDir e altere seu valor para /mnt/disk2/zookeeper.

  2. Clique em Configure.

  3. Na caixa de diálogo Save, preencha Execution Reason e clique em Save.

Etapa 2: Implante a configuração atualizada

  1. No canto superior direito da aba Save, clique em Configure.

  2. Na caixa de diálogo, preencha Execution Reason e clique em Deploy Client Configuration.

  3. Na mensagem de confirmação, clique em OK.

Etapa 3: (Opcional) Verifique o novo diretório de dados

  1. Faça login no cluster EMR via SSH. Para mais informações, consulte Fazer login em um cluster.

  2. Execute o comando a seguir e confirme se dataDir aponta para /mnt/disk2/zookeeper:

    cat /etc/emr/zookeeper-conf/zoo.cfg

Etapa 4: Migre os dados em cada nó

Execute o procedimento abaixo primeiro em master-1-1 e master-1-3 (followers) e, em seguida, em master-1-2 (leader).

Para cada nó:

  1. Na aba Status da página do serviço ZooKeeper, localize o nó e clique em Stop na coluna Actions. Preencha Execution Reason, clique em OK e, em seguida, clique novamente em OK.

  2. Acesse o nó master via SSH. Execute o comando abaixo para copiar o diretório de dados e defina as permissões corretas:

    sudo rm -rf /mnt/disk2/zookeeper && sudo cp -rf /mnt/disk1/zookeeper /mnt/disk2/zookeeper && sudo chown hadoop:hadoop -R /mnt/disk2/zookeeper
  3. Na aba Status, localize o nó e clique em Start na coluna Actions. Preencha Execution Reason, clique em OK e, em seguida, clique novamente em OK.

  4. Atualize a página até que Health Status exiba Healthy para o nó antes de prosseguir para o próximo.

Nota

Após parar o master-1-2 (o leader original), ele passa a atuar como follower, e o master-1-1 ou master-1-3 assume como o novo leader.

A migração estará concluída quando todos os nós apresentarem Health Status como Healthy.