使用Ant发布hadoop代码到服务器

时间:2021-12-13 02:13:20

  首先,搭建Ant环境:

  1.1.下载antzip包,可以直接从官网下,也可以从我的csdn账号下载,这里我使用的Ant版本是:apache-ant-1.8.4-bin

      CSDN Ant 所需jar包下载地址

  1.2.将apache-ant-1.8.4-bin.zip包解压,然后添加到环境变量中去:

    ANT_HOME  //这个Ant home是我自己的本地目录,大家根据自己安装的不同修改
      E:\Program Files (x86)\java\decompression\apache-ant-1.8.4
    PATH变量最前边追加:
      %ANT_HOME%\bin;

  1.3.将解压包中的lib目录下的jsch-0.1.51.jar复制到Ant_Home中的目录中去,如果是Eclipse下的Ant环境必须在Window->Preferences->Ant->Runtime->Classpath中加入jsch-0.1.51

  1.4.项目根目录下建立文件夹classes,dist,lib文件夹,并将解压后lib目录下的jar包加入到新建lib目录下.

  1.5.在项目根目录下建立build.xml  

<?xml version="1.0" encoding="UTF-8"?>
<project name="项目名称" basedir="." default="sshexec">
<description>本配置文件供ANT编译项目、自动进行单元测试、打包并部署之用。</description>
<description>默认操作(输入命令:ant)为编译源程序并发布运行。</description>
<!--属性设置-->
<property environment="env" />
<property file="build.properties" />
<property name="src.dir" value="${basedir}/src" />
<property name="java.lib.dir" value="${env.JAVA_HOME}/lib" />
<property name="classes.dir" value="${basedir}/classes" />
<property name="dist.dir" value="${basedir}/dist" />
<property name="project.lib.dir" value="${basedir}/lib" />
<property name="localpath.dir" value="${basedir}" />
<property name="remote.host" value="hadoop1"/>
<property name="remote.username" value="root"/>
<property name="remote.password" value="hadoop"/>
<property name="remote.home" value="~"/>
<!--每次需要知道的main类,写到这里-->
<property name="main.class" value="mapreduce.WordCountApp"/>
<!-- 基本编译路径设置 -->
<path id="compile.classpath">
<fileset dir="${java.lib.dir}">
<include name="tools.jar" />
</fileset>
<fileset dir="${project.lib.dir}">
<include name="*.jar" />
</fileset>
</path>
<!-- 运行路径设置 -->
<path id="run.classpath">
<path refid="compile.classpath" />
<pathelement location="${classes.dir}" />
</path>
<!-- 清理,删除临时目录 -->
<target name="clean" description="清理,删除临时目录">
<!--delete dir="${build.dir}" /-->
<delete dir="${dist.dir}" />
<delete dir="${classes.dir}" />
<echo level="info">清理完毕</echo>
</target>
<!-- 初始化,建立目录,复制文件 -->
<target name="init" depends="clean" description="初始化,建立目录,复制文件">
<mkdir dir="${classes.dir}" />
<mkdir dir="${dist.dir}" />
</target>
<!-- 编译源文件-->
<target name="compile" depends="init" description="编译源文件">
<javac srcdir="${src.dir}" destdir="${classes.dir}" source="1.6" target="1.6" includeAntRuntime="false">
<classpath refid="compile.classpath" />
</javac>
</target>
<!-- 打包类文件 -->
<target name="jar" depends="compile" description="打包类文件">
<jar jarfile="${dist.dir}/jar.jar">
<fileset dir="${classes.dir}" includes="**/*.*" />
</jar>
</target>
<!--上传到服务器
**需要把lib目录下的jsch-0.1.51拷贝到$ANT_HOME/lib下,如果是Eclipse下的Ant环境必须在Window->Preferences->Ant->Runtime->Classpath中加入jsch-0.1.51。
-->
<target name="ssh" depends="jar">
<scp file="${dist.dir}/jar.jar" todir="${remote.username}@${remote.host}:${remote.home}" password="${remote.password}" trust="true"/>
</target> <target name="sshexec" depends="ssh">
<sshexec host="${remote.host}" username="${remote.username}" password="${remote.password}" trust="true" command="source /etc/profile; hadoop jar ${remote.home}/jar.jar ${main.class}"/>
</target>
</project>

build.xml

  1.5.1."remote.host"的值改为自己远程服务器的名称.

  1.5.2."remote.username"的值修改为登录远程的用户名.

  1.5.3."remote.password"的值修改为登录远程的用户密码.

  1.5.4."main.class"的值修改为我们需要运行的代码即可.

  弄完这些就可以测试我们搭建好的Ant环境了.