Php hadoop流式处理无效的DFS目录名

Php hadoop流式处理无效的DFS目录名,php,windows,hadoop,Php,Windows,Hadoop,我还是hadoop的新手,我正试着开始工作 我能够安装hadoop并运行wordcountmapreduce示例,一切正常。但是,当我在Windows7上使用hadoop 2.6.0 这是我的命令: hadoop jar %HADOOP_PREFIX%\share\hadoop\tools\lib\hadoop-streaming-2.6.0.jar -mapper mapper.php -reducer reducer.php -input input/* -output output 如果

我还是hadoop的新手,我正试着开始工作

我能够安装hadoop并运行
wordcount
mapreduce
示例,一切正常。但是,当我在
Windows7上使用
hadoop 2.6.0

这是我的命令:

hadoop jar %HADOOP_PREFIX%\share\hadoop\tools\lib\hadoop-streaming-2.6.0.jar -mapper mapper.php -reducer reducer.php -input input/* -output output
如果我从say folder
d:\hadoop
运行命令,显示的错误将变为:

java.lang.IllegalArgumentException: Invalid DFS directory name /d:/hadoop
输出目录是在显示错误和作业失败之前创建的

我尝试搜索命令来设置分布式文件的位置,但没有找到类似的命令


任何建议都将不胜感激。

输入和输出路径应为
hdfs
路径,而不是
本地文件系统
路径。您提供的输入路径是
d:/hadoop
,它是
本地文件系统

您必须在
hdfs
中找到路径(它们通常位于
/user/
中)

假设您的
hadoop用户
Ahmed
,应用下面的命令应该会为您提供
hdfs
主页中的所有目录和文件

hadoop dfs -ls
相当于

hadoop dfs -ls /user/Ahmed/
因此,跟踪hdfs文件位置并将其传递给
-input参数
作为(假设
/user/Ahmed/input
是路径)


多亏了Ramesh,我注意到我的hdfs命令运行在当前目录上,而不是hdfs位置上。所以像“hdfs dfs-ls/”这样的命令列出了我所在的目录,而不是hadoop分布式文件系统上的目录


这是一个配置问题。我必须确保在core-site.xml和hdfs-site.xml中正确设置了fs.defaultFS

谢谢Ramesh,但我仍然得到了相同的错误。我确保这些文件被添加到hdfs路径中,当我运行“hadoop dfs-ls”时可以看到它们被列出,并且我确保输入文件是相对于hdfs路径设置的。但我仍然得到无效路径,它会打印我所在的当前目录。我试图给输入文件提供一个错误的路径,但它给出了一个不同的错误,所以它确实看到了我的输入文件。我猜这意味着这是另外一回事?你能用你在上面的评论中执行的所有步骤更新你的问题吗?这样我可以看看细节。hadoop-streaming-2.6.0.jar
是你创建的吗?不是,我下载了一个已经编译好的hadoop windows文件,里面有所有的jar文件,包括wordcount示例和streaming jar。我没有添加任何额外的步骤,我只是确保输入和输出路径是您所指出的hdfs路径out@AhmedK. 我只是想确保当前目录在代码本身中是硬编码的。这就是为什么我要求您更新您在命令中输入的路径以及相应的错误。我注意到,当我键入“hadoop dfs-ls”cmd时,它列出了我运行命令的当前目录。这正常吗?很高兴听到你明白了:)
hadoop jar %HADOOP_PREFIX%\share\hadoop\tools\lib\hadoop-streaming-2.6.0.jar -mapper mapper.php -reducer reducer.php -input /user/Ahmed/input