在ubuntu 16.04下运行hadoop时注销

时间:2016-07-17 07:56:19

标签: hadoop ubuntu-16.04

我在ubuntu 16.04下在伪群集和群集模式下运行hadoop作业时遇到一些麻烦。

在运行vanila hadoop / hdfs安装时 - 我的hadoop用户得到了 注销,此用户运行的所有进程都将关闭。 我没有在日志中看到任何指示(/ var / log / systemd,journalctl或 dmesg)解释了用户登出的原因。

似乎我不是唯一一个遇到此问题或类似问题的人:

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

注意:创建特殊的hadoop用户实际上并没有解决我的问题 - 但是限制了注销到专用用户。

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

UserGroupInformation类可能存在一些问题 (在某些情况下会导致注销),在ubuntu 16.04中systemd中的某些更改可能会导致此行为吗?

我在注销前获得的hadoop日志的最后一行:

...
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
hduser@laptop:~$ 16/07/13 16:45:37 DEBUG ipc.Client: stopping client from
cache: org.apache.hadoop.ipc.Client@4e7ab839
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.

系统日志:

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.

3 个答案:

答案 0 :(得分:5)

我也有问题。花了我一些时间,但我在这里找到了解决方案:https://unix.stackexchange.com/questions/293069/all-services-of-a-user-are-killed-when-running-multiple-services-under-this-user

基本上,一些hadoop进程就停止了,因为为什么不呢。但是当看到服务进程死亡时,systemd似乎会杀死所有用户的进程。

修复是添加

Array
(
    ...

    [yml] => Symfony\Component\Translation\Loader\YamlFileLoader Object
        (
            [yamlParser:Symfony\Component\Translation\Loader\YamlFileLoader:private] => 
        )

    [xlf] => Symfony\Component\Translation\Loader\XliffFileLoader Object
        (
        )

    [xliff] => Symfony\Component\Translation\Loader\XliffFileLoader Object
            (
            )
    ...
)

[login] KillUserProcesses=no 并重启。

我有多个ubuntu的版本来调试问题,修复似乎只适用于ubuntu 16.04。

答案 1 :(得分:3)

我也有同样的问题。最后,我发现/bin/kill in ubuntu16.04 has bug in killing process group可以解决这个问题。

  

如果 pid 小于-1,则 sig 会发送到ID为 -pid 的流程组中的每个流程 p>

由于procps-ng-3.3.10中的错误,杀死ID为1的进程组,由bin/yarn application -kill AppID调用,将导致用户注销。

使用从procps-ng-3.3.12编译的新/bin/kill替换kill后问题得以解决。

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 :(得分:3)

我有同样的问题。我使用的是Apache APEX,它是hadoop native。在杀死任何APEX应用程序时,我的系统用来登出我。

解决方案:用Ubuntu 14的kill文件替换Ubuntu 16的kill文件(存在于/ bin / kill中)。

一切顺利,就像升级之前一样。