当前位置:首页 » 编程软件 » ant编译hadoop

ant编译hadoop

发布时间: 2023-03-01 02:41:11

‘壹’ 如何在CentOS6.5下编译64位的Hadoop2.x

1,安装gcc,执行如下的几个yum命令即可

java代码

yum -y install gcc

yum -y install gcc-c++

yum install make

yum install autoconf automake libtool cmake ncurses-devel openssl-devel gcc*

2,安装JDK,并设置环境变量,完成后测试安装成功否

Java代码

[root@ganglia ~]# java -version

java version "1.5.0"

gij (GNU libgcj) version 4.4.7 20120313 (Red Hat 4.4.7-4)

Copyright (C) 2007 Free Software Foundation, Inc.

This is free software; see the source for ing conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@ganglia ~]#

3, 安装Maven,安装完成后测试安装与否

Java代码

[root@ganglia ~]# mvn -v

Apache Maven 3.2.1 (; 2014-02-15T01:37:52+08:00)

Maven home: /usr/local/maven

Java version: 1.7.0_25, vendor: Oracle Corporation

Java home: /usr/local/jdk1.7.0_25/jre

Default locale: zh_CN, platform encoding: UTF-8

OS name: "linux", version: "2.6.32-431.el6.x86_64", arch: "amd64", family: "unix"

[root@ganglia ~]#

4, 安装Ant, 安装完成后,依旧测试成功与否

Java代码

[root@ganglia ~]# ant -version

Apache Ant(TM) version 1.9.4 compiled on April 29 2014

[root@ganglia ~]#

5,安装protobuf,安装方式,从官网下载tar.gz的包,并上传到linux上解压,然后进入根目录下,执行如下的几个命令:

Java代码

./configure

make

make check

make install

然后,执行如下命令,进行测试安装成功与否

Java代码

[root@ganglia protobuf-2.5.0]# protoc

Missing input file.

[root@ganglia protobuf-2.5.0]#

6,从hadoop官网下载hadoop2.2.0的版本的源码的src的包,并查看目录

Java代码

[root@ganglia ~]# cd hadoop-2.2.0-src

[root@ganglia hadoop-2.2.0-src]# ll

总用量 108

-rw-r--r--. 1 67974 users 9968 10月 7 2013 BUILDING.txt

drwxr-xr-x. 2 67974 users 4096 10月 7 2013 dev-support

drwxr-xr-x. 4 67974 users 4096 6月 9 17:05 hadoop-assemblies

drwxr-xr-x. 3 67974 users 4096 6月 9 17:27 hadoop-client

drwxr-xr-x. 9 67974 users 4096 6月 9 17:14 hadoop-common-project

drwxr-xr-x. 3 67974 users 4096 6月 9 17:26 hadoop-dist

drwxr-xr-x. 7 67974 users 4096 6月 9 17:20 hadoop-hdfs-project

drwxr-xr-x. 11 67974 users 4096 6月 9 17:25 hadoop-maprece-project

drwxr-xr-x. 4 67974 users 4096 6月 9 17:06 hadoop-maven-plugins

drwxr-xr-x. 3 67974 users 4096 6月 9 17:27 hadoop-minicluster

drwxr-xr-x. 4 67974 users 4096 6月 9 17:03 hadoop-project

drwxr-xr-x. 3 67974 users 4096 6月 9 17:05 hadoop-project-dist

drwxr-xr-x. 12 67974 users 4096 6月 9 17:26 hadoop-tools

drwxr-xr-x. 4 67974 users 4096 6月 9 17:24 hadoop-yarn-project

-rw-r--r--. 1 67974 users 15164 10月 7 2013 LICENSE.txt

-rw-r--r--. 1 67974 users 101 10月 7 2013 NOTICE.txt

-rw-r--r--. 1 67974 users 16569 10月 7 2013 pom.xml

-rw-r--r--. 1 67974 users 1366 10月 7 2013 README.txt

[root@ganglia hadoop-2.2.0-src]#

7,修改/root/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth/pom.xml文件,增加,补丁内容,这部分是hadoop2.2.0的bug,如果是其他的2.x的版本,可以视情况而定,内容如下:

Xml代码

<dependency>

<groupId>org.mockito</groupId>

<artifactId>mockito-all</artifactId>

<scope>test</scope>

