• 【博学谷学习记录】超强总结,用心分享丨大数据超神之路(五):Hadooop基础篇


    前言

    Hadoop集群简介

    • Hadoop集群通常包括两个集群:HDFS集群、YARN集群
    • 两个集群逻辑上分离、通常物理上在一起。
    • 两个集群是标准得主从架构集群

    逻辑上分离指的是两个集群之间没有依赖、互不影响,物理上在一起值得是某些角色往往部署在同一台物理服务器上。而MapReduce是计算框架、代码层面的组件,没有集群之说。
    Hadoop部署模式
    Standalone(单机模式)
    1个机器运行1个java进程,所有角色在一个进程中运行,主要用于调试
    Pseudo-Distributed mode(伪分布式)
    一个机器运行多个进程,每个角色一个进程,主要用于调试
    Cluster mode( 集群模式)
    集群模式主要用于生产环境部署,会使用N太主机组成一个Hadoop集群。这种部署模式下,主节点和从节点会分开部署在不同的机器上
    HA mode(高可用模式)
    在集群模式的基础上为单点故障部署备份角色,形成主备架构,实现容错

    1.编译源码

    匹配不同操作系统的本地库环境,Hadoop某些操作比如压缩、IO需要调用本地库(.so丨.dll),注:Centos本地库文件格式是so,Windows本地库dll。

    1.1 官网下载编译后的包

    Hadoop官网更新了编译后的Hadoop包,跟着晨哥找到对应的版本
    第一步:找到Hadoop版本列表

    https://archive.apache.org/dist/hadoop/common/

    推荐hadoop-3.1.4、hadoop-3.2.3、hadoop-3.3.3(需要ProtocolBuffer 3.7.1)
    第二步:以3.2.3版本为例,下载编译后的包。
    在这里插入图片描述

    为什么要重新编译源码?
    有兄弟就要问了,既然官方提供了编译后的源码包,为什么还要手动编译呢?
    对于Hadoop乃至其他大数据软件来说,编译源码要从以下几个角度考虑
    官方编译后的安装包,是一个最大公约数的安装包,能够在所有的平台上运行,但是呢对于某些平台的本地库兼容性不太友好。

    • 我们在Hadoop中的压缩,解压,IO操作,需要调用系统本地库,Java语言对一些功能实现不了,这些压缩,IO,都是通过C,C++来实现的,因此Hadoopp通过JNDI调用一些动态库,在不同的平台运行可能就要针对不同的平台进行不同本地库编译,操作系统之间的差异很大,32位和64位也不一样,作为linux也有不同的发行版本。
    • 修改源码,重构源码再编译

    1.2 手动编译

    理解了了为什么要编译,下面是编译的具体操作流程
    源码包根目录下文件:BULIDING.txt
    各个环境版本最好保持一致,大版本一致就行比如jdk只要是java8就行。为了节省读者时间,晨哥已经把hadoop3.1.4、hadoop3.2.3、hadoop3.3.3编译好了,直接点击编译成品包里,有编译好的三个版本供大家下载。感兴趣的同学可以自行下载各个版本的搭建包自行编译。Hadoop3各个版本下载链接

    在这里插入图片描述

    Build instructions for Hadoop
    
    ----------------------------------------------------------------------------------
    Requirements:
    
    * Unix System
    * JDK 1.8 (必需要安装的)
    * Maven 3.3 or later (必需要安装的,)
    * ProtocolBuffer 2.5.0(hadoop-3.3.0以前必须且必须是这个版本,之后的版本ProtocolBuffer 用ProtocolBuffer 3.7.1)
    * CMake 3.1 or newer (if compiling native code) (必需是手动安装的)
    * Zlib devel (if compiling native code) (Hadoop3.1.x f不用,但是Hadoop3.2.x必装,否则报错)
    * Cyrus SASL devel (if compiling native code)
    * One of the compilers that support thread_local storage: GCC 4.8.1 or later, Visual Studio,
      Clang (community version), Clang (version for iOS 9 and later) (if compiling native code)
    * openssl devel (if compiling native hadoop-pipes and to get the best HDFS encryption performance) (需要,直接使用yum源安装即可)
    * Linux FUSE (Filesystem in Userspace) version 2.6 or above (if compiling fuse_dfs) (以下都不需要管)
    * Doxygen ( if compiling libhdfspp and generating the documents )
    * Internet connection for first build (to fetch all Maven and Hadoop dependencies)
    * python (for releasedocs)
    * bats (for shell code testing)
    * Node.js / bower / Ember-cli (for YARN UI v2 building)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    jar包准备(hadoop源码、JDK8、maven、ant 、protobuf)

    1.2.1 安装编译相关的依赖

    1、yum install gcc gcc-c++
    
    2、yum install autoconf automake libtool curl
    
    3、yum install lzo-devel zlib-devel openssl openssl-devel ncurses-devel
    
    4、yum install snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop libXtst
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    1.2.2 手动安装cmake3.13.5

    #yum卸载已安装cmake 版本低
    yum erase cmake
    
    #解压
    tar zxvf cmake-3.13.5.tar.gz
    
    #编译安装
    cd /opt/cmake-3.13.5
    #编译时间很长,请耐心等待
    ./configure
    #安装
    make && make install
    
    #验证
    [root@node4 ~]# cmake -version      
    cmake version 3.13.5
    # 卸载cmake
    xargs rm < install_manifest.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    1.2.3 手动安装snappy1.1.3

    #卸载已经安装的
    cd /usr/local/lib
    
    rm -rf libsnappy*
    
    #上传解压
    tar zxvf snappy-1.1.3.tar.gz 
    
    #编译安装
    cd /opt/snappy-1.1.3
    ./configure
    make && make install
    #让动态链接库为系统所共享(添加完后需要调用下ldconfig,不然添加的library会找不到)
    ldconfig
    #验证是否安装
    [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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    1.2.4 安装JDK8(已安装可忽略)

    1.2.5 安装配置Maven

    #解压安装包
    tar zxvf apache-maven-3.5.4-bin.tar.gz
    
    #配置环境变量
    vim /etc/profile.d/my_eny.sh
    
    export MAVEN_HOME=//opt/apache-maven-3.6.3
    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/apache-maven-3.6.3/conf/settings.xml
    	
        
            aliyunmaven
            central
            阿里云公共仓库
            https://maven.aliyun.com/repository/public
        
        
            aliyunmaven
            *
            阿里云谷歌仓库
            https://maven.aliyun.com/repository/google
        
        
            aliyunmaven
            *
            阿里云阿帕奇仓库
            https://maven.aliyun.com/repository/apache-snapshots
        
        
            aliyunmaven
            *
            阿里云spring仓库
            https://maven.aliyun.com/repository/spring
        
        
            aliyunmaven
            *
            阿里云spring插件仓库
            https://maven.aliyun.com/repository/spring-plugin
        
        
            aliyunmaven
            *
            阿里云grails-core
            https://maven.aliyun.com/repository/grails-core
        
        
            aliyunmaven
            *
            阿里云gradle-plugin
            https://maven.aliyun.com/repository/gradle-plugin
        
        
            aliyunmaven
            *
            阿里云mapr-public
            https://maven.aliyun.com/repository/mapr-public
        
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70

    1.2.6 安装ProtocolBuffer 2.5.0/ProtocolBuffer 3.7.0

    #解压
    tar zxvf protobuf-2.5.0.tar.gz
    
    #编译安装
    cd /opt/protobuf-2.5.0
    ./configure
    make && make install
    #让动态链接库为系统所共享(添加完后需要调用下ldconfig,不然添加的library会找不到)
    ldconfig
    #验证是否安装成功
    [root@node4 protobuf-2.5.0]# protoc --version
    libprotoc 2.5.0
    #卸载
    #查看执行文件路径
    which protoc
    sudo rm /usr/local/bin/protoc  //执行文件
    sudo rm -rf /usr/local/include/google //头文件
    sudo rm -rf /usr/local/lib/libproto* //库文件
    sudo rm -rf /usr/lib/protoc
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    1.2.7 编译hadoop

    #上传解压源码包
    tar zxvf hadoop-3.2.3-src.tar.gz
    
    #编译
    cd /opt/hadoop-3.2.3-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在编译机器上安装后的库路径
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    编译之后的安装包路径

    /opt/hadoop-3.2.1-src/hadoop-dist/target
    
    • 1

    1.2.8 报错

    [ERROR] Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:3.2.1:cmake-compile (cmake-compile) on project hadoop-hdfs-native-client: CMake failed with error code 1 -> [Help 1]
    [ERROR] 
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR] 
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
    [ERROR] 
    [ERROR] After correcting the problems, you can resume the build with the command
    [ERROR]   mvn  -rf :hadoop-hdfs-native-client
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    解决办法:更换Hadoop源码包版本,推荐Hadoop3.1.4、Hadoop3.2.3、Hadoop3.3.3

  • 相关阅读:
    VS2019创建GIt仓库时剔除文件或目录
    重返90年代!火爆INS的AI照片编辑器,荣登App Store AI应用榜首
    Docker常见面试题集锦
    删除元素专题
    【Vue的事件类型&组件中数据和事件的传递】
    基于微信小程序的学生购电系统设计与实现-计算机毕业设计源码+LW文档
    java计算机毕业设计税务缴纳管理系统源程序+mysql+系统+lw文档+远程调试
    Android studio实现自定义圆形进度条 带刻度进度条 计步效果 时速表 水波纹效果
    使用 pnpm monorepo + ts 制作个功能完善的 CLI 命令行工具
    Sulfo-CY5 MAL生物分子定量和定位Cyanine5 MAL星戈瑞
  • 原文地址:https://blog.csdn.net/Mrxuchen/article/details/125774984