64位centos 下编译 hadoop 2.6.0 源码

64位os下为啥要编译hadoop就不解释了,百度一下就能知道原因,下面是步骤:

前提:编译源码所在的机器,必须能上网,否则建议不要尝试了

一. 下载必要的组件

a) 下载hadoop源码 (当前最新的稳定版是2.6.0)
地址  http://mirrors.hust.edu.cn/apache/hadoop/common/stable/hadoop-2.6.0-src.tar.gz
b) 下载apache-ant (centos自带的ant版本太低,编译过程中会报错)
地址: http://mirrors.cnnic.cn/apache//ant/binaries/apache-ant-1.9.4-bin.zip (最新版本即可)
c) 下载protobuf-2.5.0.tar.gz (这是google出品的一个数据传输格式)
地址: https://developers.google.com/protocol-buffers/docs/downloads (官网地址要翻!墙!,百度上也能找到国内下载地址)
注意:hadoop2.6.0必须配protobuf 2.5.0版本,版本不匹配,编译将失败
d) 下载findbugs
地址: http://prdownloads.sourceforge.net/findbugs/findbugs-3.0.1.tar.gz?download (最新版本即可)
e) 下载maven
地址: http://maven.apache.org/download.cgi (下载最新版即可,本文中用的是3.2.5)
f) 下载jdk
地址:这个比较容易找,大家自己去oracle官网找着,jdk1.6 及以上(本文用的是1.7)

二. 设置环境变量

(下面三种方式任选其一即可)
sudo vi /etc/profile
vi ~/.bashrc
vi ~/.bash_profile
上面3个命令随便用哪个,进入vi编辑器后,参考下面的内容设置环境变量:

(注: 下面的$ JAVA _ HOME部分,博客发表后,好象博客园会自动变成其它格式,正确内容参考图片)
export ANT_HOME=/home/cargo/apache-ant-1.9.4
export FINDBUGS_HOME=/home/cargo/findbugs-3.0.1
export JAVA_HOME=/home/cargo/jdk1.7.0_76
export M2_HOME=/home/cargo/apache-maven-3.2.5
export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin:$M2_HOME/bin:$ANT_HOME/bin:$FINDBUGS_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

编译过程中,maven会从互联网下载很多jar包,强烈建议在局域网搭建一个nexus私服, 另外建议修改maven/conf/settings.xml文件,参考内容如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <settings xmlns=" http://maven.apache.org/SETTINGS/1.0.0"
 3           xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
 4           xsi:schemaLocation=" http://maven.apache.org/SETTINGS/1.0.0  http://maven.apache.org/xsd/settings-1.0.0.xsd">
 5
 6   <localRepository>/home/cargo/m2</localRepository>
 7
 8   <mirrors>
 9     <mirror>
10       <id>nexus</id>
11       <mirrorOf>*</mirrorOf>
12       <url> http://172.21.129.57:8081/nexus/content/groups/public/</url>
13     </mirror>
14   </mirrors>
15
16   <profiles>
17     <profile>
18       <id>nexus</id>
19       <repositories>
20         <repository>
21           <id>nexus</id>
22           <name>Nexus</name>
23           <url> http://172.21.129.57:8081/nexus/content/groups/public/</url>
24           <releases><enabled>true</enabled></releases>
25           <snapshots><enabled>true</enabled></snapshots>
26         </repository>
27       </repositories>
28       <pluginRepositories>
29         <pluginRepository>
30           <id>nexus</id>
31             <name>Nexus</name>
32             <url> http://172.21.129.57:8081/nexus/content/groups/public/</url>
33             <releases><enabled>true</enabled></releases>
34             <snapshots><enabled>true</enabled></snapshots>
35         </pluginRepository>
36       </pluginRepositories>
37     </profile>
38   </profiles>
39   <activeProfiles>
40     <activeProfile>nexus</activeProfile>
41   </activeProfiles>
42
43  </settings>

<localRepository>/home/cargo/m2</localRepository> 这里设置一个下载jar包的本机仓库目录,通常编译不会很顺利,如果因网络问题下载jar包失败,下次再运行安装时, 需要手动清空本地仓库的缓存,指定一个好记的目录,清理起来比较方便

上面这一堆弄好后,验证一下:
验证ant,输入anv -version,正常应该反馈以下类似信息:
Apache Ant(TM) version 1.9.4 compiled on April 29 2014

