我们可以将本地写好的程序打包成jar文件放入集群中,然后在本地进行调试运行。在调试之前先分享几个技巧。
配置maven-antrun-plugin,实现文件的复制
在pom.xml中导入如下配置:
<build>
<finalName>MyHadoop</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>---------开始复制jar包到共享目录下----------</echo>
<delete file="F:\vwmare-system\vmshare\bigdata\runjars\MyHadoop.jar"></delete>
<copy file="target/MyHadoop.jar" toFile="F:\vwmare-system\vmshare\bigdata\runjars\MyHadoop.jar">
</copy>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
经过该配置,打包出来的jar文件会自动放入centos集群的共享目录下。
使用mvn命令下载工件中的所有依赖
进入pom.xml所在的目录,打开命令行,运行如下命令:
mvn -DoutputDirectory=./lib -DgroupId=hadoop -DartifactId=MyHadoop -Dversion=1.0-SNAPSHOT dependency:copy-dependencies
远程调试
- 在Linux上导入如下命令:
$> export HADOOP_CLIENT_OPTS=-agentlib:jdwp=transport=dt_socket,address=8888,server=y,suspend=y
- 使用 hadoop jar 命令启动(会被挂住,等待客户端进行调试)
$> hadoop jar MyHadoop.jar com.yuangh.hadoop.copress.TestCompress
- 客户端(idea remote)远程连接到主机(主机号:s201, 端口号:8888)
Run---->Edit Configuration----->new remote---->更改主机(s201)和端口(8888)
- 单步调试