通过我的php网页运行用java编写的mapreduce作业

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

我的php服务器托管在job tracker机器上,我试图通过调用执行jar命令的命令行,在我的网页上运行map reduce作业,
但我没有得到回应,工作也没有开始。
但是,如果我使用相同的方法运行一个命令来列出hdf,它运行得很好。请引导我。
以下命令未对我做出任何响应,作业未运行:

exec("HADOOP_DIR/bin/hadoop jar /usr/local/MapReduce.jar Mapreduce [input Path] [output Path]");

但如果我这么做:

exec("HADOOP_DIR/bin/hadoop dfs -ls /user/hadoop");

它运转良好。

z5btuh9x

z5btuh9x1#

我通过将php服务器用户更改为hduser(有权在hdfs中写入文件的用户)解决了这个问题。在不改变这个用户的情况下,只有从hdfs读取的命令在工作,而不是需要在hdfs上创建文件或写入的命令。
当我试图通过php脚本在hdfs中运行创建目录的命令时,在php服务器日志(/var/log/apache2/error.log)中出现以下错误:

mkdir: org.apache.hadoop.security.AccessControlException: Permission denied: user=www-data, access=WRITE, inode="hduser":hduser:supergroup:rwxr-xr-x

在运行jar命令触发mapred程序时,我得到了以下错误:

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)

然后我将/etc/apache2/apache2.conf中的用户更改为hadoop用户,然后重新启动服务器,现在一切正常。
我应该从php服务器引用executehadoopjar失败。拒绝许可的帖子对我解决这个问题很有帮助。我希望这篇文章也能帮助其他人。

相关问题