哈多普流 无效的 DFS 目录名称



我仍然是hadoop新手,我试图让这个例子工作。

我能够设置hadoop并运行wordcount mapreduce示例,一切都很好。但是,当我使用hadoop 2.6.0windows 7运行hadoop streaming command时,我遇到了java.lang.IllegalArgumentException: Invalid DFS directory name异常

这是我的命令:

hadoop jar %HADOOP_PREFIX%sharehadooptoolslibhadoop-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

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

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

任何建议将不胜感激。

输入和输出路径应该是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%sharehadooptoolslibhadoop-streaming-2.6.0.jar -mapper mapper.php -reducer reducer.php -input /user/Ahmed/input

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

事实证明这是配置问题。我必须确保 fs.defaultFS 在核心站点.xml和 hdfs-site 中设置正确.xml

最新更新