• 【数仓】Hadoop软件安装及使用(集群配置)


    一、环境准备

    1、准备3台虚拟机

    • Hadoop131:192.168.56.131
    • Hadoop132:192.168.56.132
    • Hadoop133:192.168.56.133

    本例系统版本 CentOS-7.8,已安装jdk1.8

    2、hosts配置,关闭防火墙

    vi /etc/hosts添加如下内容,然后保存

    192.168.56.131 hadoop131
    192.168.56.132 hadoop132
    192.168.56.133 hadoop133
    
    • 1
    • 2
    • 3

    关闭防火墙

    systemctl stop firewalld
    
    • 1

    3、配置证书登录(免秘钥)

    三台服务器都要操作一遍

    ssh-keygen -t rsa -N '' -f /root/.ssh/id_rsa -q
    ssh-copy-id -i /root/.ssh/id_rsa.pub root@hadoop131
    ssh-copy-id -i /root/.ssh/id_rsa.pub root@hadoop132
    ssh-copy-id -i /root/.ssh/id_rsa.pub root@hadoop133
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4、创建 Xsync 分发指令

    rsyncLinux系统下的一个非常实用的数据备份和同步工具,它可以在本地或远程系统之间进行文件或目录的同步和备份。这个指令的基本原理是通过对比源文件和目标文件的差异,只复制差异部分,从而提高数据传输的效率。

    由于 xsync 是对 rsync 的再封装,因此需要先安装 rsync

    yum install -y rsync
    
    • 1

    三台服务器都要安装 rsync

    本节内容参考:xsync 集群同步工具

    在 /usr/bin 下新建 xsync.sh

    vi /usr/bin/xsync.sh
    
    • 1

    将以下内容粘贴到 xsync.sh 脚本中

    #!/bin/bash
    
    #1. 判断参数个数
    if [ $# -lt 1 ]
    then
        echo Not Enough Arguement!
        exit;
    fi
    
    #2. 遍历集群所有机器
    for host in hadoop131 hadoop132 hadoop133
    do
        echo ====================  $host  ====================
        #3. 遍历所有目录,挨个发送
        for file in $@
        do
            #4. 判断文件是否存在
            if [ -e $file ]
                then
                    #5. 获取父目录
                    pdir=$(cd -P $(dirname $file); pwd)
                    #6. 获取当前文件的名称
                    fname=$(basename $file)
                    ssh $host "mkdir -p $pdir"
                    rsync -av $pdir/$fname $host:$pdir
                else
                    echo $file does not exists!
            fi
        done
    done
    
    • 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

    修改文件权限

    chmod 777 /usr/bin/xsync.sh
    
    • 1

    5、创建批量执行脚本 xcall.sh

    创建文件xcall.sh

    vi /usr/bin/xcall.sh
    # 修改文件权限
    chmod 777 /usr/bin/xcall.sh
    
    • 1
    • 2
    • 3

    复制如下内容

    #!/bin/bash
    
    #1. 判断参数个数
    if [ $# -lt 1 ]
    then
        echo Not Enough Arguement!
        exit;
    fi
    
    #2. 遍历集群所有机器
    for host in hadoop131 hadoop132 hadoop133
    do
    	echo ------  $host  ------
    	ssh $host "$*"
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    二、安装配置Hadoop

    1、下载Hadoop并安装

    # 下载Hadoop软件包
    wget --no-check-certificate https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
    
    # 解压安装
    tar  -xzvf  hadoop-3.3.6.tar.gz
    #创建Hdoop程序&数据目录;
    mkdir -p /data/
    #将Hadoop程序部署至/data/hadoop目录下;
    mv hadoop-3.3.6/ /data/hadoop/
    #查看Hadoop是否部署成功;
    ls -l /data/hadoop/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2、配置Hadoop环境变量

    配置环境变量,/etc/profile.d/hadoop_env.sh

    export HADOOP_HOME=/data/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    
    • 1
    • 2
    • 3

    使用source让新增环境生效

    source /etc/profile
    
    • 1

    配置完成后分发到其他服务器

    xsync.sh /etc/profile.d/hadoop_env.sh
    
    • 1

    3、Hadoop集群配置

    1)配置 core-site.xml

    vi /data/hadoop/etc/hadoop/core-site.xml

    
    
    <configuration>
        
        <property>
          <name>fs.defaultFSname>
          <value>hdfs://hadoop131:9000value>
        property>
        
        <property>
          <name>hadoop.tmp.dirname>
          
          <value>/data/hadoop/datavalue>
          <description>A base for other temporary directories.description>
        property>
        
        
        <property>
          <name>hadoop.http.staticuser.username>
          <value>hadoopuservalue>
        property>
        
        
        <property>
          <name>hadoop.proxyuser.hadoopuser.hostsname>
          <value>*value>
        property>
        
        
        <property>
          <name>hadoop.proxyuser.hadoopuser.groupsname>
          <value>*value>
        property>
        
        
        <property>
          <name>hadoop.proxyuser.hadoopuser.usersname>
          <value>*value>
        property>
    configuration>
    
    • 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

    2)配置 hdfs-site.xml

    vi /data/hadoop/etc/hadoop/hdfs-site.xml

    
    
    <configuration>
      
      <property>
        <name>dfs.namenode.http-addressname>
        <value>hadoop131:9870value>
      property>
      
      <property>
        <name>dfs.namenode.secondary.http-addressname>
        <value>hadoop133:9868value>
      property>
      
      <property>
        <name>dfs.replicationname>
        <value>1value>
      property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    3)配置 mapred-site.xml

    vi /data/hadoop/etc/hadoop/mapred-site.xml

    使用yarn,如下配置

    
    
    <configuration>
      <property>
       <name>mapreduce.framework.namename>
       <value>yarnvalue>
      property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4)配置 yarn-site.xml

    vi /data/hadoop/etc/hadoop/yarn-site.xml

    
    
    <configuration>
      
      <property>
        <name>yarn.resourcemanager.hostnamename>  
        <value>hadoop131value>  
      property>  
      
      <property>  
        <name>yarn.nodemanager.aux-servicesname>  
        <value>mapreduce_shufflevalue>  
      property>
      
      <property>  
        <name>yarn.nodemanager.resource.memory-mbname>  
        <value>8192value>  
      property>
      
      <property>  
        <name>yarn.scheduler.minimum-allocation-mbname>  
        <value>1024value>  
      property>  
      <property>  
        <name>yarn.scheduler.maximum-allocation-mbname>  
        <value>8192value>  
      property>
      
      <property>
        <name>yarn.scheduler.minimum-allocation-vcoresname>
        <value>1value>  
      property>  
      <property>  
        <name>yarn.scheduler.maximum-allocation-vcoresname>
        <value>4value>  
      property>
    configuration>
    
    • 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

    4)修改 workers
    vi /data/hadoop/etc/hadoop/workers

    hadoop131
    hadoop132
    hadoop133
    
    • 1
    • 2
    • 3

    5)修改Hadoop默认启动、关闭脚本,添加root执行权限

    cd /data/hadoop/sbin/
    for i in `ls start*.sh stop*.sh`;do sed -i "1a\HDFS_DATANODE_USER=root\nHDFS_DATANODE_SECURE_USER=root\nHDFS_NAMENODE_USER=root\nHDFS_SECONDARYNAMENODE_USER=root\nYARN_RESOURCEMANAGER_USER=root\n\YARN_NODEMANAGER_USER=root" $i ;done
    
    • 1
    • 2

    6)将hadoop131部署完成的hadoop所有文件、目录同步至其他两个节点

    xsync.sh /data/hadoop/
    
    • 1

    4、启动hadoop

    在启动hadoop之前,我们需要做一步非常关键的步骤,需要在Namenode上执行初始化命令,初始化name目录和数据目录。

    #初始化集群;
    /data/hadoop/bin/hdfs namenode -format
    #停止所有服务;
    /data/hadoop/sbin/stop-all.sh
    #kill方式停止服务;
    ps -ef|grep hadoop|grep java |grep -v grep |awk '{print $2}'|xargs kill -9
    sleep 2
    #启动所有服务;
    /data/hadoop/sbin/start-all.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    5、Hadoop集群验证

    使用上面的xcall.sh命令查看进程

    xcall.sh jps
    
    • 1

    结果如下

    ------ hadoop131 jps ------
    7640 ResourceManager
    7864 NodeManager
    7260 DataNode
    8877 Jps
    7086 NameNode
    ------ hadoop132 jps ------
    4549 DataNode
    5479 Jps
    4654 NodeManager
    ------ hadoop133 jps ------
    4896 NodeManager
    5733 Jps
    4715 DataNode
    4813 SecondaryNameNode
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    也可以分别查看3个节点Hadoop服务进程和端口信息

    #查看服务进程;
    ps -ef|grep -aiE hadoop
    #查看服务监听端口;
    netstat -ntpl
    #执行JPS命令查看JAVA进程;
    jps
    #查看Hadoop日志内容;
    tail -fn 100 /data/hadoop/logs/*.log
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    6、Hadoop WEB测试

    根据如上Hadoop配置,Hadoop大数据平台部署成功,访问hadoop131 9870端口 http://192.168.56.131:9870/,可以看见如下页面:

    在这里插入图片描述

    访问Hadoop集群WEB地址:http://192.168.56.131:8088/,可以看见如下页面:

    在这里插入图片描述

    至此,Hadoop集群环境部署完成!

    参考

    • https://hadoop.apache.org/
    • https://blog.csdn.net/xiaolong1155/article/details/131127712
  • 相关阅读:
    vue学习(基础1)
    web3j solidity 转java
    wpf中EventHandler的使用
    PAT 1032 Sharing
    R语言动量交易策略分析调整后的数据
    CSS中常用的选择器,附上案例!
    MCU(单片机)datasheet(规格说明书)
    【深入学习Redis丨第二篇】Redis集群部署详解
    XSS靶机通关以及XSS介绍
    putty连接虚拟机报错Access defined
  • 原文地址:https://blog.csdn.net/wlddhj/article/details/136396588