我无法使用任何 PHP 函数(如 shell_exec
)从 PHP 以伪分布式方式执行我的 Hadoop jar(如果您需要查看我的配置,请遵循本教程 my pseudo distributed settings) , exec
, system
.当我尝试执行 jar 时,我的浏览器在选项卡中显示了一个加载图标,但是当我检查 Hadoop 应用程序历史记录时,没有任何运行。更糟糕的是,没有出现错误消息。我已经检查了我的/var/log/apache2/error.log 并且什么都没有。
所以这是我运行代码的实验。
/usr/local/hadoop-2.9.1/bin/hadoop jar path_to_my_jar_file.jar main_class_name args
数字 2,3,4 是我输入的所有 php 代码。
shell_exec
运行没发生什么事var_dump(shell_exec("/usr/local/hadoop-2.9.1/bin/hadoop jar path_to_my_jar_file.jar main_class_name args"));
exec
运行我得到了array(0) { }
$retval = array();
exec("/usr/local/hadoop-2.9.1/bin/hadoop jar path_to_my_jar_file.jar main_class_name args",$retval);
var_dump( $retval);
system
运行我得到了 1system("/usr/local/hadoop-2.9.1/bin/hadoop jar path_to_my_jar_file.jar main_class_name args",$retval);
var_dump( $retval);
我找到了 Running MapReduce job written in Java through my PHP web page问题,但我认为我没有权限问题,因为我可以执行此操作。
shell_exec("/usr/local/hadoop-2.9.1/bin/hadoop fs -mkdir /test");
我什至尝试更改 apache 用户,但它仍然无法正常工作。
在 mapred-site.xml 中删除此属性会使 php
exec
工作,但我在资源管理器(localhost:8088)中看不到mapreduce进度,我也需要它。<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>MapReduce framework name</description>
</property>
最佳答案
如果有人遇到同样的问题,那是因为 Hadoop 配置。我用 this tutorial link 更改我的配置.之后你会得到 HDFS 权限问题,可以通过这个 how to add user in supergroup of hdfs in linux? [closed] 解决。 .
关于java - 无法从 PHP 执行 Hadoop Jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55317152/