WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
编译源码的目的一是解决上面的warn,二是hadoop的压缩只有编译之后才支持。
一直用的这个2.6.4版本,时间久了,重新拿出来编译一下,有些坑,记录一下,各个版本之间的版本要求可能不一样,比如jdk……
先看src目录下的BUILDING.txt文件头
- Unix System
- JDK 1.6+ (hadoop-2.6.4不能用jdk1.8的,编译会出错,亲测)
- Maven 3.0 or later
- Findbugs 1.3.9 (if running findbugs) (编译Hadoop-2.7.3的时候好像需要安装这个)
- ProtocolBuffer 2.5.0
- CMake 2.6 or newer (if compiling native code), must be 3.0 or newer on Mac
- Zlib devel (if compiling native code)
- openssl devel ( if compiling native hadoop-pipes )
- Internet connection for first build (to fetch all Maven and Hadoop dependencies)
环境安装好之后的效果演示
[zcy@master ~]$ mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
[dove@master hadoop-2.7.3-src]$ findbugs -version
3.0.1
[zcy@master ~]$ protoc --version
libprotoc 2.5.0
[zcy@master ~]$ make -version
GNU Make 3.81
[zcy@master ~]$ openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
1.yum安装(来源于网络,都先装上吧)
sudo yum -y install svn
sudo yum -y install ncurses-devel
sudo yum -y install gcc*
sudo yum -y install lzo-devel
sudo yum -y install zlib-devel
sudo yum -y install autoconf
sudo yum -y install automake
sudo yum -y install libtool
sudo yum -y install cmake
sudo yum -y install openssl
2.安装 protobuf(不安装,编译将无法完成)
hadoop使用protocol buffer进行通信,需要下载和安装protobhf-2.5.0.tar.gz;由于官网已经无法下载了,
可以到百度云盘下载http://pan.baidu.com/s/1eSrdvNG
编译安装 protobuf
$ sudo ./configure
$ sudo make
$ sudo make check
$ sudo make install
将protobuf配置到环境里面去
sudo nano /etc/profile
export LD_LIBRARY_PATH=/usr/protobuf-2.5.0
protoc --version
libprotoc 2.5.0
3.添加maven的环境(最低3.0)
export MAVEN_HOME=/usr/apache-maven-3.3.9
export PATH=$PATH:$MAVEN_HOME/bin
4.安装Findbugs
wget http://prdownloads.sourceforge.net/findbugs/findbugs-3.0.1.tar.gz 或 百度云盘下载http://pan.baidu.com/s/1bSjaxw
添加环境变量
export FINDBUGS_HOME=/usr/findbugs-3.0.1
export PATH=$PATH:$FINDBUGS_HOME/bin
5.先调整mvn的内存
export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m" (此条命令来源于spark官网.....)
6.编译hadoop
mvn package -Pdist,native -DskipTests -Dtar (命令来源于./hadoop-2.6.4-src/BUILDING.txt)
遇见的问题:
在编译hadoop-2.6.4的时候,jdk不能使用jdk1.8.0_101
把jdk的版本降到jdk1.7.0_67 成功