1.打包时指定main Class信息
注意:默认直接通过maven插件打成jar包中没有指定main class信息,因此在运行mapreduce的jar包时必须在指令后明确main class信息 需要在插件进行配置
1 <build>
2 <plugins>
3 <plugin>
4 <groupId>org.apache.maven.plugins</groupId>
5 <artifactId>maven-jar-plugin</artifactId>
6 <configuration>
7 <outputDirectory>${basedir}/target</outputDirectory>
8 <archive>
9 <manifest>
10 <!-- 在打包插件中指定main class 信息 -->
11 <mainClass>com.yt.wordcount.WordCountJob</mainClass>
12 </manifest>
13 </archive>
14 </configuration>
15 </plugin>
16 </plugins>
17 </build>
执行命令:clean package
2.使用wagon插件实现自动上传至hadoop集群
1 <build>
2 <!--扩展maven的插件中加入ssh插件-->
3 <extensions>
4 <extension>
5 <groupId>org.apache.maven.wagon</groupId>
6 <artifactId>wagon-ssh</artifactId>
7 <version>2.8</version>
8 </extension>
9 </extensions>
10 <plugins>
11 <plugin>
12 <groupId>org.codehaus.mojo</groupId>
13 <artifactId>wagon-maven-plugin</artifactId>
14 <version>1.0</version>
15 <configuration>
16 <fromFile>target/test.jar 或者 ${project.build.finalName}.jar</fromFile>
17 <!--user是用户名 password是密码 -->
18 <url>scp://user:password@192.168.20.128/root</url>
19 </configuration>
20 </plugin>
21 </plugins>
22 </build>
执行命令:打包后直接执行 wagon upload-single
3.使用wagon上传jar完成后远程执行job作业
wagon配置加入commands命令
1 <plugin>
2 <groupId>org.codehaus.mojo</groupId>
3 <artifactId>wagon-maven-plugin</artifactId>
4 <version>1.0</version>
5 <configuration>
6 <fromFile>target/${project.build.finalName}.jar</fromFile>
7 <url>scp://root:1@10.15.0.5/root</url>
8 <commands>
9 <!-- 通过sh 执行shell脚本文件 -->
10 <command>nohup hadoop-2.9.2/bin/hadoop jar hadoop_wordcount-1.0-SNAPSHOT.jar > /root/mapreduce.out 2>&1 & </command>
11 </commands>
12 <displayCommandOutputs>true</displayCommandOutputs>
13 </configuration>
14 </plugin>
执行命令:clean package wagon:upload-single wagon:sshexec
4.idea简化指令插件下载
1.每次执行太繁琐,在idea有一个插件可以简化
2.在执行的代码右键
3.添加指令 每个指令以空格分割 点击ok
4.到这一步基本就完成了 有了这个插件为我们省去了很多步骤
右键就可以运行了