Java 从IDE内部运行时出现Hadoop路径异常

Java 从IDE内部运行时出现Hadoop路径异常,java,hadoop,intellij-idea,hdfs,Java,Hadoop,Intellij Idea,Hdfs,编辑:如果文件路径存在于当前文件系统位置,则此操作有效。 因此,问题就变成了如何让它在从IDE运行时与hdfs一起工作 从IDE内部运行(Intellij IDEA)获取异常,请参见以下内容: 在程序参数中,我指定“输入输出” 当然,“输入”确实存在于HDFS中,其中包含数据文件 但是代码正在尝试从本地项目文件系统访问目录 位置不来自HDFS hdfs命令: Edit: IDE is Intellij IDEA OS: Mac OS X Lion Hadoop: 1.2.

编辑:如果文件路径存在于当前文件系统位置,则此操作有效。 因此,问题就变成了如何让它在从IDE运行时与hdfs一起工作

从IDE内部运行(Intellij IDEA)获取异常,请参见以下内容:

在程序参数中,我指定“输入输出”

当然,“输入”确实存在于HDFS中,其中包含数据文件

但是代码正在尝试从本地项目文件系统访问目录 位置不来自HDFS

hdfs命令:

Edit: IDE is Intellij IDEA
      OS: Mac OS X Lion
      Hadoop: 1.2.1
Java源代码:

James-MacBook-Pro:conf james$ hadoop fs -ls input
Found 1 items
-rw-r--r--   1 james supergroup         15 2013-11-01 07:31 /user/james/input/simple.txt
例外情况:

input output

我做错了什么?

在您的本地Eclipse中,我假设集群配置的Hadoop配置文件(core site.xml)不在类路径上,被绑定到Hadoop jar中的文件隐藏在类路径上

在提交作业之前,您可以通过在代码中手动设置作业配置属性“fs.default.name”来修改此设置:

Nov 03, 2013 9:46:00 AM org.apache.hadoop.security.UserGroupInformation doAs
SEVERE: PriviledgedActionException as:james cause:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/Users/james/work/projects/hadoop/mrjob/input
Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/Users/james/work/projects/hadoop/mrjob/input
您可能还需要配置jobtracker,以便不使用本地jobtracker:

job.getConf().set('fs.default.name', "hdfs://localhost:9000");
请注意,对于您的环境或部署,主机名、端口甚至属性名可能会有所不同


或者,您可以将hadoop conf文件夹添加到类路径中(并确保其优先级高于hadoop jar)

您可以发布您尝试过的代码吗?有人会帮你的。谢谢。@SSaikia_JtheRocker谢谢,代码已按要求包含。谢谢@Chris White,我尝试了两种建议。将conf文件夹放在hadoop jars之前的顶级类路径上。它仍然试图从本地目录访问“输入输出”。此外,我还尝试了您建议配置它的代码行,我得到了“IOException:Connection reset by peer”。感谢您在提交工作时发布更多代码。IOException可能是由客户端和服务器版本之间的版本不匹配或连接到错误的端口号引起的。您还可以在core-site.xml(fs.default.name)和mapred-site.xml(mapred.job.tracker)中找到并粘贴条目。这些文件的位置取决于您是如何安装hadoop的,但请查看/etc/hadoop/conf或安装hadoop的conf文件夹,您需要在配置fs.default.name和mapred.job.tracker的行中重新添加这些文件。Eclipse是否与您运行的伪集群在同一台主机上运行?
<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>localhost:9001</value>
     </property>
</configuration>
input output
Nov 03, 2013 9:46:00 AM org.apache.hadoop.security.UserGroupInformation doAs
SEVERE: PriviledgedActionException as:james cause:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/Users/james/work/projects/hadoop/mrjob/input
Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/Users/james/work/projects/hadoop/mrjob/input
job.getConf().set('fs.default.name', "hdfs://localhost:9000");
job.getConf().set('mapred.jobtracker.address', "localhost:9001");