команда runing shell внутри java-действия на Oozie throws В доступе отказано - PullRequest
1 голос
/ 08 марта 2019

У меня есть этот Java-код

public static void main(String... args) throws IOException, InterruptedException {
        execute("echo \"Amer\"");
    }

private static void execute(String command) throws IOException, InterruptedException {
    ProcessBuilder builder = new ProcessBuilder();
    builder.command(command);
    //builder.directory(new File(System.getProperty("user.home")));
    Process process = builder.start();

    StreamGobbler streamGobbler =
            new StreamGobbler(process.getInputStream(), System.out::println);
    Executors.newSingleThreadExecutor().submit(streamGobbler);
    int exitCode = process.waitFor();
    assert exitCode == 0;
}

, и я пытаюсь запустить его в рабочем процессе Oozie с помощью действия Java, но когда я отправляю рабочий процесс, он уничтожается со следующим исключением (java.io.IOException: ошибка = 13, разрешение отклонено)

org.apache.oozie.action.hadoop.JavaMainException: java.io.IOException: не удается запустить программу "echo" Amer "": error = 13, разрешениеЗапрещено в org.apache.oozie.action.hadoop.JavaMain.run (JavaMain.java:60) в org.apache.oozie.action.hadoop.LauncherMain.run (LauncherMain.java:78) в org.apache.oozie.action.hadoop.JavaMain.DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в org.apache.oozie.action.hadoop.LauncherMapper.map (LauncherMapper.java:231) в org.apache.hadoop.mapred.MapRunner.run (MapRunner.java:54) в org.apache.hadoop.mapred.MapTask.runOldMapper (MapTask.java:465) в org.apache.hadoop.mapred.MapTask.run (MapTask.java:349) в org.apache.hadoop.mapred.YarnChild $ 2.run (YarnChild.java:174) в java.security.AccessController.doPrivileged (собственный метод) в javax.security.auth.Subject.doAs (Subject.java:422) в org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1688) в org.apache.hadoop.mapred.YarnChild.main (YarnChild.java:168) Причина: java.io.IOException: Невозможно запустить программу "echo" Amer "":ошибка = 13, разрешение отклонено в java.lang.ProcessBuilder.start (ProcessBuilder.java:1048) в ShellCommandExecutor.execute (ShellCommandExecutor.java:18) в ShellCommandExecutor.main (ShellCommandExecutor.java:11) в sun.refmphoccess.No.invoke0 (нативный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43Mf.java.43g.fre.java.43g.fre.java.43g.fre.java.43g.ff.java:43g в javaethod.invoke (Method.java:498) в org.apache.oozie.action.hadoop.JavaMain.run (JavaMain.java:57) ... еще 15 причин: java.io.IOException: error = 13, разрешениеЗапрещено на java.lang.UNIXProcess.forkAndExec (собственный метод) на java.lang.UNIXProcess. (UNIXProcess.java:247) на java.lang.ProcessImpl.start (ProcessImpl.java:134) на java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) ... еще 22 * ​​1007 *

есть подсказка?

...