从php服务器执行hadoopjar失败权限被拒绝

kkih6yb8  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(435)

我正在尝试执行一个jar文件,从php服务器对hbase数据库进行简单的查询,以便将结果打印到网页上。
中的php服务器配置了与hadoop用户相同的用户名,也配置了相同的组。
php exec命令是:

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

当我尝试执行命令时(在php\u 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)

我知道它与权限有关,但即使在我的hdfs和hadoop安装文件夹上使用777,它也不起作用。
有什么想法吗?谢谢您。
另外,要在何处创建此临时文件?hadoop目录?hdfs?在哪里?
编辑:运行这个本地,它的工作非常完美!没有权限错误!hadoop jar myjar.jar my.package.myclass

9rnv2umw

9rnv2umw1#

你的php还可以。问题是,您正在运行的命令试图将文件复制到hadoop.tmp.dir。它的默认位置是 /tmp/hadoop-${user.name} . 你还必须授予该文件夹的权限,或者授予完整的 /tmp/hadoop 递归目录
编辑:
在这种情况下,我发现apache不是一个有效的用户。解决方案是创建一个新用户,将其添加到hadoop组,将权限设置为jar和hadoop.tmp.dir,并将网页所有者更改为创建的用户

相关问题