编译目的:
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文件可共用在相同的配置环境下