我无法使用任何PHP函数(例如shell_exec,exec,system)从PHP中以伪分布式执行Hadoop jar(如果需要查看我的配置,请遵循本教程my pseudo distributed settings)。当我尝试执行jar时,我的浏览器在选项卡中显示了加载图标,但是当我检查Hadoop应用程序历史记录时,没有任何运行。更糟糕的是没有错误消息出现。我已经检查了我的/var/log/apache2/error.log,那里什么也没有。
这是我运行代码的实验。
//1.Run in the command prompt works perfectly fine.
/usr/local/hadoop-2.9.1/bin/hadoop jar path_to_my_jar_file.jar main_class_name args
数字2,3,4是我键入的所有php代码。
//2. Run using shell_exec nothing happens
var_dump(shell_exec("/usr/local/hadoop-2.9.1/bin/hadoop jar path_to_my_jar_file.jar main_class_name args"));
//3. Run using exec I got 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);
//4. Run using system I got 1
system("/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用户,但仍然无法正常工作。我想念什么吗?在此先感谢:)
更新1
在mapred-site.xml中删除此属性会使php exec正常工作,但是我在资源管理器(localhost:8088)中看不到mapreduce进度,我也需要它。
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>MapReduce framework name</description>
</property>
答案 0 :(得分:0)
万一有人遇到相同的问题,那是因为Hadoop配置。我用this tutorial link更改了配置。之后,您将获得HDFS渗透性问题,可以通过此how to add user in supergroup of hdfs in linux? [closed]解决。