验证maven,输入mvn -version,正常应该反馈以下类似信息:
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-15T01:29:23+08:00)
Maven home: /home/cargo/apache-maven-3.2.5
Java version: 1.7.0_76, vendor: Oracle Corporation
Java home: /home/cargo/jdk1.7.0_76/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-431.23.3.el6.x86_64", arch: "amd64", family: "unix"

三.安装必要的软件

sudo yum -y install gcc*
sudo yum -y install cmake
sudo yum -y install glibc-headers
sudo yum -y install gcc-c++
sudo yum -y install zip-devel
sudo yum -y install openssl-devel
sudo yum -y install svn
sudo yum -y install git
sudo yum -y install ncurses-devel
sudo yum -y install lzo-devel
sudo yum -y install autoconf
sudo yum -y install libtool
sudo yum -y install automake

这一堆东西都装上吧,省得编译过程中提示少这个,少那个

四.配置\安装protobuf

进入protobuf所在目录,然后按下面顺序操作
./configure
make
make check
sudo make install

五.编译hadoop

进入hadoop源代码目录,输入
mvn clean package -DskipTests -Pdist,native,docs -Dtar

上面这行命令大意是先清理target目录,再打包,同时跳过测试,应用dist,native,docs这三种profile,且最终目标是生成tar包

通常编译不会很顺利,下面是可能会遇到的一些问题:

a) maven-enforcer-plugin规则验证失败

编辑源代码根目录下的pom.xml,找到maven-enforcer-plugin所在的部分

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>1.3.1</version>
          <configuration>
            <rules>
              <requireMavenVersion>
                <version>[3.0.2,)</version>
              </requireMavenVersion>
              <requireJavaVersion>
                <version>1.7</version>
              </requireJavaVersion>
            </rules>
          </configuration>
 </plugin>

注意红色部分,原来的值是1.6,即规定了使用jdk1.6,如果本机安装的jdk是1.7,这里相应改一下
b)maven-antrun-plugin各种报错

同样尝试修改pom.xml

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>1.7</version>
        <dependencies>
            <dependency>
                  <groupId>org.codehaus.plexus</groupId>
                  <artifactId>plexus-utils</artifactId>
                  <version>2.0.5</version>
              </dependency>
              <dependency>
                    <groupId>org.apache.ant</groupId>
                     <artifactId>ant</artifactId>
                     <version>1.9.4</version>
                </dependency>
        </dependencies>
 </plugin>

红色这一部分是原来没有的,可以尝试加上再试试,其中ant依赖项的版本号,调整成本机实际的ant版本号

c) org.slf4j系列jar包找不到的问题
hadoop所依赖的org.slf4j这一系列的Jar包版本都特别低,如果maven无法自动从互联网下载成功,可以手动根据出错信息,到网上下载这些jar包,然后放到本地仓库的相关目录

d) apache-tomcat-6.0.41.tar.gz 下载太卡的问题
 [get] Getting:  http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.41/bin/apache-tomcat-6.0.41.tar.gz
 [get] To: /home/cargo/hadoop-2.6.0-src/hadoop-common-project/hadoop-kms/downloads/apache-tomcat-6.0.41.tar.gz
到这一步时,如果下载失败,可以手动下载这个包,然后放到 hadoop-2.6.0-src/hadoop-common-project/hadoop-kms/downloads/ 目录下

e)内存不足

export MAVEN_OPTS="Xms256m -Xmx512m"

把这一行加到最开始设置环境变量的文件最后即可

tips: 如果人品不好,上面这些招数用尽后,仍然各种报错,可以尝试把maven命令调整成

mvn compile -DskipTests -Pdist,native -Dtar

即先不打包,仅编译,且跳过测试,不生成文档 或者

mvn install -DskipTests -Pdist,native -Dtar

直接将编译通过的jar包安装到本机maven仓库

之所以这样做的原因,经个人实际测试发现,很多错误是在test和验证阶段出现的,不指定成package后,可以避开部分测试及验证.

强烈在编译的漫长等待中,读一下源代码目录下的BUILDING.TXT文件,这里面大概描述了各种平台(MAC OS/WINDOWS/LINUX)下的编译主要步骤,祝各位编译顺利!

历经千辛万苦编译成功后,hadoop-2.6.0-src/hadoop-dist/target 这个目录下会生成编译结果

时间: 2024-10-13 18:30:26

64位centos 下编译 hadoop 2.6.0 源码的相关文章

64位CentOS上编译 Hadoop 2.2.0