</dependency>

<!--新增的内容开始 -->

<dependency>

<groupId>org.mortbay.jetty</groupId>

<artifactId>jetty-util</artifactId>

<scope>test</scope>

</dependency>

<!--新增的内容结束 -->

<dependency>

<groupId>org.mortbay.jetty</groupId>

<artifactId>jetty</artifactId>

<scope>test</scope>

</dependency>

8,修改完毕后,回到hadoop-2.2.0-src的跟目录下执行编译打包命令:

Java代码

mvn clean

mvn package -Pdist,native -DskipTests -Dtar

然后等待半个小时左右的编译时间,网速快的话,时间可能会更短,编译完成 编译好的hadoop包,

Java代码

[root@ganglia target]# pwd

/root/hadoop-2.2.0-src/hadoop-dist/target

[root@ganglia target]# ll

总用量 282348

编译完成后的本地库,位于如下位置,并查看本地库支持位数:

至此,我们的编译已经,成功完成,然后,我们就可以使用在target目录下,编译生成的hadoop新的tar.gz包,来部署我们的hadoop集群。

‘贰’ 如何使用ANT在命令行进行编译和测试

一、环境变量
在网上找到ANT的压缩包,解压缩以后放到C盘根目录如下图

对,就是这个鬼样子,放在这里就可以用了,不用安装之类的
环境变量如下图:

你要定义ANT_HOME,然后让系统path找到这个ANT_HOME就行了

二、写build.xml

你的目录结构如下图:

源文件 放在src
引用的jar包放在lib
编译结果安排在classes

接下来就是build.xml了
如下,自己看吧

[html] view plain
<?xml version="1.0"?>
<project name="pojo_0428" default="prepare" basedir=".">

<property name="source.root" value="src"/>
<property name="class.root" value="classes"/>
<property name="lib.dir" value="lib"/>

<!-- class path for compilation and execution -->
<path id="basepath">
<!-- 运行时 class文件的位置 -->
<pathelement location="${class.root}" />
<!-- jar包 -->
<fileset dir="${lib.dir}">
<include name="*.jar"/>
</fileset>
</path>

<!--默认的target -->
<target name="prepare">
<delete dir="${class.root}"/>
<mkdir dir="${class.root}"/>
</target>

<!--编译 -->
<target name="compile" depends="prepare">
<javac srcdir="${source.root}"
destdir="${class.root}"
debug="on"
optimize="off"
deprecation="on">
<classpath refid="basepath"/>
</javac>
</target>
<!--执行。 案例程序的入口 依赖 compile -->
<target name="run" depends="compile">
<java classname="com.javathink.Student" fork="true">
<classpath refid="basepath"/>
</java>
</target>

</project>

‘叁’ 如何重新编译hadoop jar包

重新编译hadoop jar包:
编译打包
由于hadoop打包时需要依赖于操作系统的底层。
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install autotool
sudo apt-get install libtool
4.安装jdk1.5 和apache-forrest-0.8
打包命令:ant package -Djava5.home=/home/rongneng/env/jdk1.5.0_22 -Dforrest.home=/home/rongneng/env/apache-forrest-0.8

‘肆’ 用ant将程序编译和运行,都要做什么工作

ant是apache项目组的一个子项目,是一个基于java的构建工具。ant本身用java实现,要构建的工程的配置文件用xml格式描述,可以很方便的实现跨平台构建工作。
ant 可以从http://ant.apache.org下载,目前最新版本为1.5.4。下载完毕后直接解压缩到一个目录,例如D:\ant。

下一步我们需要设置如下的环境变量:
ANT_HOME:ant的安装目录,如果按上面方法解压缩了ant,那么这个值应该设为D:\ant
JAVA_HOME:jdk的安装目录
PATH:把%ANT_HOME%\bin目录加到path变量,以便于从命令行直接运行ant。

(1)建立build.xml

用ant编译规模较大的工程非常方便,每个工程都对应一个build.xml文件,这个文件包含与这个工程有关的路径信息和构建任务。

下面是一个最简单的build.xml文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="projectTemplate" default="init" basedir=".">
<target name="init" >
<property name="lib.dir" value="lib"/>
<echo message="Hello ,lib.dir is set to ${lib.dir}" >
</echo>
</target>
</project>

