一、生成jar包
① 通过maven自动生成
- 直接找到maven工具,点击package即可~
② 手动打jar包
- 找到project structure -> artifacts -> + ->jar -> empty,然后选择需要打包的项目(注意这里是按照Driver类来选的)
- ok后,找到build -> build artifacts
- 选择需要打的程序jar,点击build
- 过一会儿就会自动生成jar包
返回顶部
二、集群运行_路径问题
既然是集群运行,一般就是在虚拟机系统环境下,所以无论那种配置路径形式,所需要的资源文件都要在虚拟机系统中存在,所以在运行jar包之前要将资源文件从本地机上传至虚拟机中!!!
① 内置路径
这种方式就是将所需要的资源文件,在程序内配置好,直接打包后运行jar包,然后运行时,自动去搜索资源文件。
如上图,在Driver类中进行配置。这里有一点值得注意 “file://”
原本是指本地文件路径,由于这里是在虚拟机中运行,所以虚拟机就成了“本地机”,那么相应的资源文件路径,就应当是虚拟机中的某个路径。(这也就是为什么要将资源文件上传至虚拟机中)
另外,当没有了前缀 “file://” 的时候默认的路径是hdfs的文件路径!并且在Driver配置输出路径时,尾部文件夹不能存在,否则会报文件已存在的错误~
配置好之后,就开始运行jar包:
hadoop jar 自己打的jar包名称/路径 运行程序的主类(Driver类)路径
② 参数形式输入路径
这种方式就是将所需要的资源文件,在运行jar包的时候以参数的形式输入资源文件路径,然后运行时去搜索指定的资源文件。
如上图所示,在Driver类中配置时,以 args[m]
数组形式传参设定路径,打好jar包,上传。
在集群中运行jar包,指定参数——资源文件路径:
hadoop jar 自己打的jar包名称/路径 运行程序的主类(Driver类)路径 参数1 参数2 参数3 参数4 ...
注意:这里可能会报错,留心以下几点!
FileInputFormat.setInputPaths(job,new Path(args[2]));
FileOutputFormat.setOutputPath(job,new Path(args[3]));
注意这里输入输出类的正确书写- 所有路径参数按
args[m]
数组形式,m从1开始
;在运行jar包指定参数路径的时候要与程序内的数组顺序一致参见:jar包集群运行:FileAlreadyExistsException: Output directory … already exists