8.1 编译 Hadoop 源码
压缩算法中用得最多的是 snappy 压缩. 效率高, 压缩率也高.
但是 Hadoop 官网编译的好的 Hadoop 并不支持 Snappy, 所以手动编译支持 Snappy 的 Hadoop.
步骤1: 资源准备
尽量使用 root 用户来进行编译
准备好需要的 jar 包.
- hadoop-2.7.2-src.tar.gz
- jdk-8u144-linux-x64.tar.gz
- snappy-1.1.3.tar.gz
- apache-maven-3.0.5-bin.tar.gz
- protobuf-2.5.0.tar.gz
步骤2: 配置 JDK
步骤3: 安装 Maven, 配置 Mavn
# 解压 maven
tar -zxvf apache-maven-3.0.5-bin.tar.gz -C /opt/module/
# 配置 maven 在/etc/profile 文件中添加如下两行
export MAVEN_HOME=/opt/module/apache-maven-3.0.5
export PATH=$PATH:$MAVEN_HOME/bin
# 最后更新环境变量
source profile
步骤4: 准备编译环境
yum install svn
yum install autoconf automake libtool cmake
yum install ncurses-devel
yum install openssl-devel
yum install gcc-c++
步骤5: 编译安装 Snappy
tar -zxvf snappy-1.1.3.tar.gz -C /opt/module/
cd snappy-1.1.3/
./configure
make
make install
# 查看snappy库文件
ls -lh /usr/local/lib |grep snappy
步骤6: 编译安装 protobuf
tar -zxvf protobuf-2.5.0.tar.gz -C /opt/module/
cd protobuf-2.5.0/
./configure
make
make install
protoc --version
步骤7: 编译 Hadoop native
tar -zxvf hadoop-2.7.2-src.tar.gz
cd hadoop-2.7.2-src/
mvn clean package -DskipTests -Pdist,native -Dtar -Dsnappy.lib=/usr/local/lib -Dbundle.snappy
步骤8: 找到编译好的文件
/opt/software/hadoop-2.7.2-src/hadoop-dist/target/hdoop-2.7.2.tar.gz
就是支持 Snappy 的 Hadoop 了.
步骤9: 拷贝 so
文件
我们前面已经配置好了 Hadoop , 如果用我们刚刚编译的好的 Hadoop, 还要重新配置比较麻烦.
其实我们只需要把这些 .so navive
文件覆盖我们正在使用的 Hadoop 同目录下的就可以了.
# 进入到navtive目录, copy 所有的文件到你的hadoop的同名目录下.
cp -r * /opt/module/hadoop-2.7.2/lib/native/
步骤10: 重启 Hadoop 查看是否支持 Snappy
hadoop checknative
注意:
整个编译时间比较长, 而且需要从 Maven参考下载一些文件, 所以一定要在网络比较好的情况下编译, 否则很容易出现卡住的情况.
为了下载方便, 建议把仓库设置为阿里云上的 Maven 仓库.