首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

利用Ant构建Hadoop高效率开发环境

2012-07-04 
利用Ant构建Hadoop高效开发环境?最近Hadoop的研究中,都是利用Mockito来模拟数据进行,下一个阶段需要在Hado

利用Ant构建Hadoop高效开发环境

?

最近Hadoop的研究中,都是利用Mockito来模拟数据进行,下一个阶段需要在Hadoop服务器上做大量的运行进行验证,同时也要为正式使用做准备。

?

今天考虑使用Ant来搭建一个Hadoop的开发和调试环境,不使用hadoop自带的插件。

思路如下:

1、? 利用Ant在开发机器上将代码编译、打包,最终得到可执行的jar包。

2、? 利用Ant的SSH属性,将jar包传到hadoop服务器的指定工作目录。

这样就开发机器做为编码客户端,与执行服务器之间关联,代码部署的时间基本不用考虑,开发效率可以提高,也利于在真实环境进行验证程序。

?

再扩展开来,可以利用Ant操作hadoop服务器,实现与开发客户端的交互,因为Ant可以通过SSH实现Linux服务器的命令操作。

?

如下是根据需要改造的Ant的bulid.xml文件,实现了:目录清理、目录构建、编译、打包、SFTP上传功能:

?

?

  • <?xml?version="1.0"?encoding="UTF-8"?>??
  • <project?name="AntTest"?default="all"?basedir=".">??
  • ??????
  • ????<property?name="src"?location="./src"?/>??
  • ????<property?name="build"?location="./build/classes"?/>??
  • ????<property?name="dist"?location="./lib"?/>??
  • ??
  • ??
  • ????<path?id="project.classpath">??
  • ????????<fileset?dir="D:\Project\Java\OpenSource\Hadoop\hadoop-0.20.205.0-bin\hadoop-0.20.205.0\lib">??
  • ????????????<include?name="*.jar"?/>??
  • ????????</fileset>??
  • ????</path>??
  • ??
  • ????<target?name="all"?depends="clean,sshexec"></target>??
  • ????<!--?Generate?directory?-->??
  • ????<target?name="init">??
  • ????????<tstamp?/>??
  • ????????<mkdir?dir="${build}"?/>??
  • ????????<mkdir?dir="${dist}"?/>??
  • ????</target>??
  • ??
  • ????<!--?compile?java?-->??
  • ????<target?name="compile"?depends="init">??
  • ????????<javac?srcdir="${src}"?destdir="${build}"?includeantruntime="no">??
  • ????????????<compilerarg?line="-encoding?GBK?"?/>??
  • ????????????<!--?给编译器指定编码,防止出现:"警告:?编码?GBK?的不可映射字符"-->??
  • ????????????<classpath?refid="project.classpath"?/>??
  • ????????</javac>??
  • ????</target>??
  • ????<!--?jar?-->??
  • ????<target?name="dist"?depends="compile">??
  • ????????<mkdir?dir="${dist}"?/>??
  • ????????<jar?jarfile="${dist}/hadoop_project.jar"?basedir="${build}"?/>??
  • ????</target>??
  • ??
  • ????<!--?clean?-->??
  • ????<target?name="clean">??
  • ????????<delete?dir="${build}"?/>??
  • ????????<delete?dir="${dist}"?/>??
  • ????????<echo?message="clean?dir">??
  • ????????</echo>??
  • ????</target>??
  • ??
  • ????<!--?run?-->??
  • ????<target?name="run"?depends="dist">??
  • ????????<java?classpath="${build}"?classname="demo.guide.chp7.HelloWorld">??
  • ????????????<classpath?refid="project.classpath"?/>??
  • ????????????<!--?????<classpath?refid="${build}"?/>??-->??
  • ????????</java>??
  • ????</target>??
  • ??
  • ????<!--?sftp?-->??
  • ????<target?name="sshexec"?depends="run">??
  • ????????<scp?todir="root:****@192.168.9.181:/tmp/"?trust="true">??
  • ????????????<fileset?dir="${dist}"?/>??
  • ????????</scp>??
  • ????</target>??
  • ??
  • </project>??

    ?

    ?

    ?

    在Ant改造中,遇到了以下几个问题,特记录如下:

    1、 Includeantruntime 问题:

    运行报错:

    compile:

    ??? [javac]D:\Project\Java\hadoop_workspace\hadoop_project\bulid.xml:37: warning:'includeantruntime' was not set, defaulting to build.sysclasspath=last; set tofalse for repeatable builds

    [javac] Compiling 1 sourcefile to D:\Project\Java\hadoop_workspace\hadoop_project\build\classes

    ?

    原因及解决方法:

    新版本的Ant需要设置Includeantruntime属性:

    includeantruntime :指出是否应在类路径中包括 Ant 运行时程序库,默认为 yes。

    这里设置为“no”即可解决。

    ?

    2、 Error running javac.execompiler的错误

    编译的时候,出现build.xml:32 Errorrunning javac.exe compiler 或者 build.xml:97: Unable tofind a javac compiler 的错误。

    ?

    原因及解决方法:

    这个原因是没有正确指定JRE的路径,javac找不到导致的。在Eclispe里面打开后,发现是默认到JRE的安装目录,这里修改为指向到JDK的目录即可解决。

    修改的菜单路径为:?Window-->Preferences-->Java-->InstalledJRES

    增加JDK的目录并选中即可(取消之前的JRE目录的选择)。

    ?

    3、 实现SFTP遇到Could notload a dependent class com/jcraft/jsch/Logger 的错误:

    使用SFTP的时候,遇到Could not load a dependent class com/jcraft/jsch/Logger的错误,错误信息如下:

    Could not load a dependent classcom/jcraft/jsch/Logger

    It is not enough to have Ant's optional JARs

    ? you need theJAR files that the optional tasks depend upon.

    ????? Ant's optional task dependencies arelisted in the manual.

    ?

    原因及解决方法:

    Ant自带的jsch的jar包存在问题,需要从官方网站下载后重新引入。

    下载地址为:http://www.jcraft.com/jsch/index.html

    ?

    下载后,在Window-->Preferences-->Ant-->Runtime中,添加外部jar引用,增加新的jsch的jar包即可。

    ?

    4、 警告:编码UTF-8 的不可映射字符

    Ant可以编译成功,但出现警告:编码 UTF-8 的不可映射字符

    ?

    原因为项目编码为GBK的问题,两个办法可以解决:

    1、? 修改项目编码格式

    2、? 在ant的javac的编译节点中,增加以下属性:

    <compilerargline="-encodingGBK "/>

    <!-- 给编译器指定编码,防止出现:"警告: 编码 UTF-8 的不可映射字符"-->

    ?

    ?

    ?

    ?

    时间:2011年10月23日

    ?

    -------------------------------------------

    ?

    作者:CNZQS|JesseZhang? 个人博客:CNZQS(http://www.cnzqs.com)

    版权声明:除非注明,文章均为原创,可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明?

    --------------------------------------------

  • 热点排行