Porta de bloqueio do processo de zumbis ao reiniciar o Namenode do Hadoop (secundário)

1

Estou tendo problemas estranhos com o Namenode Hadoop Namenode e Hadoop. Nosso cluster HDFS é executado sem problemas na maioria das vezes. Mas de vez em quando, o Namenode Primário congela (colidindo com todo o cluster) ou o Namenode Secundário congela e pára de fazer checkpoints.

Sempre que isso acontece, tento reiniciar o serviço de interrupção, que falha porque a porta ainda está bloqueada:

# service hadoop-namenode restart
 * Stopping Hadoop namenode: 
no namenode to stop
 * Starting Hadoop namenode: 
starting namenode, logging to /var/log/hadoop/hadoop-hdfs-namenode-HOST.out
Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 26100; nested exception is: 
        java.net.BindException: Address already in use

No entanto, verificando a saída de ps auxw , nenhum Namenode está sendo executado. Verificando qual processo está bloqueando a porta:

# netstat -tulpen | grep 26100
tcp        0      0 0.0.0.0:26100           0.0.0.0:*               LISTEN      6001       20067       -

que não é de todo útil. Diz, a porta está em uso, mas o processo é - .

ss não é mais útil:

# ss -apne | grep 26100
tcp    LISTEN     34     50                     *:26100                 *:*      uid:6001 ino:20067 sk:000015c1 <->
tcp    CLOSE-WAIT 224    0              127.0.0.1:26100         127.0.0.1:56770  ino:0 sk:00000527 -->
...
tcp    CLOSE-WAIT 13     0              127.0.0.1:26100         127.0.0.1:56762  ino:0 sk:0000078f -->
tcp    CLOSE-WAIT 17     0              127.0.0.1:26100         127.0.0.1:56772  ino:0 sk:000007b1 -->

A única coisa que ambos os comandos me dizem é que o processo é de propriedade do UID 6001, que é o usuário hdfs . Verificando ps auxw para qualquer processo pertencente a hdfs , vejo que há um processo de zumbi:

hdfs      4947  4.8  0.0      0     0 ?        Zl   Feb23 435:50 [java] <defunct>

Portanto, por qualquer motivo, reiniciar o serviço Namenode deixa um zumbi que continua bloqueando a porta. Infelizmente, não há como me livrar desse processo porque o único processo pai é init :

# pstree -ps 4947
init(1)───java(4947)───{java}(9957)

A única solução alternativa é reiniciar o sistema operacional (fora de questão) ou usar temporariamente outra porta do Namenode (ou Seconden Namenode).

Você tem alguma idéia de qual é o motivo desse bug estranho? Não encontrei nenhuma sugestão em dmesg .

O cluster tem 130 nós, cada um executando o Ubuntu 14.04 Trusty com o Kernel 4.2.0-30-generic # 35 ~ 14.04.1-Ubuntu. A versão do Hadoop é 2.7.1.

    
por Janek Bevendorff 29.02.2016 / 17:41

0 respostas