我的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");
它运转良好。
1条答案
按热度按时间z5btuh9x1#
我通过将php服务器用户更改为hduser(有权在hdfs中写入文件的用户)解决了这个问题。在不改变这个用户的情况下,只有从hdfs读取的命令在工作,而不是需要在hdfs上创建文件或写入的命令。
当我试图通过php脚本在hdfs中运行创建目录的命令时,在php服务器日志(/var/log/apache2/error.log)中出现以下错误:
在运行jar命令触发mapred程序时,我得到了以下错误:
然后我将/etc/apache2/apache2.conf中的用户更改为hadoop用户,然后重新启动服务器,现在一切正常。
我应该从php服务器引用executehadoopjar失败。拒绝许可的帖子对我解决这个问题很有帮助。我希望这篇文章也能帮助其他人。