分享

eclipse搭建hadoop的问题,请高手指点

cherry041032 发表于 2013-10-16 13:39:21 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 9 6835
在虚拟机centos上搭建的hadoop。用终端可以正常运行。但在eclipse中(eclipse在master机上)运行去重程序出现如下的错误。
13/08/26 00:13:30 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
13/08/26 00:13:30 WARN mapred.JobClient: No job jar file set.  User classes may not be found. See JobConf(Class) or JobConf#setJar(String).
13/08/26 00:13:30 INFO mapred.JobClient: Cleaning up the staging area file:/tmp/hadoop-hadoop/mapred/staging/hadoop1251091612/.staging/job_local_0001
13/08/26 00:13:30 ERROR security.UserGroupInformation: PriviledgedActionException as:hadoop cause:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://192.168.1.2:9000/user/dedup_in
Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://192.168.1.2:9000/user/dedup_in
        at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:235)
        at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:252)
        at org.apache.hadoop.mapred.JobClient.writeNewSplits(JobClient.java:962)
        at org.apache.hadoop.mapred.JobClient.writeSplits(JobClient.java:979)
        at org.apache.hadoop.mapred.JobClient.access$600(JobClient.java:174)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:897)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:850)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:396)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1083)
        at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:850)
        at org.apache.hadoop.mapreduce.Job.submit(Job.java:465)
        at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:495)
        at com.hebut.mr.Dedup.main(Dedup.java:54)
急求各位大神的指点!!!感激不尽!!
              
               
            

已有(9)人评论

跳转到指定楼层
Liushuai030805 发表于 2013-10-16 13:40:06

            运行时没有指定文件输入和输出路劲。
        
回复

使用道具 举报

Liushuai030805 发表于 2013-10-16 13:40:42

            Input path does not exist: hdfs://192.168.1.2:9000/user/dedup_in
确定你在Hdfs上由这样的输入路径?没有就用HDFS命令创建这样的输入目录,并且将你的数据上传到这个目录下。在运行程序之前 run configuration配置输入和输出路径。
        
回复

使用道具 举报

cherry041032 发表于 2013-10-16 13:41:29

            引用 2 楼 Liushuai030805 的回复:Input path does not exist: hdfs://192.168.1.2:9000/user/dedup_in
确定你在Hdfs上由这样的输入路径?没有就用HDFS命令创建这样的输入目录,并且将你的数据上传到这个目录下。在运行程序之前 run configuration配置输入和输出路径。
我在run configuration的arguement里设置了了。。。
        
回复

使用道具 举报

cherry041032 发表于 2013-10-16 13:42:10

            引用 2 楼 Liushuai030805 的回复:Input path does not exist: hdfs://192.168.1.2:9000/user/dedup_in
确定你在Hdfs上由这样的输入路径?没有就用HDFS命令创建这样的输入目录,并且将你的数据上传到这个目录下。在运行程序之前 run configuration配置输入和输出路径。
我是这样解决的,在代码中把输入输出路径写死。不写死怎么解决?……
        
回复

使用道具 举报

Liushuai030805 发表于 2013-10-16 13:42:58

            引用 4 楼 cherry041032 的回复:Quote: 引用 2 楼 Liushuai030805 的回复:
Input path does not exist: hdfs://192.168.1.2:9000/user/dedup_in
确定你在Hdfs上由这样的输入路径?没有就用HDFS命令创建这样的输入目录,并且将你的数据上传到这个目录下。在运行程序之前 run configuration配置输入和输出路径。
我是这样解决的,在代码中把输入输出路径写死。不写死怎么解决?……
肯定是文件输入输出路径问题。你在终端运行.jar的时候你没有创建输入输出路劲,但是默认都在hdfs文件系统根目录下,你要用eclipse开发,实际上也是打包后提交.jar包,但是在eclipse上要指定输入或者输出的路径。我在run configuration的arguement里设置的路径都是在hdfs文件系统上的,也就是说你的输入输出路径都要在hdfs文件系统上,如果你操作的是本地文件还要先使用hdfs api完成上传输入文件和下载输出文件。你在仔细看看,或者看看官方文档。
        
回复

使用道具 举报

cherry041032 发表于 2013-10-16 13:43:32

            引用 5 楼 Liushuai030805 的回复:Quote: 引用 4 楼 cherry041032 的回复:
