【Hadoop】Hadoop 3.3.1 源码编译 native库支持ec纠删码和压缩算法,亲自整理有效

前言

hadoop 二进制包是提供预编译的 native 库,但是 32 位的,服务器基本是 64 位,并且现在有架构之分(x86和arm),所以需要重新自己编译 native 库,还要在这个重新编译的 native 库绑定 snappy,bizp2,lz4 这些压缩算法,以及 zstd , 这个是 facebook 出品压缩算法,还有 isa-l 模块支持 ec 纠删码,openssl等相关的3.x新特性

基础环境

操作系统Centos 8.4.2108
架构x86_64
内存376 G
CPU80

编译环境软件安装目录

mkdir -p /opt/software

基础软件包下载

cmake下载页面
cmake下载地址
hadoop下载地址
maven下载地址
snappy官网

# cmake
wget https://cmake.org/files/v3.15/cmake-3.15.0.tar.gz
# hadoop src
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.1/hadoop-3.3.1-src.tar.gz
# maven
wget https://dlcdn.apache.org/maven/maven-3/3.9.0/binaries/apache-maven-3.9.0-bin.tar.gz
# protobuf-2.5.0
wget https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz
# protobuf 3.7.1
wget https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.7.1.tar.gz
# snappy
wget https://github.com/google/snappy/archive/refs/tags/1.1.3.tar.gz
# zstd
wget https://codeload.github.com/facebook/zstd/tar.gz/refs/tags/v1.4.10

# nasm 2.14.2
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz

# isa-l 支持ec
wget https://codeload.github.com/intel/isa-l/tar.gz/refs/tags/v2.30.0



依赖安装

  • 安装基础工具
yum install gcc gcc-c++ -y

yum install autoconf automake libtool curl -y 

yum install lzo-devel zlib-devel openssl openssl-devel ncurses-devel -y 

yum install snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop libXtst zlib zlib-devel lz4 lz4-devel -y
  • 手动安装cmake
#yum卸载已安装cmake 版本低
yum erase cmake

#解压
tar zxvf cmake-3.13.5.tar.gz

#编译安装
cd /opt/software/cmake-3.13.5

./configure

make && make install

#验证
[root@node4 ~]# cmake -version      
cmake version 3.13.5

#如果没有正确显示版本 请断开SSH连接 重新登录
  • 手动安装snappy

Snappy已经被Google开源,作为一个压缩库,它可以利用单颗Intel Core i7处理器内核处理至少每秒250MB~500MB的数据流。
Snappy的前身是Zippy。虽然只是一个数据压缩库,它却被Google用于许多内部项目程,其中就包括BigTable,MapReduce和RPC。Google宣称它在这个库本身及其算法做了数据处理速度上的优化,作为代价,并没有考虑输出大小以及和其他类似工具的兼容性问题。Snappy特地为64位x86处理器做了优化,在单个Intel Core i7处理器内核上能够达到至少每秒250MB的压缩速率和每秒500MB的解压速率。
如果允许损失一些压缩率的话,那么可以达到更高的压缩速度,虽然生成的压缩文件可能会比其他库的要大上20%至100%,但是,相比其他的压缩库,Snappy却能够在特定的压缩率下拥有惊人的压缩速度,“压缩普通文本文件的速度是其他库的1.5-1.7倍,HTML能达到2-4倍,但是对于JPEG、PNG以及其他的已压缩的数据,压缩速度不会有明显改善

#卸载已经安装的
cd /usr/local/lib

rm -rf libsnappy*

#上传解压
tar zxvf snappy-1.1.3.tar.gz  -C /usr/local 
 
#编译安装
cd /usr/local/snappy-1.1.3
./configure
make && make install

cd ..
cp build/libsnappy.a /usr/lib
cp build/snappy-stubs-public.h /usr/include/
cp snappy-c.h /usr/include/
cp snappy.h /usr/include/

#验证是否安装
[root@node4 snappy-1.1.3]# ls -lh /usr/local/lib |grep snappy
-rw-r--r-- 1 root root 511K Nov  4 17:13 libsnappy.a
-rwxr-xr-x 1 root root  955 Nov  4 17:13 libsnappy.la
lrwxrwxrwx 1 root root   18 Nov  4 17:13 libsnappy.so -> libsnappy.so.1.3.0
lrwxrwxrwx 1 root root   18 Nov  4 17:13 libsnappy.so.1 -> libsnappy.so.1.3.0
-rwxr-xr-x 1 root root 253K Nov  4 17:13 libsnappy.so.1.3.0
  • 安装配置JDK 1.8
#解压安装包
tar zxvf jdk-8u65-linux-x64.tar.gz

#配置环境变量
vim /etc/profile

export JAVA_HOME=/opt/software/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

source /etc/profile

#验证是否安装成功
java -version

java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
You have new mail in /var/spool/mail/root
  • 安装配置maven
#解压安装包
tar zxvf apache-maven-3.5.4-bin.tar.gz

#配置环境变量
vim /etc/profile

export MAVEN_HOME=/opt/software/apache-maven-3.5.4
export MAVEN_OPTS="-Xms4096m -Xmx4096m"
export PATH=:$MAVEN_HOME/bin:$PATH

source /etc/profile

验证是否安装成功

[root@node4 ~]# mvn -v
Apache Maven 3.5.4