每个build.xml有且仅有一个project,每个project下面可以包含多个target,每个target表示一个小的任务,每个任务负责执行一段脚本。ant有内置任务集可供使用,例如上面的echo就是在console上显示消息。

更详细的内置任务请参考http://ant.apache.org/manual/coretasklist.html

${lib.dir}表示引用一个名字叫做lib.dir的属性值,这个属性的值就是lib。

(2)运行ant

使用ant.bat可以直接运行ant,如果不带任何参数,ant会在当前路径下搜索build.xml文件,如果找到了这个文件,就运行project的default属性指定的target.我们也可以带参数来运行ant,以便选择build.xml文件和要运行的target:

ant -buildfile c:\demo\build.xml init

表示运行c:\demo\build.xml 中名字为init的target

(3)ant的目标依赖

target有一个属性depends,在其中可以指定一系列的target名字,表示在执行该target前,必须首先执行的一系列其它target。depends具有传递性,例如:targetA depends targetB,而targetB depends targetC和targetD,这样在执行targetA之前,首先执行C和D,然后执行B,最后才会执行A。

下面是个简单的例子,在执行编译的动作前,首先需要建立一个目标代码存放的目录,然后再执行编译。

<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="project" default="init" basedir=".">
<target name="init" >
<property name="dist" value="dist"/>
<mkdir dir="${dist}" />
</target>
<target name="build" depends="init">
<javac srcdir="SourceCode" destdir="${dist}">
</javac>
</target>
</project>

‘伍’ hadoop1.2.1+eclipse: 执行ant编译错误提示:

.在Eclipse中执行Ant的脚本编译出现问题
Copy
to clipboard

Posted by: njord
Posted on: 2003-08-19
11:40

信息如下:
compile:
[javac]
Compiling 15 source files to
E:\work_home\OakingSecurity\build\classes
[javac] BUILD FAILED:
file:E:/work_home/OakingSecurity/build.xml:48: Unable to find a javac
compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps
JAVA_HOME does not point to the
JDK

我的系统变量设置了JAVA_HOME的,在命令行直接运行ant都没有问题。
请问这是怎么回事?是不是还要在Eclipse中设置什么?

2.Re:在Eclipse中执行Ant的脚本编译出现问题 [Re: njord]
Copy
to clipboard

Posted by: fengyifan
Posted on: 2003-08-19
21:49

put tools.jar in ant classpath

3.Re:在Eclipse中执行Ant的脚本编译出现问题 [Re: njord]
Copy
to clipboard

Posted by: babyoracle
Posted on: 2003-08-20
07:42

用这个方法就可以了
http://www.cjsdn.com/post/view?bid=7&id=45620&sty=3&tpg=1&age=0

4.Re:在Eclipse中执行Ant的脚本编译出现问题 [Re: njord]
Copy
to clipboard

Posted by: njord
Posted on: 2003-08-22
13:03

在Eclipse的首选项中可以配置ANT_HOME,但又出现如下错误:

BUILD FAILED:
java.lang.VerifyError: (class:
org/apache/xerces/parsers/IntegratedParserConfiguration, method:
configurePipeline signature: ()V) Incompatible type for getting or setting
field
Total time: 94 milliseconds

为什么?

5.Re:在Eclipse中执行Ant的脚本编译出现问题 [Re: feng]
Copy
to clipboard

Posted by: njord
Posted on: 2003-08-22
13:12

feng wrote:
put tools.jar in ant
classpath

用Eclipse默认的ANT选项,然后加上tools.jar是可以了,不过它又提示不支持junit任务,晕倒~

[junit]
BUILD FAILED: file:E:/work_home/OakingSecurity/build.xml:76: Could not create
task or type of type: junit.

Ant could not find the task or a class this
task relies upon.

而我用自己下载的Ant1.5.3又出现前面帖子的错误提示,为什么?

6.Re:在Eclipse中执行Ant的脚本编译出现问题 [Re: njord]
Copy
to clipboard

Posted by: njord
Posted on: 2003-08-22
13:19

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:746
制作脚本网站 发布:2025-10-20 08:17:34 浏览:1009
python中的init方法 发布:2025-10-20 08:17:33 浏览:715
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:876
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:774
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1124
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:349
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:227
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:911
python股票数据获取 发布:2025-10-20 07:39:44 浏览:873