利用Ant构建Hadoop高效开发环境
来源:互联网 发布:深圳云和数据是培训吗 编辑:程序博客网 时间:2024/06/07 12:53
最近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 的不可映射字符"-->
- 利用Ant构建Hadoop高效开发环境
- 利用Ant构建Hadoop高效开发环境
- 利用Docker构建开发环境
- 利用Docker构建开发环境
- 利用Docker构建开发环境
- 利用Docker构建开发环境
- 利用virtualenv构建开发环境
- Ant构建hadoop工程
- ant环境构建
- Java开发技巧:如何利用Ant手动构建工程
- 利用Eclipse构建Spark集成开发环境
- 利用Eclipse构建Spark集成开发环境
- 利用Eclipse构建Spark集成开发环境
- 利用eclipse构建spark集成开发环境
- 利用Intellij IDEA构建开发环境
- 利用Intellij IDEA构建开发环境
- 利用Ant自动更新构建提交
- Android应用开发高效工具集1---ant构建简单Android项目
- Recovery流程
- Sql 内外全连接的理解[实例]
- SQL索引优化
- JDBC加载数据库驱动的三种方法
- java 二进制转为十进制,十进制转为二进制
- 利用Ant构建Hadoop高效开发环境
- 《Hadoop实战》的笔记-2、Hadoop输入与输出
- java.io中serializable讲解
- 纠正网上资料的错误,loadView,viewDidLoad,viewDidUnload
- Java 线程池学习
- RMI远程调用
- 项目中集成 axis2 发布webservice
- 天气预报的WSDL文件生成 客户端
- alter system/session set events相关知识