X86系统基于Centos8的Hadoop3.x源码编译

简介: X86系统基于Centos8的Hadoop3.x源码编译

一、为什么要源码编译


    Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries) 的概念。说白了,就是Hadoop的某些功能,必须通过JNT来协调Java类文件和Native代码生成的库文件一起才能工作。linux系统要运行Native 代码,首先要将Native 编译成目标CPU 架构的[.so]文件。而不同的处理器架构,需要编译出相应平台的动态库[.so] 文件,才能被正确的执行,所以最好重新编译一次hadoop源码,让[.so]文件与自己处理器相对应。简单来说就是编译出适合自己机器的Hadoop。


    二、编译步骤


    1、安装 GCC、autotools、OpenJDK 和 Maven 等开发工具。


      yum groupinstall "Development Tools"yum install java-1.8.0-openjdk-devel maven



      2、安装协议缓冲区 v3.7.1。


        git clone https://github.com/protocolbuffers/protobufcd protobufgit checkout v3.7.1autoreconf -i./configure --prefix=/usr/localmakemake installcd ..



        3、安装 CentOS  提供的库。

          yum install libtirpc-devel zlib-devel lz4-devel bzip2-devel openssl-devel cyrus-sasl-devel libpmem-devel cmake


          4、安装可选依赖项(snappy-devel)。

            yum install  snappy-devel


            5、安装可选依赖项(libzstd-devel)。


              yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpmyum install libzstd-devel


              6、安装可选依赖项(isa-l)。


                yum install nasmgit clone https://github.com/intel/isa-lcd isa-l/./autogen.sh./configuremakemake install



                7、下载Hadoop的源码包。


                Hadoop的源码包可以直接在Hadoop的官网(hadoop.apache.org)下载,如果没有找到自己需要的版本,可以在[Apache归档]下载。下载完之后将其上传到自己的服务器中,然后解压到指定目录。

                  tar -zxvf hadoop-3.3.2-src.tar.gz -C /export/hadoop


                  说明:jdk环境如果之前有了,这里就不用装了,没有就装一下,配一下环境变量(使用jdk1.8)


                  8、安装maven并配置环境变量。


                    tar -zxvf apache-maven-3.6.3-bin.tar.gz  -C /export/maven-3.6.3-tmpcd /export/maven-3.6.3-tmp/apache-maven-3.3.9/conf/vi settings.xml#在第164行的位置配置了阿里云镜像<mirror>  <id>alimaven</id>  <name>aliyun maven</name>  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  <mirrorOf>central</mirrorOf></mirror>


                    配置maven环境变量


                      vim /etc/profile.d/env.sh#在打开的文件中添加如下内容export JAVA_HOME=/usr/java/jdk1.8.0_321-amd64export MAVEN_HOME=/export/maven-3.6.3-tmp/apache-maven-3.6.3export PATH=$PATH:$JAVA_HOME/binexport PATH=$PATH:$MAVEN_HOME/bin#保存退出source /etc/profile

                      说明:配置这两个环境变量即可,其他的不用配置。


                      9、开始编译。


                        # 进入到hadoop源码的解压路径下cd /export/hadoop/hadoop-3.3.2-src/# 执行如下命令,开始编译mvn clean package -Pdist,native -DskipTests -Dtar -Dmaven.javadoc.skip=true

                        说明:编译过程中稍微有点耐心等等,我是32个core的,网络也比较快,所以编译也比较快一点。


                        10、编译成功。


                        编译成功会看到如下效果


                        640.png


                        编译好的Hadoop存在于如下目录中


                          /export/hadoop/hadoop-3.3.2-src/hadoop-dist/target/


                          如图

                          640.png

                          相关文章
                          |
                          9天前
                          |
                          Web App开发 搜索推荐 Unix
                          Linux系统之MobaXterm远程连接centos的GNOME桌面环境
                          【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
                          98 4
                          Linux系统之MobaXterm远程连接centos的GNOME桌面环境
                          |
                          18天前
                          |
                          Linux 网络安全 数据安全/隐私保护
                          Linux系统之Centos7安装cockpit图形管理界面
                          【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
                          44 1
                          Linux系统之Centos7安装cockpit图形管理界面
                          |
                          2天前
                          |
                          关系型数据库 MySQL Linux
                          在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
                          本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
                          13 3
                          |
                          3天前
                          |
                          关系型数据库 MySQL Linux
                          在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
                          本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
                          9 2
                          |
                          5天前
                          |
                          关系型数据库 MySQL Linux
                          在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
                          本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
                          36 2
                          |
                          21天前
                          |
                          关系型数据库 MySQL Linux
                          在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
                          本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置服务等,并与使用 RPM 包安装进行了对比,帮助读者根据需求选择合适的方法。编译源码安装虽然复杂,但提供了更高的定制性和灵活性。
                          178 2
                          |
                          23天前
                          |
                          关系型数据库 MySQL Linux
                          在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
                          【10月更文挑战第7天】本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据自身需求选择合适的方法。
                          43 3
                          |
                          27天前
                          |
                          安全 Linux 编译器
                          Centos 7.9如何使用源码编译安装curl最新版本
                          通过上述步骤,您就能在CentOS 7.9上成功地从源代码编译并安装curl的最新版本。这种方法不仅提供了灵活性,允许您定制编译选项,还确保了软件的最新功能和安全更新得到应用。
                          36 1
                          |
                          2月前
                          |
                          网络协议 Linux Shell
                          CentOS7系统命令学习笔记(一)
                          CentOS7系统命令学习笔记(一)
                          |
                          2月前
                          |
                          Linux
                          CentOS7系统命令学习笔记(二)
                          CentOS7系统命令学习笔记(二)