无法从PHP执行Hadoop Jar

时间:2019-03-23 18:38:49

标签: java php hadoop

我无法使用任何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>

1 个答案:

答案 0 :(得分:0)

万一有人遇到相同的问题,那是因为Hadoop配置。我用this tutorial link更改了配置。之后,您将获得HDFS渗透性问题,可以通过此how to add user in supergroup of hdfs in linux? [closed]解决。