在安装CDH版本的hadoop的时候, 我们下载下来的CDH的hadoop安装包中, 并没有native包, 所以我们在使用本地库 (本地库可以用来做压缩, 以及支持C程序等等) 的时候就会出问题, 好了废话不多说, 接下来看如何编译.
能够看到, 在官方说明中已经写明了编译所需要的准备工作
准备工作:
1. 准备一台干净的linux系统
这里使用的的是centOS 6.9 64位
保证可以联网, 关闭防火墙, 关闭selinux
service iptables stop 关闭防火墙
chkconfig iptables off 关闭防火墙开机自启动
关闭selinux
vim /etc/selinux/config
2. 安装jdk1.7
卸载系统自带的jdk
rpm -qa | grep java
rpm -e --nodeps 要卸载的
将我们的jdk1.7的安装包上传并解压, 然后修改/etc/profile, 添加java环境变量
export JAVA_HOME=/export/servers/jdk1.7.0_71
export PATH=:$JAVA_HOME/bin:$PATH
source /etc/profile 让配置生效
3. 安装maven
这里使用maven3.x以上的版本应该都可以, 不建议使用太高的版本, 这里使用3.0.5的版本.
上传安装包, 解压, 配置环境变量
vim /etc/profile
export MAVEN_HOME=/export/servers/apache-maven-3.0.5
export MAVEN_OPTS="-Xms4096m -Xmx4096m"
export PATH=:$MAVEN_HOME/bin:$PATH
source /etc/profile 让配置生效
4. 安装findbugs
下载findbugs
wget --no-check-certificate https://sourceforge.net/projects/findbugs/files/findbugs/1.3.9/findbugs-1.3.9.tar.gz/download -O findbugs-1.3.9.tar.gz
解压缩, 然后配置环境变量
vim /etc/profile
export FINDBUGS_HOME=/export/servers/findbugs-1.3.9
export PATH=:$FINDBUGS_HOME/bin:$PATH
5. 安装依赖包 (cmake, openssl, zlib 等)
yum install autoconf automake libtool cmake
yum install ncurses-devel
yum install openssl-devel
yum install lzo-devel zlib-devel gcc gcc-c++
bzip2压缩需要的依赖包
yum install -y bzip2-devel
6. 安装protobuf
protobuf下载百度网盘地址 https://pan.baidu.com/s/1pJlZubT
下载后, 解压缩
然后编译
cd /export/servers/protobuf-2.5.0
./configure
make && make install
7. 安装snappy
snappy下载地址: http://code.google.com/p/snappy/
下载后, 解压缩
然后编译
cd /export/servers/snappy-1.1.1/
./configure
make && make install
8. 上传CDH hadoop的源码包并编译
下载CDH hadoop 5.14.0-src源码包, 解压缩
http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.14.0-src.tar.gz
以支持snappy压缩的方式编译:
cd /export/servers/hadoop-2.6.0-cdh5.14.0
mvn package -DskipTests -Pdist,native -Dtar -Drequire.snappy -e -X
最后出现BUILD SUCCESS就是编译成功了, 那编译完成的文件在哪里呢?
cd /export/servers/hadoop-2.6.0-cdh5.14.0/hadoop-dist/target
检查native
cd hadoop-2.6.0-cdh5.14.0
bin/hadoop checknative
完成 !!!
最后, 网速慢的同学就不要编译了, 会慢死的.
还有, 内存小的同学就不要编译了, 会慢死的.
因为途中要下载大量大量大量的maven依赖包, 还有Tomcat等, 网速慢的话是真的要等好久呦~
如果真的要安装的话, 可以先整理一套本地maven仓库, 上传上去, 修改maven的配置文件conf/setting.xml 指定一下本地仓库. 如此在编译过程中就不用下载大量的maven依赖了.