加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

hadoop 执行jar包:InvalidInputException: Input path does not exist:

(2016-07-28 16:42:51)
标签:

hadoop

jar

invalidinputexceptio

分类: 技术探讨
今天 在网上找了个java编写 hadoop的mapreduce项目的demo,并用导出jar 在hadoop环境中执行,但是报错:Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://master:9000/user/root/input
说是/user/root/input这个文件夹找不到,弄了好久也在我的linux根目录下创建了/user/root/input目录,但是还是报路径不存在,后来才恍然大悟,原来,我只是在linux上创建了这个目录,但是hadoop自己的hdfs文件系统里面,是没有这个目录的,所以赶紧在hdfs系统里面建了/user/root/input和/user/root/output目录,再执行hadoop的命令:
bin/hadoop jar test1.jar com.rrkd.test.FirstDemo /usr/soft/input/ /usr/soft/output/  (ps:该命令是在hadoop的安装根目录下才能执行),但这时,又报:
Exception in thread "main" org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://master:9000/user/root/output already exists
原来hadoop在执行时,发现在hdfs中已经有了这个output文件夹,所以又抛出这个异常,此处很无语,个人觉得完全可以如果发现文件夹存在时,直接覆盖就行。所以用命令:
bin/hadoop -rmr /user/root/output 删除,命令是执行成功了,也删除了output文件夹,但命令行提示:rmr: DEPRECATED: Please use 'rm -r' instead.
表示推荐使用 rm -r 参数的方式执行删除文件夹的命令,而不是使用-rmr的方式。
然后再执行上边的命令:
bin/hadoop jar test1.jar com.rrkd.test.FirstDemo /usr/soft/input/ /usr/soft/output/
然后就看到这样的提示:
http://s7/mw690/001N5ZvCzy73BIJSzTE66&690执行jar包:InvalidInputException: Input path does not exist:" TITLE="hadoop 执行jar包:InvalidInputException: Input path does not exist:" />

表示hadoop已经成功执行了我提交 的jar包,真不容易,终于算是把hadoop从环境到编写一个简单的dmeo给搞定了。


ps:参照的Java项目代码在:
http://www.aboutyun.com/thread-7046-1-1.html
但是改了下面两句代码:
conf.set("mapred.job.tracker", "192.168.1.2:9001");    ----->这句直接删除了
String[] ioArgs=new String[]{"sort_in","sort_out"};     ------>这句改成了我的input,output(对应的就是刚刚报错的那两个目录文件夹)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有