2017-05-27 141 views
0

我还是新的hadoop,我试图让this example工作。hadoop streaming无效的DFS目录名称

我能够安装hadoop并运行wordcountmapreduce示例,一切都很好。但是我得到一个java.lang.IllegalArgumentException: Invalid DFS directory name异常,当我使用hadoop 2.6.0

这里运行windows 7一个hadoopstreaming command是我的命令:

hadoop jar %HADOOP_PREFIX%\share\hadoop\tools\lib\hadoop-streaming-2.6.0.jar -mapper mapper.php -reducer reducer.php -input input/* -output output 

如果我跑比如从文件夹中的命令d:\hadoop显示错误变为:

java.lang.IllegalArgumentException: Invalid DFS directory name /d:/hadoop 

输出目录是在错误显示并且作业失败之前创建的。

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

任何意见,将不胜感激。

回答

0

输入和输出路径应该是hdfs而不是local filesytem路径。您所提供的输入路径d:/hadoop这是local filesystem

你必须找到hdfs路径(他们通常居住在/user/<hadoop username>

假设你hadoop userAhmed,将下面的命令应该给你的所有目录在hdfs主文件

hadoop dfs -ls 

相当于

hadoop dfs -ls /user/Ahmed/ 

所以跟踪HDFS文件的位置,并把它传递给-input argument为(假设/user/Ahmed/input是路径)

hadoop jar %HADOOP_PREFIX%\share\hadoop\tools\lib\hadoop-streaming-2.6.0.jar -mapper mapper.php -reducer reducer.php -input /user/Ahmed/input 
+0

谢谢Ramesh,但我仍然得到相同的错误。我确信这些文件是在hdfs路径中添加的,当我运行“hadoop dfs -ls”时,我可以看到它们列出,并且确保输入文件相对于hdfs路径设置。但我仍然无效的路径,它打印当前目录我在尝试给输入文件的错误路径,它给出了一个不同的错误,所以它看到我的输入文件。我想这意味着它是别的东西? –

+0

您是否可以使用上述注释中执行的所有步骤更新您的问题?所以我可以看看细节。 “hadoop-streaming-2.6.0.jar”是你创建的吗? –

+0

不,我下载了一个已经编译好的windows hadoop文件,它有所有jar文件,包括wordcount示例和流媒体jar。我没有真正添加任何额外的步骤,我只是确保输入和输出路径是hdfs路径,正如您指出的 –

0

感谢拉梅什我发现我的HDFS命令是在当前目录上HDFS位置运行不。所以像“hdfs dfs -ls /”这样的命令列出了我所处的目录,而不是hadoop分布式文件系统上的内容。

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

+0

很高兴听到你想出了它:) –