`
jessezhang1981
  • 浏览: 41227 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

利用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上传功能:

 

 

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <project name="AntTest" default="all" basedir=".">  
  3.       
  4.     <property name="src" location="./src" />  
  5.     <property name="build" location="./build/classes" />  
  6.     <property name="dist" location="./lib" />  
  7.   
  8.   
  9.     <path id="project.classpath">  
  10.         <fileset dir="D:\Project\Java\OpenSource\Hadoop\hadoop-0.20.205.0-bin\hadoop-0.20.205.0\lib">  
  11.             <include name="*.jar" />  
  12.         </fileset>  
  13.     </path>  
  14.   
  15.     <target name="all" depends="clean,sshexec"></target>  
  16.     <!-- Generate directory -->  
  17.     <target name="init">  
  18.         <tstamp />  
  19.         <mkdir dir="${build}" />  
  20.         <mkdir dir="${dist}" />  
  21.     </target>  
  22.   
  23.     <!-- compile java -->  
  24.     <target name="compile" depends="init">  
  25.         <javac srcdir="${src}" destdir="${build}" includeantruntime="no">  
  26.             <compilerarg line="-encoding GBK " />  
  27.             <!-- 给编译器指定编码,防止出现:"警告: 编码 GBK 的不可映射字符"-->  
  28.             <classpath refid="project.classpath" />  
  29.         </javac>  
  30.     </target>  
  31.     <!-- jar -->  
  32.     <target name="dist" depends="compile">  
  33.         <mkdir dir="${dist}" />  
  34.         <jar jarfile="${dist}/hadoop_project.jar" basedir="${build}" />  
  35.     </target>  
  36.   
  37.     <!-- clean -->  
  38.     <target name="clean">  
  39.         <delete dir="${build}" />  
  40.         <delete dir="${dist}" />  
  41.         <echo message="clean dir">  
  42.         </echo>  
  43.     </target>  
  44.   
  45.     <!-- run -->  
  46.     <target name="run" depends="dist">  
  47.         <java classpath="${build}" classname="demo.guide.chp7.HelloWorld">  
  48.             <classpath refid="project.classpath" />  
  49.             <!--     <classpath refid="${build}" />  -->  
  50.         </java>  
  51.     </target>  
  52.   
  53.     <!-- sftp -->  
  54.     <target name="sshexec" depends="run">  
  55.         <scp todir="root:****@192.168.9.181:/tmp/" trust="true">  
  56.             <fileset dir="${dist}" />  
  57.         </scp>  
  58.     </target>  
  59.   
  60. </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)

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

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

1
0
分享到:
评论

相关推荐

    在windows下搭建hadoop2开发环境小案例

    总结起来,搭建Windows下的Hadoop2开发环境涉及下载和安装Hadoop,配置环境变量和核心配置文件,调整系统以适应Windows环境,以及利用Ant进行项目构建。这个过程虽然相对复杂,但是一旦完成,你就可以在本地环境中...

    ant打包hadoop-eclipse-plugin

    为了使Ant能够构建Hadoop-eclipse-plugin,你需要修改 `%HADOOP_HOME%\src\contrib\build-contrib.xml` 文件。在这个文件中,你需要添加两行属性定义,`eclipse.home` 指向你的Eclipse安装路径,`version` 设置为...

    使用ANT实现Run-on-Hadoop功能

    1. **配置环境**:首先确保你的开发环境已经安装了Hadoop和Ant。设置好Hadoop的相关环境变量,如`HADOOP_HOME`,并将其添加到系统的PATH中。 2. **创建Ant项目结构**:一个典型的Ant项目会包含`.classpath`和`....

    hadoop-eclipse-plugin-2.7.7.jar.rar

    Hadoop Eclipse Plugin 2.7.7.jar 是一个专为Java开发者设计的工具,它将Hadoop的开发环境与Eclipse IDE紧密集成,极大地提高了在Windows 10系统上进行Hadoop项目开发的效率。该插件是在JDK 1.8.181版本环境下编译,...

    hadoop -1.2.1-jar(全)

    5. **hadoop-ant-1.2.1.jar**:Hadoop Ant任务库,使得开发者可以使用Apache Ant构建工具来编译、打包和执行Hadoop项目,简化了基于Ant的Hadoop应用的构建过程。 6. **hadoop-minicluster-1.2.1.jar**:这个库提供...

    hadoop源码的第三方jar包

    这两个jar包是Ant的运行时库,用于构建Hadoop项目。Ant-launcher是Ant的启动器,负责执行构建脚本。 3. **zookeeper-3.4.0.jar和zookeeper-3.4.0-test.jar**:ZooKeeper是一个分布式的,开放源码的协调服务,它是...

    hadoop 2.4.1+mahout0.9环境搭建

    这涉及到基本的Git克隆源码、Maven或Ant构建命令,以及在Hadoop集群上提交和运行MapReduce任务的命令。 6. **机器学习算法**:Mahout 0.9包含了多种机器学习算法,如随机森林(Random Forest)、K-means聚类、协同...

    hadoop2x-eclipse-plugin-original

    开发者可以利用这些源代码来编译自己的“hadoop-eclipse-x.y.z.jar”文件,这个JAR文件是Eclipse集成Hadoop开发环境所必需的,它使得开发者可以直接在Eclipse环境中创建、构建、调试和运行Hadoop MapReduce项目。...

    hadoop1.0.4 eclipse插件

    Eclipse插件则是为了帮助开发人员在Eclipse集成开发环境中更方便地开发、测试和部署Hadoop应用。 标题中的“hadoop1.0.4 eclipse插件”指的是一个专门为Hadoop 1.0.4版本设计的Eclipse插件,使得开发者可以在...

    linux编译hadoop2.7.4

    这会下载所有必要的依赖,并构建Hadoop。编译完成后,你可以使用`mvn package`命令生成可部署的Hadoop二进制包。 不过,要注意的是,Hadoop是跨平台的,因此在编译时需要指定正确的体系结构。在64位Linux环境下,你...

    安装hadoop相关的jar包

    6. **构建Hadoop**:进入`hadoop-2.7.2-src`目录,使用Maven执行构建命令,例如`mvn clean install`。 7. **安装Protobuf**:遵循Protobuf的官方文档编译和安装,并将其库路径添加到系统库路径中。 8. **使用...

    hadoop1.0.4 Eclipse-Plugin 插件

    Ant是一个Java项目构建工具,它允许用户通过XML配置文件来定义构建过程,这对于打包和构建Hadoop插件的JAR文件至关重要。 安装插件的过程通常包括以下步骤: 1. 下载提供的`hadoop-eclipse-plugin`压缩包。 2. 解压...

    Hadoop源码编译需要工具

    标题中的“Hadoop源码编译需要工具”指的是在本地环境中构建Hadoop源代码时所需的必备组件。Hadoop是一个开源的分布式计算框架,主要用于处理和存储海量数据。为了从源代码编译Hadoop,我们需要一些特定的开发工具和...

    Hadoop本地调试NativeIO

    2. **构建Hadoop源码**:下载Hadoop源代码,使用maven或ant构建系统来编译并生成本地库。这通常会生成libhadoop.so库文件。 3. **设置环境变量**:将生成的库文件路径添加到系统的LD_LIBRARY_PATH中,以便Java能够...

    编译hadoop所需要的额外工具

    在构建和编译Hadoop项目时,除了基本的Java开发环境之外,还需要一些额外的工具来确保编译过程顺利进行。这些工具包括Apache Ant、FindBugs和Protocol Buffers(protobuf)。下面将详细介绍这三个工具以及它们在...

    apache-ant-1.9.6-bin.tar.gz

    Apache Ant 1.9.6是该工具的一个稳定版本,提供了许多改进和修复,确保在各种开发环境中都能有效运行。 首先,我们需要了解如何在CentOS 6.5上安装Apache Ant 1.9.6。这个过程包括下载压缩文件,解压,配置环境变量...

    【Hadoop篇06】Hadoop源码编译1

    - **Ant安装**:Ant是Apache的一个构建工具,用于打包和构建Hadoop项目。同样设置`ANT_HOME`和`PATH`环境变量。 - **protobuf安装**:protobuf是Google的一种数据序列化框架,用于Hadoop内部通信。安装后,Hadoop...

    Hadoop编译需要的jar包

    6. **编译Hadoop**:使用Maven执行编译命令,例如`mvn clean install`,这会下载所有必要的依赖,并构建Hadoop项目。 7. **运行测试**:编译完成后,可以运行Hadoop的单元测试,确保一切正常。 8. **打包与部署**:...

    Hadoop学习之路(三)Hadoop-2.7.5在CentOS-6.7上的编译

    **步骤2:** 查看`BUILDING.txt`文件,该文件详细列出了编译Hadoop所需的环境和依赖项,包括但不限于: - **Unix System**:操作系统的类型。 - **JDK 1.7+**:Java开发工具包的版本。 - **Maven 3.0 or later**...

Global site tag (gtag.js) - Google Analytics