Выполнение хаоса jar из PHP Server терпит неудачу. Доступ запрещен

Я пытаюсь выполнить файл jar для выполнения простого запроса в моей базе данных HBase с PHP-сервера, поэтому я могу распечатать результаты на веб-странице.

PHP Server настроен с тем же именем пользователя, что и пользователь hadoop, и с той же группой.

Команда PHP exec:

exec("bash /usr/local/hadoop/bin/hadoop jar myjar.jar my.package.MyClass 2> php_error.log", $result); 

Я получаю это исключение, когда пытаюсь выполнить команду (в php_error.log):

 Exception in thread "main" java.io.IOException: Permission denied at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createTempFile(File.java:1879) at org.apache.hadoop.util.RunJar.main(RunJar.java:115) 

Я знаю, что это связано с разрешениями, но даже с 777 на моем HDFS, а также в папках установки приложений, это не работает.

Есть идеи? Спасибо.

Кроме того, где этот временный файл хочет быть создан? Hadoop dir? HDFS? Где?

Редактировать: запускать это локально, он отлично работает! нет ошибок разрешения! hadoop jar myjar.jar my.package.MyClass

Ваш PHP в порядке. Проблема в том, что команда, которую вы запускаете, пытается скопировать файл в файл hadoop.tmp.dir. По умолчанию это местоположение /tmp/hadoop-${user.name} . Вы также должны предоставить разрешения для этой папки, или полный /tmp/hadoop каталог рекурсивно

Редактировать:

Выяснилось, что apache не является допустимым пользователем в этом случае. Решение состоит в том, чтобы создать нового пользователя, добавить его в группу hadoop, установить разрешения на jar и hasoop.tmp.dir и изменить владельца веб-страницы на созданного пользователя