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文件,参考内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns=" http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=" http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>/home/cargo/m2</localRepository> <mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url> http://172.21.129.57:8081/nexus/content/groups/public/</url>
</mirror>
</mirrors> <profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus</id>
<name>Nexus</name>
<url> http://172.21.129.57:8081/nexus/content/groups/public/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus</name>
<url> http://172.21.129.57:8081/nexus/content/groups/public/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles> </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 这个目录下会生成编译结果
64位centos 下编译 hadoop 2.6.0 源码的更多相关文章
- 64位CentOS上编译 Hadoop 2.2.0
下载了Hadoop预编译好的二进制包,hadoop-2.2.0.tar.gz,启动起来后.总是出现这样的警告: WARN util.NativeCodeLoader: Unable to load n ...
- ubuntu14.04 64位系统下编译3.13.11内核源码
该过程一共分为四步: 1.下载内核:我下载的是3.13.11这个版本的内核! 2.解压内核:我将其解压/home/jello/Downloads/linux-3.13.11目录下!下文将会基于此目录编 ...
- 64位Win7下编译hadoop 1.2.1问题解决
0.报sed的错误.原因在于没有安装cygwin.安装cygwin的时候要选择sed 1.Cannot run program "autoreconf". 这个问题在网上看了很多解 ...
- 64位 CentOS NDK 编译 FFMPEG
64位 CentOS NDK 编译 FFMPEG 一. 参考文章: http://www.cnblogs.com/baopu/p/4733029.html http://www.c ...
- 在64位linux下编译32位程序
在64位linux下编译32位程序 http://blog.csdn.net/xsckernel/article/details/38045783
- Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持
下面开始添加国产卫星光谱响应的支持: 以下主要参考文章“6S大气传输模型修改源码添加.自定义卫星光谱响应(以HJ-1B CCD为例)”网址:http://blog.csdn.net/sam92/art ...
- 编译Docker<v1.9.0>源码和初级安装
本文主要介绍了如何在POWER CPU处理器上编译和安装Docker服务.很多时候,我们都需要自己编译Docker源码,有的时候是由于自己的处理器没有对应的安装包,有的时候是由于当前的新版本还有发布, ...
- Mac上编译并运行Android5.0源码
下载.配置环境.build和运行参考的都是Android Source提供的文档,包括:Initializing a Build Environment,Downloading the Source和 ...
- win7在64位系统下编译openssl
曾经在笔记本上配置过openssl-0.9.8g版本号,今天在公司的台式机上配置死活没配置成功.机器的系统是win7,64位.编译openssl-1.0.1e出现各种莫名的错误,最后无意中编译了1.0 ...
随机推荐
- SQL Server 2014新特性——事务持久性控制
控制事务持久性 SQL Server 2014之后事务分为2种:完全持久, 默认或延迟的持久. 完全持久,当事务被提交之后,会把事务日志写入到磁盘,完成后返回给客户端. 延迟持久,事务提交是异步的,在 ...
- oracle DB_LINK
1.先创建远程数据库服务名(注意,如果服务器既有oracle服务端又有客户端,需要在服务端的tnsnames.ora中配置服务名,否则会报如下错误): SQL> select count(*) ...
- jenkins邮件通知功能
第部分:全局设置 第一步:进入jenkins的系统设置 第二步:设置管理员邮件地址: 第三步:下载email-ext插件并填写对应的内容: 第四部:填写邮件通知 第五步:以上就是系统管理里需要填写的全 ...
- iOS tabbar 自定义小红点 消息显示,定制边框、颜色、高宽
一般我们需要显示消息数,会利用到系统提供的api UIApplication.sharedApplication().applicationIconBadgeNumber = 10 但如果我们不想显示 ...
- Seafile内部云盘
软件列表 软件 版本 备注 centos 6.4 x86_64 64位系统 mysql mysql5.5.49 本机使用 python 2.7 seafile 依赖python pip 8.1.2 安 ...
- android 反编译apktool工具
下载地址:http://pan.baidu.com/s/1bnHANtd 1.将编译的*.apk放在apktool的根目录下:2.双击“解压软件.bat”后,会提示完成:这样就反编译成功以:3.查看反 ...
- HashMap的key可以是可变的对象吗???
大家都知道,HashMap的是key-value(键值对)组成的,这个key既可以是基本数据类型对象,如Integer,Float,同时也可以是自己编写的对象,那么问题来了,这个作为key的对象是否能 ...
- ubuntu 安装配置jdk+eclipse+android sdk
共5步: 1.安装jdk 2.安装eclipse 3.安装android-sdk 4.安装adb 5.在eclipse中安装ADT 1.安装jdk 之前已经安装好了. 用下面的命令安装,只需一些时间, ...
- RAM,SRAM,DRAM,SDRAM,DDR RAM,ROM,PROM,EPROM,EEPROM,NAND FLASH,NOR FLASH的区别
RAM:由字面意思就可以理解,SDRAM SRAM DRAM(下面蓝色字体的这几种)都可以统称RAM,random access memory(随机存取存储器)的缩写,下面是51hei.com为大家整 ...
- hadoop如何处理长时间运行不完成的map/reduce 任务?
如果某一个任务在某个节点上长时间不完成,怎么手动干预来处理这种情况?董西成博客上找到的回答:hadoop中有三种特殊的任务,failed task,killed task和speculative ta ...