8.1 编译 Hadoop 源码

压缩算法中用得最多的是 snappy 压缩. 效率高, 压缩率也高.

但是 Hadoop 官网编译的好的 Hadoop 并不支持 Snappy, 所以手动编译支持 Snappy 的 Hadoop.

步骤1: 资源准备

  1. 尽量使用 root 用户来进行编译

  2. 准备好需要的 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 仓库.

Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-11-20 18:14:22

results matching ""

    No results matching ""