Запустить исполняемый файл в коде Java на Hadoop

Я пытаюсь запустить exe из своего Java-кода на Hadoop (реализация HDInsight). У меня нет исходников exe-файла, поэтому я должен запустить его как есть. На входе exe должен быть файл, поэтому я не могу использовать потоковую передачу. Я пытался использовать ShellCommandExecutor, но это не удалось.

String[] command = new String[] { "C:/pepnovo3/PepNovo",
                    "-file", "smallinputfile.mgf", "-model", "CID_IT_TRYP" };
ShellCommandExecutor shell = new ShellCommandExecutor(command);
shell.execute();

Это дает мне исключение:

java.io.IOException: Cannot run program "C:/pepnovo3/PepNovo": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)

Я также пытался использовать ProcessBuilder, и это тоже не удалось (по той же причине). Я пытался сделать это и из HDFS, но тоже не смог. Я знаю, что Hadoop не идеальная платформа для этого, но это моя задача. Это даже возможно сделать?


person santana91    schedule 24.03.2015    source источник
comment
Вы убедились, что C:/pepnovo3/PepNovo действительно существует?   -  person horns    schedule 24.03.2015
comment
Да, файл существует в этом месте.   -  person santana91    schedule 25.03.2015
comment
Вы уверены, что у него нет расширения, например .exe? Расширения можно скрыть в проводнике Windows   -  person horns    schedule 25.03.2015
comment
Да, расширение есть, но C:/pepnovo3/PepNovo.exe тоже не работает.   -  person santana91    schedule 25.03.2015


Ответы (1)


Три возможности, глядя на это:

  • Является ли исполняемый файл на всех узлах?
  • Находится ли указанный файл (smallinputfile.mgf) в рабочем каталоге задания (например, помещен с параметром -files)?
  • Есть ли у пользователя Hadoop для заданий права доступа к папке и файлу для его выполнения?

Дайте мне знать, если это поможет!

person Matt Winkler    schedule 11.04.2015
comment
У меня есть один узел в моем кластере, так что да, исполняемый файл находится на всех узлах. smallinputfile.mgf находится в одной папке с исполняемым файлом (C:\pepnovo3). Что такое пользователь Hadoop в HDInsight? У меня есть 3 группы пользователей (СИСТЕМА, Администраторы, Пользователи) и у каждой есть полные права доступа к папке C:\pepnovo3\. - person santana91; 17.04.2015