Oozie Shell 操作失败 运行 Docker 容器
Oozie Shell Action fails to run Docker container
在具有 Hadoop 3.0.0-cdh6.2.0 的集群上,我正在尝试通过 Oozie 工作流的 Shell 操作 运行 一个 Docker 容器。
Docker 正确安装在集群的每个节点上。如果我通过 ssh 连接到一个节点并尝试启动 Docker 命令,一切正常。
我想安排我可以用 Oozie 手动做的事情,让它在集群的一个节点上打开一个 shell 和 运行 一些 Docker 命令。
如果我尝试启动一个简单的 Docker 命令,例如
docker ps
或 docker run hello-world
在 shell 操作中或在 Oozie 启动的 bash 脚本中,作业失败,我可以从应用程序日志中检索到的错误是:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.oozie.action.hadoop.LauncherAM.runActionMain(LauncherAM.java:410)
at org.apache.oozie.action.hadoop.LauncherAM.access0(LauncherAM.java:55)
at org.apache.oozie.action.hadoop.LauncherAM.run(LauncherAM.java:223)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875)
at org.apache.oozie.action.hadoop.LauncherAM.run(LauncherAM.java:217)
at org.apache.oozie.action.hadoop.LauncherAM.run(LauncherAM.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875)
at org.apache.oozie.action.hadoop.LauncherAM.main(LauncherAM.java:141)
Caused by: org.apache.oozie.action.hadoop.LauncherMainException
at org.apache.oozie.action.hadoop.ShellMain.run(ShellMain.java:76)
at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:104)
at org.apache.oozie.action.hadoop.ShellMain.main(ShellMain.java:63)
... 16 more
Failing Oozie Launcher, Main Class [org.apache.oozie.action.hadoop.ShellMain], exit code [1]
我尝试在 Stdoutput 中给出预期结果的唯一命令是 docker version
和 docker help
。
我不明白为什么我可以在 shell 上手动执行的操作在 Oozie 启动时不起作用。
脚本 运行 作为用户 oozie
。用户 Oozie 可能没有 运行 docker 操作的权限。将 oozie 添加到 docker
组。
在具有 Hadoop 3.0.0-cdh6.2.0 的集群上,我正在尝试通过 Oozie 工作流的 Shell 操作 运行 一个 Docker 容器。
Docker 正确安装在集群的每个节点上。如果我通过 ssh 连接到一个节点并尝试启动 Docker 命令,一切正常。 我想安排我可以用 Oozie 手动做的事情,让它在集群的一个节点上打开一个 shell 和 运行 一些 Docker 命令。
如果我尝试启动一个简单的 Docker 命令,例如
docker ps
或 docker run hello-world
在 shell 操作中或在 Oozie 启动的 bash 脚本中,作业失败,我可以从应用程序日志中检索到的错误是:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.oozie.action.hadoop.LauncherAM.runActionMain(LauncherAM.java:410)
at org.apache.oozie.action.hadoop.LauncherAM.access0(LauncherAM.java:55)
at org.apache.oozie.action.hadoop.LauncherAM.run(LauncherAM.java:223)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875)
at org.apache.oozie.action.hadoop.LauncherAM.run(LauncherAM.java:217)
at org.apache.oozie.action.hadoop.LauncherAM.run(LauncherAM.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875)
at org.apache.oozie.action.hadoop.LauncherAM.main(LauncherAM.java:141)
Caused by: org.apache.oozie.action.hadoop.LauncherMainException
at org.apache.oozie.action.hadoop.ShellMain.run(ShellMain.java:76)
at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:104)
at org.apache.oozie.action.hadoop.ShellMain.main(ShellMain.java:63)
... 16 more
Failing Oozie Launcher, Main Class [org.apache.oozie.action.hadoop.ShellMain], exit code [1]
我尝试在 Stdoutput 中给出预期结果的唯一命令是 docker version
和 docker help
。
我不明白为什么我可以在 shell 上手动执行的操作在 Oozie 启动时不起作用。
脚本 运行 作为用户 oozie
。用户 Oozie 可能没有 运行 docker 操作的权限。将 oozie 添加到 docker
组。