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 -Dtar

上面这行命令大意是先清理target目录,再打包,同时跳过测试,应用dist,native这2种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

即先不打包,仅编译

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏怀英的自我修炼

考研英语-1-导学

英二图表作文要重视。总体而言,英语一会比英语二难点。不过就写作而言,英语二会比英语一有难度,毕竟图表作文并不好写。

12410
来自专栏钱塘大数据

理工男图解零维到十维空间,烧脑已过度,受不了啦!

让我们从一个点开始,和我们几何意义上的点一样,它没有大小、没有维度。它只是被想象出来的、作为标志一个位置的点。它什么也没有,空间、时间通通不存在,这就是零维度。

35230
来自专栏haifeiWu与他朋友们的专栏

复杂业务下向Mysql导入30万条数据代码优化的踩坑记录

从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负...

30940
来自专栏前端桃园

知识体系解决迷茫的你

最近在星球里群里都有小伙伴说道自己对未来的路比较迷茫,一旦闲下来就不知道自己改干啥,今天我这篇文章就是让你觉得一天给你 25 个小时你都不够用,觉得睡觉都是浪费...

22540
来自专栏腾讯高校合作

【倒计时7天】2018教育部-腾讯公司产学合作协同育人项目申请即将截止!

16220
来自专栏钱塘大数据

中国互联网协会发布:《2018中国互联网发展报告》

在2018中国互联网大会闭幕论坛上,中国互联网协会正式发布《中国互联网发展报告2018》(以下简称《报告》)。《中国互联网发展报告》是由中国互联网协会与中国互联...

13750
来自专栏腾讯社交用户体验设计

ISUX Xcube智能一键生成H5

51620
来自专栏FSociety

SQL中GROUP BY用法示例

GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类...

5.2K20
来自专栏Ken的杂谈

【系统设置】CentOS 修改机器名

18430
来自专栏微信公众号:小白课代表

不只是软件,在线也可以免费下载百度文库了。

不管是学生,还是职场员工,下载各种文档几乎是不可避免的,各种XXX.docx,XXX.pptx更是家常便饭,人们最常用的就是百度文库,豆丁文库,道客巴巴这些下载...

44830

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励