添加maven 阿里云仓库地址 加快国内编译速度

vim /opt/software/apache-maven-3.5.4/conf/settings.xml

<mirrors>
   <mirror>
     <id>nexus-aliyun</id>
     <mirrorOf>central</mirrorOf>
     <name>Nexus aliyun</name>
     <url>http://maven.aliyun.com/nexus/content/groups/public</url>
   </mirror>

   <mirror>
     <id>CN</id>
     <name>OSChina Central</name>
     <url>http://maven.oschina.net/content/groups/public/</url>
     <mirrorOf>central</mirrorOf>
   </mirror>

   <mirror>
     <id>alimaven</id>
     <mirrorOf>central</mirrorOf>
     <name>aliyun maven</name>
     <url>https://maven.aliyun.com/nexus/content/repositories/central/</url>
   </mirror>

   <mirror>
     <id>jboss-public-repository-group</id>
     <mirrorOf>central</mirrorOf>
     <name>JBoss Public Repository Group</name>
     <url>https://repository.jboss.org/nexus/content/groups/public</url>
   </mirror>
</mirrors>
  • 安装ProtocolBuffer 2.5.0
#解压
tar zxvf protobuf-2.5.0.tar.gz

#编译安装
cd /opt/software/protobuf-2.5.0
./autogen.sh
./configure
make && make install

#验证是否安装成功
[root@node4 protobuf-2.5.0]# protoc --version
libprotoc 2.5.0

现在hadoop 3.3往上的版本,都是用 protobuf 3.7.1了。

  • 安装ProtocolBuffer 3.7.1
#解压
tar zxvf protobuf-3.7.1.tar.gz

#编译安装
cd /opt/software/protobuf-3.7.1
./autogen.sh
./configure
make && make install

#验证是否安装成功
[root@node4 protobuf-3.7.1]# protoc --version
libprotoc 3.7.1
  • 安装 nasm
yum erase nasm #卸载低版本的
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz
tar -xvzf nasm-2.14.02.tar.gz
cd nasm-2.14.02
./configure
make && make install

# 验证版本
nasm --version
NASM version 2.14.02 compiled on Mar 31 2023

  • 安装 isa-l
    isa-l-2.30.0对nasm和yasm有版本要求,低版本在安装时会报错。出错了,请按照上述安装下载源代码,自己编译安装。
yum install -y yasm nasm help2man(已经安装则不需要) 

tar -xvzf isa-l.v2.30.0.tar.gz

cd isa-l-2.30.0/
./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib64
make && make install

#验证是否安装
[root@node4 isa-l-2.30.0]# ls -lh /usr/lib64/ | grep isal
-rw-r--r--   1 root root 1.6M 331 16:12 libisal.a
-rwxr-xr-x   1 root root  915 331 16:12 libisal.la
lrwxrwxrwx   1 root root   17 331 16:12 libisal.so -> libisal.so.2.0.30
lrwxrwxrwx   1 root root   17 331 16:12 libisal.so.2 -> libisal.so.2.0.30
-rwxr-xr-x   1 root root 920K 331 16:12 libisal.so.2.0.30
  • 安装zstd

zstd是Facebook在2016年开源的新无损压缩算法,优点是压缩率和压缩/解压缩性能都很突出。
zstd 是一种快速压缩算法,提供了很高的压缩比。它还为小数据提供了一种特殊的模式,称为字典压缩。
zstd还有一个特别的功能,支持以训练方式生成字典文件,相比传统压缩方式能大大的提高小数据包的压缩率。
在过去的两年里,Linux内核、HTTP协议、以及一系列的大数据工具(包括Hadoop 3.0.0,HBase 2.0.0,Spark 2.3.0,Kafka 2.1.0)等都已经加入了对zstd的支持。

#解压
tar zxvf zstd.1.4.10.tar.gz

#编译安装
cd /opt/software/v1.4.10

make && make install

#验证是否安装
[root@node4 isa-l-2.30.0]# zstd --version
*** zstd command line interface 64-bits v1.4.10, by Yann Collet ***
  • 编译hadoop
#上传解压源码包
tar zxvf hadoop-3.3.1-src.tar.gz

#编译
cd /opt/software/hadoop-3.3.1-src

mvn clean package -Pdist,native -DskipTests -Dtar -Dbundle.snappy=true -Drequire.snappy=true  -Dsnappy.prefix=/usr/local/lib  -Dsnappy.lib=/usr/local/lib  -Drequire.zstd=true -Dbundle.zstd=true -Dzstd.lib=/usr/local/lib -Dbundle.isal=true -Drequire.isal=true -Disal.prefix=/usr/lib64 -Disal.lib=/usr/lib64   

#参数说明:

Pdist,native :把重新编译生成的hadoop动态库;
DskipTests :跳过测试
Dtar :最后把文件以tar打包
Dbundle.snappy :添加snappy压缩支持【默认官网下载的是不支持的】
Dsnappy.lib=/usr/local/lib :指snappy在编译机器上安装后的库路径
Drequire.zstd=true -Dbundle.zstd=true
Dbundle.isal=true  支持intel的isal模块,ec纠删码需要用到。
  • 编译之后的安装包路径
/opt/software/hadoop-3.3.1-src/hadoop-dist/target

在这里插入图片描述
编译成功

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑起来贼好看

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值