本文使用的hadoop版本为 hadoop-2.6.0-cdh5.7.0
直接使用的hadoop-2.6.0-cdh5.7.0.tar.gz包部署的hadoop集群对于许多的压缩格式都是不支持的(如下图),生产上是不可接受的,故需要重新编译hadoop使之支持压缩。
源码包下载地址 : http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0-src.tar.gz
源码包中的BUILDING.txt文件中说明了编译的一些需求:
Unix系统: 这里使用的是centos7.6
JDK :必须用1.7 ,用1.8会出错。下载地址:
https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
Maven:这里使用的是maven 3.3.1
1、 安装必要的依赖库:
[root@hadoop001 ~]# yum install -y svn ncurses-devel
[root@hadoop001 ~]# yum install -y gcc gcc-c++ make cmake
[root@hadoop001 ~]# yum install -y openssl openssl-devel svn ncurses-devel zlib-devel libtool
[root@hadoop001 ~]# yum install -y snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop autoconf automake cmake
2、安装JDK,安装maven,配置环境变量。
注: 若因内存太小导致编译失败, 可适当提高maven的运行内存:
export MAVEN_OPTS="-Xms1024m -Xmx1024m"
配置Maven :
#配置maven的本地仓库位置
/home/hadoop/maven_repo/repo
添加阿里云中央仓库(注: 此配置应配置在
nexus-aliyun
central
Nexus aliyun
http://maven.aliyun.com/nexus/content/groups/public
若网络慢导致依赖下载时间过长,可以自己载Jar包添加到本地仓库。
3、安装protobuf
protobuf它是一种轻便高效的数据格式,类似于Json,平台无关、语言无关、可扩展,可用于通讯协议和数据存储等领域。
解析速度快,比对应的XML快约20-100倍,序列化数据非常简洁、紧凑,与XML相比,其序列化之后的数据量约为1/3到1/10。
①下载protobuf安装包
[hadoop@hadoop001 ~]# wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz
②解压安装包
[hadoop@hadoop001 ~]# tar -zxvf protobuf-2.5.0.tar.gz -C ~/app
③安装protubuf
[hadoop@hadoop001 app]# cd protobuf-2.5.0
[hadoop@hadoop001 protobuf-2.5.0]# ./configure --prefix=/home/hadoop/app/protobuf-2.5.0
[hadoop@hadoop001 protobuf-2.5.0]# make && make install
④配置环境变量
export PROTOBUF_HOME=/home/hadoop/app/protobuf-2.5.0
export PATH=$PROTOBUF_HOME/bin:$PATH
⑤验证
[hadoop@hadoop bin]# protoc --version
libprotoc 2.5.0
4、编译hadoop
解压源码包:
[hadoop@hadoop001 software]$ tar -zxvf hadoop-2.6.0-cdh5.7.0-src.tar.gz -C ~/source/
在解压后的源码包目录下,执行编译命令:
[hadoop@hadoop001 hadoop-2.6.0-cdh5.7.0]$ mvn clean package -Pdist,native -DskipTests -Dtar
编译过程十分漫长,耐心等待。
注: 编译过程报错原则 : 报错缺什么补什么, 无法下载的包自己复制链接下载完放到指定目录下。
无法下载的Jar包可以到下面的网站自行下载:
https://repository.cloudera.com/cloudera/cdh-releases-rcs/
自己下载的Jar包(无需解压)放在指定目录下之后,需要注意权限 。(我是统一改成755)
经过一阵等待之后, 编译成功(BUILD SUCCESS):
hadoop-dist/target 下:
hadoop-2.6.0-cdh5.7.0.tar.gz 就是我们编译好的包了。
解压后查看: