2016-07-17 235 views
5

Sto avendo qualche problema con l'esecuzione di lavori di Hadoop sia in gruppo pseudo e in modalità cluster con Ubuntu 16.04.disconnessioni durante l'esecuzione di Hadoop sotto Ubuntu 16.04

Durante l'esecuzione di un'installazione vanila hadoop/hdfs, l'utente di hadoop ottiene disconnesso e tutti i processi eseguiti da questo utente vengono chiusi. Non vedo nulla che indichi nei registri (/ var/log/systemd, journalctl o dmesg) che spiega il motivo per cui l'utente viene disconnesso.

Sembra che io non sono l'unico che ha problemi con questo o problema simile:

https://stackoverflow.com/questions/38288162/in-ubuntu-16-04-running-hadoop-jar-laptop-gets-rebooted

Nota: la creazione utente speciale Hadoop non avevano in realtà risolto il problema nel mio caso - ma limitato le disconnessioni per l'utente dedicato.

https://askubuntu.com/questions/784591/ubuntu-16-04-kills-session-when-resource-usage-is-extremely-high

E 'possibile che qualche problema in giro per la classe UserGroupInformation (che può in alcune circostanze causare un logout), con forse alcuni cambiamenti nella systemd in Ubuntu 16.04 può causare questo comportamento?

Le ultime righe di log Hadoop che ricevo prima della disconnessione:

... 
16/07/13 16:45:37 DEBUG ipc.ProtobufRpcEngine: Call: getJobReport took 4ms 
16/07/13 16:45:37 DEBUG security.UserGroupInformation: PrivilegedAction 
as:hduser (auth:SIMPLE) 
from:org.apache.hadoop.mapreduce.Job.updateStatus(Job.java:320) 
16/07/13 16:45:37 DEBUG ipc.Client: IPC Client (1360814716) connection to 
laptop/127.0.1.1:37339 from hduser sending #375 
16/07/13 16:45:37 DEBUG ipc.Client: IPC Client (1360814716) connection to 
laptop/127.0.1.1:37339 from hduser got value #375 
16/07/13 16:45:37 DEBUG ipc.ProtobufRpcEngine: Call: getJobReport took 2ms 
Terminated 
[email protected]:~$ 16/07/13 16:45:37 DEBUG ipc.Client: stopping client from 
cache: [email protected] 
exit 

journalctl:

Jul 12 16:06:44 laptop systemd-logind[978]: Removed session 7. 
Jul 12 16:06:44 laptop systemd-logind[978]: Removed session 6. 
Jul 12 16:06:44 laptop systemd-logind[978]: Removed session 5. 
Jul 12 16:06:44 laptop systemd-logind[978]: Removed session 8. 

syslog:

Jul 12 16:06:43 laptop systemd[4172]: Stopped target Default. 
Jul 12 16:06:43 laptop systemd[4172]: Reached target Shutdown. 
Jul 12 16:06:44 laptop systemd[4172]: Starting Exit the Session... 
Jul 12 16:06:44 laptop systemd[4172]: Stopped target Basic System. 
Jul 12 16:06:44 laptop systemd[4172]: Stopped target Sockets. 
Jul 12 16:06:44 laptop systemd[4172]: Stopped target Paths. 
Jul 12 16:06:44 laptop systemd[4172]: Stopped target Timers. 
Jul 12 16:06:44 laptop systemd[4172]: Received SIGRTMIN+24 from PID 
10101 (kill). 
Jul 12 16:06:44 laptop systemd[1]: Stopped User Manager for UID 1001. 
Jul 12 16:06:44 laptop systemd[1]: Removed slice User Slice of hduser. 

risposta

5

Ho anche avuto il problema. Mi ci è voluto tempo, ma ho trovato la soluzione qui: https://unix.stackexchange.com/questions/293069/all-services-of-a-user-are-killed-when-running-multiple-services-under-this-user

Fondamentalmente, alcuni processi di hadoop si fermano, perché no. Ma systemd sembra uccidere tutti i processi dell'utente quando vede morire il processo di un servizio.

La correzione è quello di aggiungere

[login] 
KillUserProcesses=no 

a /etc/systemd/logind.conf e riavviare.

ho avuto la versione di ubuntu multipla per il debug del problema, e la correzione sembra funziona solo su Ubuntu 16.04.

+0

Ho aggiornato il file logind.conf. Questo ha funzionato sul mio portatile ma non sulla VM che utilizzo. –

3

Ho avuto lo stesso problema anche io. Infine, ho trovato /bin/kill in ubuntu16.04 has bug in killing process group in grado di risolvere questo problema.

Se pid è minore di -1, poi sig viene inviato ad ogni processo nel gruppo processo con ID -pid

causa del problema che procps-ng -3.3.10, uccide il gruppo di processi il cui ID inizia con 1, invocato da bin/yarn application -kill AppID, causerà il logout dell'utente.

Il problema viene risolto dopo la sostituzione di /bin/kill con il nuovo kill compilato da procps-ng-3.3.12.

tar xJf procps-ng-3.3.12.tar.xz 
cd procps-ng-3.3.12 
./configure 
sudo cp .lib/kill /bin/kill 
sudo chown root:root /bin/kill 
sudo cp proc/.libs/libprocps.so.6.0.0 /lib/x86_64-linux/gnu/ 
sudo chown root:root /lib/x86_64-linux-gnu/libprocps.so.6.0.0 
2

Ho avuto lo stesso problema. Stavo usando Apache APEX che è nativo di hadoop. Durante l'uccisione di qualsiasi applicazione APEX, il mio sistema era solito disconnettermi.

Soluzione: Sostituire il file kill (presenti in/bin/kill) di Ubuntu 16 con file di uccidere di Ubuntu 14.

Tutto funziona senza problemi come prima l'aggiornamento per me.