我仍然是hadoop
的新人,我试图让this example工作。
我能够设置hadoop并运行wordcount
mapreduce
示例,一切都很好。但是,当我使用java.lang.IllegalArgumentException: Invalid DFS directory name
hadoop
上运行streaming command
windows 7
时,我收到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文件夹d:\hadoop
运行命令,则显示的错误变为:
java.lang.IllegalArgumentException: Invalid DFS directory name /d:/hadoop
在显示错误并且作业失败之前创建输出目录。
我尝试搜索命令来设置分布式文件的位置,但我没有找到类似的东西。
任何建议都将受到赞赏。
答案 0 :(得分:0)
输入和输出路径应为hdfs
而不是local filesytem
路径。您提供的输入路径为d:/hadoop
<{1}}
您必须在local filesystem
中找到路径(它们通常位于hdfs
)
假设您的/user/<hadoop username>
为hadoop user
,则应用以下命令可以为您提供Ahmed
主页中的所有目录和文件
hdfs
相当于
hadoop dfs -ls
因此跟踪hdfs文件位置并将其传递给hadoop dfs -ls /user/Ahmed/
as(假设-input argument
是路径)
/user/Ahmed/input
答案 1 :(得分:0)
感谢Ramesh,我注意到我的hdfs命令在当前目录上运行,而不是在hdfs位置。所以像“hdfs dfs -ls /”这样的命令列出了我所在的目录,而不是hadoop分布式文件系统上的内容。
结果是一个问题。我必须确保在core-site.xml和hdfs-site.xml中正确设置fs.defaultFS