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

                          相关文章
                          |
                          1月前
                          |
                          关系型数据库 MySQL Linux
                          一次虚拟机centos7系统崩溃恢复记录
                          一次虚拟机centos7系统崩溃恢复记录
                          33 0
                          |
                          2天前
                          |
                          分布式计算 Hadoop 分布式数据库
                          Hadoop生态系统介绍(二)大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
                          Hadoop生态系统介绍(二)大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
                          11 2
                          |
                          2天前
                          |
                          分布式计算 Hadoop 数据挖掘
                          Hadoop生态系统介绍(一)
                          Hadoop生态系统介绍(一)
                          13 4
                          |
                          9天前
                          |
                          Linux 编译器 C++
                          Linux centOS 编译C/C++
                          Linux centOS 编译C/C++
                          |
                          10天前
                          |
                          关系型数据库 MySQL Linux
                          centos linux mysql 5.5脚本全自动源码包 编译安装
                          centos linux mysql 5.5脚本全自动源码包 编译安装
                          |
                          11天前
                          |
                          Ubuntu Linux
                          查看Linux系统是Ubuntu还是CentOS
                          查看Linux系统是Ubuntu还是CentOS
                          21 0
                          |
                          17天前
                          |
                          分布式计算 Hadoop Java
                          hadoop的基础设施-protobuf-2.5.0编译和安装
                          hadoop的基础设施-protobuf-2.5.0编译和安装
                          20 0
                          |
                          29天前
                          |
                          Shell Linux 应用服务中间件
                          centos系统内容器部署服务访问不到是因为run后面加了bash
                          centos系统内容器部署服务访问不到是因为run后面加了bash
                          |
                          29天前
                          |
                          Linux 网络安全
                          CentOS系统openssh-9,网络安全大厂面试真题解析大全
                          CentOS系统openssh-9,网络安全大厂面试真题解析大全
                          |
                          29天前
                          |
                          运维 Linux
                          CentOS系统openssh-9,你会的还只有初级Linux运维工程师的技术吗
                          CentOS系统openssh-9,你会的还只有初级Linux运维工程师的技术吗