hadoop 源码编译

编译目的:

Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries)的概念,通过本地库,Hadoop可以更加高效地执行某一些操作。native位于hadoop-2.x.x/lib/native目录下  hadoop中的zlib和gzip模块会加载本地库,如果加载失败,会提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable   

通过下载官方源码在本地环境编译,能使hadoop高效运行


编译前系统准备:

centOS要保证联网,要分配足够多的内存以及磁盘空间

内存分配不够中途会突然就失败了,所以一定要先分配足够内存

export MAVEN_OPTS="-Xms256m -Xmx512m"


编译前环境准备:

下载maven jdk findbugs(可选)

本次编译版本:

maven版本 :apache-maven-3.5.2

jdk版本:jdk1.7.0_79

findbugs版本:findbugs-1.3.9


配置环境变量

vi /etc/profile

//配置
export JAVA_HOME=/modules/jdk1.7.0_79
export MAVEN_HOME=/modules/apache-maven-3.5.2/
export FINDBUGS_HOME=/modules/findbugs-1.3.9/

export PATH=.:$MAVEN_HOME/bin:$JAVA_HOME/bin:$FINDBUGS_HOME/bin:
//配置  



分别运行指令 java -version        mvn -version       findbugs -version验证配置成功


安装protoc

进入官网下载 https://code.google.com/p/protobuf/downloads/list  解压后进入该文件目录运行一下指令完成安装

./configure

make

make install

protoc --version //验证安装


源码下载以及解压

本次源码文件 hadoop-2.6.0-cdh5.11.2-src.tar.gz


依赖包安装

yum -y install  lzo-devel  zlib-devel  gcc gcc-c++ autoconf automake libtool openssl-devel fuse-devel cmake

yum -y install libprotobuf-dev protobuf-compiler

# sanppy 压缩支持,没有安装后面编译hadoop支持snappy则不会成功
yum -y install snappy libsnappy-dev

# bzip2压缩支持
yum -y install bzip2 libbz2-dev

# 下面两个不知道是干什么的,可以尝试不安装,不行的话再装一下
yum -y install libjansson-dev
yum -y  install fuse libfuse-dev


开始编译:

进入源码解压后的hadoop目录

# -Dmaven.javadoc.skip=true 不生成javadoc,加快速度同时避免生成javadoc出错
#增加 snappy 和  openssl 支持
mvn package -Dmaven.javadoc.skip=true -Drequire.snappy -Drequire.openssl -Pdist,native -DskipTests -Dtar

# 如果失败重新编译可以加上 clean 重新开始编译,否则从失败的地方编译
mvn clean package -Dmaven.javadoc.skip=true -Drequire.snappy -Drequire.openssl -Pdist,native -DskipTests -Dtar

编程过程较慢,根据网速不同时间也不同。请耐心等待   编译成功后native文件可共用在相同的配置环境下










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值