微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Hadoop3.1.4在Linux平台上编译

HDFS核心源码分析

目录

  1. Hadoop源码编译
  2. HDFS源码结构分析
  3. HDFS核心源码解析

学习目标

  • 掌握编译源码的场景
  • 掌握Hadoop源码在Linux平台编译
  • 了解Hadoop源码在Windows平台编译
  • 理解HDFS工程源码结构
  • 基于源码理解掌握HDFS读写流程

Hadoop源码编译

为什么要编译源码 —> Native Library本地库

  • 一般译为本地库或原生库,是由C/C++编写的动态库(*.so),并通过JNI(Java Native Interface)机制为java层提供接口。
  • 应用一般会出于性能、安全等角度考虑将相关逻辑用C/C++实现并编译为库的形式提供接口,供上层或其他模块调用
  • 不同的处理器架构,需要编译出相应平台的动态库文件(Linux下对应[.so]文件,windows下对应[.dll]文件),才能被正确的执行。
  • Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Library) 的概念。
  • 说白了,就是Hadoop的某些功能,必须通过JNT来协调java类文件和Native代码生成的库文件一起才能工作。
  • 系统要运行Native代码,首先要将Native编译成目标cpu架构的动态库文件

Hadoop本地库

  1. 压缩编译解码器(bzip,lz4,snappy,zlib)
  2. HDFS的本地IO程序,用于HDFS短路本地读取和集中式缓存管理
  3. CRC32校验和实现

源码修改

  1. Hadoop不能满足企业需求,对源码进行修改,改成符合自己性能要求
  2. 此时也是需要重新编译编译源码然后在部署安装

如何去编译源码

  • 去官网查找编译手册,使用Maven下载jar,集成编译
  • Hadoop的源码包根目录有一个文件:BUILDING.txt 里面描述了要求和步骤

    在这里插入图片描述

  • 编译所需要的条件 —> 根据文档进行编译就可以了

    在这里插入图片描述

Linux平台编译Hadoop

  • 安装编译相关的依赖
  • 手动安装cmake
mkdir -p /export/server
cd /export/server
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 -y

#yum卸载已安装cmake 版本低
yum erase cmake

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

#编译安装
cd /export/server/cmake-3.13.5

./configure

make && make install

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

#如果没有正确显示版本 请断开SSH连接 重写登录

在这里插入图片描述

在这里插入图片描述

  • 手动安装snappy
#上传解压
tar zxvf snappy-1.1.3.tar.gz 

#编译安装
cd /export/server/snappy-1.1.3
./configure
make && make install

在这里插入图片描述


在这里插入图片描述

  • 安装jdk
# 配置jdk的环境变量
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
export CLAsspATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

在这里插入图片描述

  • 安装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>
  • 安装protocobuffer 2.5.0
#解压
tar zxvf protobuf-2.5.0.tar.gz

#编译安装
cd /export/server/protobuf-2.5.0
./configure
make && make install

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

编译Hadoop

编译的时候可能是有点慢的,需要根据自己网络的情况来进行判断,如果网络不畅通的话,可能会导致我们编译失败,差不多可能要编译30分钟左右,它会下载很多很多的jar

#上传解压源码包
tar zxvf hadoop-3.1.4-src.tar.gz

#编译
cd /export/server/hadoop-3.1.4-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在编译机器上安装后的库路径

在这里插入图片描述

  • 编译之后的安装包路径
    /export/server/hadoop-3.1.4-src/hadoop-dist/target

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