Quote: 引用 2 楼 Liushuai030805 的回复:
Input path does not exist: hdfs://192.168.1.2:9000/user/dedup_in
确定你在Hdfs上由这样的输入路径?没有就用HDFS命令创建这样的输入目录,并且将你的数据上传到这个目录下。在运行程序之前 run configuration配置输入和输出路径。
我是这样解决的,在代码中把输入输出路径写死。不写死怎么解决?……
肯定是文件输入输出路径问题。你在终端运行.jar的时候你没有创建输入输出路劲,但是默认都在hdfs文件系统根目录下,你要用eclipse开发,实际上也是打包后提交.jar包,但是在eclipse上要指定输入或者输出的路径。我在run configuration的arguement里设置的路径都是在hdfs文件系统上的,也就是说你的输入输出路径都要在hdfs文件系统上,如果你操作的是本地文件还要先使用hdfs api完成上传输入文件和下载输出文件。你在仔细看看,或者看看官方文档。

----正解。思维清晰,理解正确。
        
回复

使用道具 举报

Liushuai030805 发表于 2013-10-16 13:44:22

            引用 5 楼 Liushuai030805 的回复:Quote: 引用 4 楼 cherry041032 的回复:
Quote: 引用 2 楼 Liushuai030805 的回复:
Input path does not exist: hdfs://192.168.1.2:9000/user/dedup_in
确定你在Hdfs上由这样的输入路径?没有就用HDFS命令创建这样的输入目录,并且将你的数据上传到这个目录下。在运行程序之前 run configuration配置输入和输出路径。
我是这样解决的,在代码中把输入输出路径写死。不写死怎么解决?……
肯定是文件输入输出路径问题。你在终端运行.jar的时候你没有创建输入输出路劲,但是默认都在hdfs文件系统根目录下,你要用eclipse开发,实际上也是打包后提交.jar包,但是在eclipse上要指定输入或者输出的路径。我在run configuration的arguement里设置的路径都是在hdfs文件系统上的,也就是说你的输入输出路径都要在hdfs文件系统上,如果你操作的是本地文件还要先使用hdfs api完成上传输入文件和下载输出文件。你在仔细看看,或者看看官方文档。
我在run arguement里设置的也是hdfs的路径。还有一个问题想请教一下,mapreduce与数据库相连的时候,用这个语句DistributedCache.addFileToClassPath(new Path("/lib/mysql‐connector‐java‐5.1.18‐bin.jar"), conf);运行以后显示这个包不存在,但我已经把他上传到hdfs下了
        
回复

使用道具 举报

u011302062 发表于 2013-10-16 13:44:57

            引用 7 楼 cherry041032 的回复:Quote: 引用 5 楼 Liushuai030805 的回复:
Quote: 引用 4 楼 cherry041032 的回复:
Quote: 引用 2 楼 Liushuai030805 的回复:
Input path does not exist: hdfs://192.168.1.2:9000/user/dedup_in
确定你在Hdfs上由这样的输入路径?没有就用HDFS命令创建这样的输入目录,并且将你的数据上传到这个目录下。在运行程序之前 run configuration配置输入和输出路径。
我是这样解决的,在代码中把输入输出路径写死。不写死怎么解决?……
肯定是文件输入输出路径问题。你在终端运行.jar的时候你没有创建输入输出路劲,但是默认都在hdfs文件系统根目录下,你要用eclipse开发,实际上也是打包后提交.jar包,但是在eclipse上要指定输入或者输出的路径。我在run configuration的arguement里设置的路径都是在hdfs文件系统上的,也就是说你的输入输出路径都要在hdfs文件系统上,如果你操作的是本地文件还要先使用hdfs api完成上传输入文件和下载输出文件。你在仔细看看,或者看看官方文档。
我在run arguement里设置的也是hdfs的路径。还有一个问题想请教一下,mapreduce与数据库相连的时候,用这个语句DistributedCache.addFileToClassPath(new Path("/lib/mysql‐connector‐java‐5.1.18‐bin.jar"), conf);运行以后显示这个包不存在,但我已经把他上传到hdfs下了
你用的什么数据库关系型数据库还是nosql类型的数据库?
        
回复

使用道具 举报

cherry041032 发表于 2013-10-16 13:45:45
本帖最后由 nettman 于 2014-5-27 03:50 编辑
可以参考新手指导:Windows上使用Eclipse远程连接Hadoop进行程序开发
http://www.aboutyun.com/thread-6001-1-1.html



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条