将jar包上传到Hadoop服务器并执行jar包的方法--参数不对应导致报错output directory already exists

 ERROR security.UserGroupInformation: PriviledgedActionException as:root cause:org.apache.hadoop.mapred.FileAlreadyExistsException:Output directory hdfs://。。。。/user/root/input already exists
是由于参数不对应引起的,即,讲input文件夹对应到output参数上了。正确的执行jar包的方法为:

1.通过crt把自己的打包好的工程上传到hadoop服务器上。
2.首先确认中间输出结果路径是不存在的,执行删除方法:
  bin/hadoop fs -rmr output
3.创建输入路径input,并上传输入文件至该文件夹。
4.执行指令运行jar包wordcount.jar:
  bin/hadoop jar wordcount.jar input output
这里要注意参数个数,如果在打包时就已经指定了执行main方法的类,比如WordCount类,那么在执行上述指令时就不要在指定类了,如果写:
bin/hadoop jar wordcount.jar WordCount input output
那么就需要在工程里面修改对应参数:
FileInputFormat.setInputPaths(conf,new Path(args[0])); 0改为1
FileOutputFormat.setOutputPath(conf,new Path(args[1])); 1改为2
最好的方法就是不再加上WordCount这个参数。

你可能感兴趣的:(Hadoop)