Hadoop MapReduce-程序在文件系统上运行,但不使用HDFS

Hadoop MapReduce-程序在文件系统上运行,但不使用HDFS,hadoop,mapreduce,Hadoop,Mapreduce,这里是Hadoop新手。所以我只配置了一个单节点设置,我不确定文件应该放在哪里?!我的理解是,它应该在HDFS上。因此,我使用eclipse向我的HDFS添加了一个文本文件“zulu.txt”,使用“upload file to DFS”(右键单击DFS;参见下图) 当我使用 String input = "/user/irobot-pc/irobot/In/"; 我得到以下错误代码:输入路径不存在 Exception in thread "main" org.apache.hadoop.ma

这里是Hadoop新手。所以我只配置了一个单节点设置,我不确定文件应该放在哪里?!我的理解是,它应该在HDFS上。因此,我使用eclipse向我的HDFS添加了一个文本文件“zulu.txt”,使用“upload file to DFS”(右键单击DFS;参见下图)

当我使用

String input = "/user/irobot-pc/irobot/In/";
我得到以下错误代码:输入路径不存在

Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/user/irobot-pc/irobot/In
at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:224)
at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:241)
at org.apache.hadoop.mapred.JobClient.writeNewSplits(JobClient.java:885)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:779)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:432)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:447)
at com.testdrive.WordCount.main(WordCount.java:37)
但是当在我的本地文件系统上指示输入时-它可以工作

String input = "C:\\Users\\iRobot\\Desktop\\Pop";
哈?!这对我来说毫无意义。我的印象是hadoop文件系统应该被读取,不是吗

问题:我想转到“群集设置”,我知道文件必须位于HDFS下。在升级之前,我如何在本地修复它


您需要告诉代码您打算使用HDFS,而不是本地FS。您可以借助配置对象来实现这一点。在作业中添加以下行:

Configuration conf = new Configuration();
conf.addResource(new Path("$HADOOP_HOME/conf/core-site.xml"));
conf.addResource(new Path("$HADOOP_HOME/conf/hdfs-site.xml"));
否则,代码将在本地FS中查找输入


HTH

当您编写$HADOOP_HOME时,是否意味着我需要在操作系统(win)的环境变量中设置HADOOP_HOME?当我指定确切的路径“C:/cygwin64/usr/local/hadoop-0.20.2/conf/core site.xml”时,它可以工作。