java - 通过我的 PHP 网页运行用 Java 编写的 MapReduce 作业

标签 java php hadoop mapreduce hdfs

我的 PHP 服务器托管在 Job Tracker 机器上,我试图通过调用执行 jar 命令的命令行来通过我的网页运行 map reduce 作业,

但我没有得到任何回应,工作也没有开始。

但是,如果我运行命令以使用相同的方法列出 hdfs,它运行良好。请指导我。

以下命令没有响应我任何东西并且作业没有运行:

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

但如果我这样做:
exec("HADOOP_DIR/bin/hadoop dfs -ls /user/hadoop");

它运行良好。

最佳答案

我通过将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 用户,然后重新启动我的服务器,现在一切正常。

我应该引用 Execute hadoop jar from PHP Server fails. Permission denied帖子帮助我解决了这个问题。我希望这篇文章也能帮助其他人。

关于java - 通过我的 PHP 网页运行用 Java 编写的 MapReduce 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24901626/

相关文章:

java - Vaadin 8. 资源无法解析

php - 密码、盐和授权

用于数据分析的 Java Web 平台

java - Hadoop 作业不会被杀死

hadoop - 如何使用PIG脚本验证列表

java - 为什么我不应该使用 date4j 而不是 joda java.util.Calendar 或 jsr 310?

java - 设置 viewPager.setCurrentItem 时出现 NullPointerException

java - 如何处理RequestMapping中的@Valid违规?

php - Mysql记录用户的好恶

lucene - 单词共现 - 在一组 n-gram 中找到一个术语的共现