1. 下载Hadoop 2.2.0 源码包,并解压 $ wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0-src.tar.gz $ tar zxf hadoop-2.2.0-src.tar.gz 2. 安装下面的软件 $ sudo yum install cmake lzo-devel zlib-devel gcc autoconf automake libtool ncurses-dev

ubuntu12.04下编译 全志A33 android6.0 源码

有错误请指出. 入职4天了,为了编译android6.0搞的很烦,遇到了很多问题,会将我遇到的问题写出来,做个总结. 我用的是ubuntu12.04,16.04应该也是可行的. 编译时遇到的问题大部分是缺少包的问题,编译之前首先 我装完ubuntu自带了openjdk7,但是之前读开发手册需要jdk1.6,先去下载jdk-6-linux-64.bin安装过后,配置环境变量,配置环境变量后 执行以下命令,单单是编译,这里有很多都不需要,不过为了以防万一 $sudo apt-get install

win7在64位系统下编译openssl

以前在笔记本上配置过openssl-0.9.8g版本,今天在公司的台式机上配置死活没配置成功,机器的系统是win7,64位,编译openssl-1.0.1e出现各种莫名的错误,最后无意中编译了1.0.0.a版本编译成功了. 如果出现ml找不到的时候,直接在vc10.0/bin下拷贝就好. 参考文章:http://blog.chinaunix.net/uid-20479991-id-216269.html win7在64位系统下编译openssl,布布扣,bubuko.com

在Eclipse配置并编译worldwind java2.1.0源码,选中Src目录下gov.nasa.worldwindx.examples包下ApplicationTemplate.java类文件run时提示“javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V”异常的解决办法

问题现象: 在Eclipse配置并编译worldwind java2.1.0源码,选中Src目录下gov.nasa.worldwindx.examples包下ApplicationTemplate.java类文件run时提示“javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V”异常. 解决办法: 1.定位到报错的方法为WWXML.java文件中的createDocumentBuilder方法: pub

Mac上编译并运行Android5.0源码

下载.配置环境.build和运行参考的都是Android Source提供的文档,包括:Initializing a Build Environment,Downloading the Source和Building the System. 我是在OSX 10.10.3上编译的AOSP,记录一下中途碰到的各种问题. 下载 AOSP需要FQ,而且经常会断,还好是断点续传,坚持个两三天怎么也能下下来. case sensitive system 我在Mac上对file system只会用Disk U

编译Docker&lt;v1.9.0&gt;源码和初级安装

本文主要介绍了如何在POWER CPU处理器上编译和安装Docker服务.很多时候,我们都需要自己编译Docker源码,有的时候是由于自己的处理器没有对应的安装包,有的时候是由于当前的新版本还有发布,下面提供了docker编译的步骤和安装方法,供大家参考. 1. 编译环境 POWER8 处理器, ppc64le Ubuntu14.042. 编译 下载最新源码 git clone https://github.com/docker/docker 参照redhat的编译脚本 https://gith

32位Oracle10g在64位CentOS下安装失败记录

环境信息:Alibaba Cloud Elastic Compute Service,CentOS Linux release 7.4.1708 (Core),16C/64GB. 使用32位Oracle10g安装介质在64位CentOS7环境下安装时总是报出如下错误信息: 按照提示日志路径,发现如下错误信息: INFO: collect2: error: ld returned 1 exit status INFO: genclntsh: Failed to link libclntsh.so.

xsocks 64位平台下编译问题小记

1.src/common/public.h uint32_t lpParameter 改为 void* lpParameter; 2.SocksMgr.cpp DWORD WINAPI CSocksMgr::ForwardProc(void* lpParameter) { // int s = int (lpParameter); ... } 编译不过去.因为在 64位平台下,void*向 int转换会丢失精度. DWORD WINAPI CSocksMgr::ForwardProc(void*

64位Win7下编译Python3的计算机视觉库:OpenCV

注:本文全原创,作者:ZMAN  (http://www.cnblogs.com/zmanone/) OpenCV目前最新版是3.0.0 rc1,官方给出了编译好的Python2可以直接使用的cv2.pyd,可我想在Python3下用啊!只能硬着头皮自己编译了,Mingw编译到最后一步失败了,最终使用visual studio 2012编译成功,过程分享如下: (注①:本步骤适用于WIN7 64位操作系统,Python版本为3.4.3 64bit,OpenCV版本为 3.0.0 rc1,我的CU