Hadoop源码下载重新编译
软件下载:https://hadoop.apache.org/releases.html
建议是下载源码包。
源码包和官方编译安装包有什么不一样呢?
正常情况下,非生产环境直接使用官方编译安装包即可,但是官方提供的安装包不支持本地库。
为什么要源码包?
第一,里面有一些写的不好,我可以修改源码,这个略过。第二,软件运行需要操作系统支持,操作系统之间存在差异。Linux有很多发行版,那么之间本地库环境存在差异。Hadoop某些操作需要本地库支持,例如数据压缩,读写IO流操作。所以为了让hadoop更加稳定适应你的平台最好的是下载源码重新编译。
如何编译?
再源码包根目录下,有BUILDING.txt文件,描述了你需要做哪些动作。
1、安装编译相关的依赖
yum install gcc gcc-c++ make autoconf automake libtool curl lzo-devel zlib-devel openssl openssl-devel ncurses-devel snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop libXtst zlib -y
yum install -y doxygen cyrus-sasl* saslwrapper-devel*
2、手动安装cmake
#yum卸载已安装cmake 版本低
yum erase cmake
#解压
tar zxvf CMake-3.19.4.tar.gz
#编译安装 根据自己安装情况进入路径
cd /export/server/CMake-3.19.4
./configure
make && make install
#验证
[root@node4 ~]# cmake -version
cmake version 3.19.4
#如果没有正确显示版本 请断开SSH连接 重写登录
3、手动安装snappy
#卸载已经安装的
rm -rf /usr/local/lib/libsnappy*
rm -rf /lib64/libsnappy*
#上传解压
tar zxvf snappy-1.1.3.tar.gz
#编译安装 根据自己安装情况进入路径
cd /export/server/snappy-1.1.3
./configure
make && make install
#验证是否安装
[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
4、安装配置JDK 1.8
#解压安装包
tar zxvf jdk-8u65-linux-x64.tar.gz
#配置环境变量 根据自己安装情况设置JAVA_HOME路径
vim /etc/profile
export JAVA_HOME=/export/server/jdk1.8.0_241
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_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
5、安装配置maven
#解压安装包
tar zxvf apache-maven-3.5.4-bin.tar.gz
#配置环境变量
vim /etc/profile
export MAVEN_HOME=/export/server/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 /export/server/apache-maven-3.5.4/conf/settings.xml
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
6、安装ProtocolBuffer 3.7.1
#卸载之前版本的protobuf
#解压
tar zxvf protobuf-3.7.1.tar.gz
#编译安装
cd /export/server/protobuf-3.7.1
./autogen.sh
./configure
make && make install
#验证是否安装成功
[root@node4 protobuf-3.7.1]# protoc --version
libprotoc 3.7.1
7、编译hadoop
#上传解压源码包
tar zxvf hadoop-3.3.0-src.tar.gz
#编译
cd /root/hadoop-3.3.0-src
mvn clean package -Pdist,native -DskipTests -Dtar -Dbundle.snappy -Dsnappy.lib=/usr/local/lib
#参数说明:
Pdist,native :把重新编译生成的hadoop动态库;
DskipTests :跳过测试
Dtar :最后把文件以tar打包
Dbundle.snappy :添加snappy压缩支持【默认官网下载的是不支持的】
Dsnappy.lib=/usr/local/lib :指snappy在编译机器上安装后的库路径
编译之后的安装包路径
/root/hadoop-3.3.0-src/hadoop-dist/target
在打包过程中,第60个模块遇到问题,到github上下载tar包失败,就自己取下载一下放到报错的目录里面,再重新执行maven命令就好了。
根据以上步骤,我是安装成功了的。但是有些软件版本不一致。
cmkae 3.24.3
jdk 1.8
maven 3.8.6
protobuf 3.21.10
snappy 1.1.13
hadoop 3.3.4