• 大数据学习——Hadoop集群搭建


    上转搭建Hadoop本地模式
    Hadoop官网集群搭建教程

    四.Hadoop集群搭建

    1.环境准备
    1)再克隆2台虚拟机,加上之前单机模式的机器,共三台机器
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2)编写集群分发脚本

    期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)

    先查看本地的PATH

    [hadoop@hadoop101 hadoop-3.1.3]$ echo $PATH
    
    • 1

    在这里插入图片描述

    在/home/hadoop/bin目录下创建xsync文件

    [hadoop@hadoop101 ~]$ ll /home/hadoop/
    [hadoop@hadoop101 ~]$ mkdir /home/hadoop/bin
    [hadoop@hadoop101 hadoop-3.1.3]$ touch /home/hadoop/bin/xsync
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    打开此文件

    [hadoop@hadoop101 hadoop-3.1.3]$ vim /home/hadoop/bin/xsync
    
    • 1

    在该文件中编写如下代码

    #!/bin/bash
    #判断参数列表是否为空
    if [ $# -lt -1 ]
    then
        echo "参数为空,请重新输入"
    fi
    #循环遍历集群的所有机器
    for host in hadoop102 hadoop103
    do
            #循环遍历所有目录
            for file in $@
            do
                    #判断文件是否存在
                    if [ -e $file ]
                    then
                            #获取文件父目录绝对路径
                            pdir=$(cd -P $(dirname $file);pwd)
                            #获取文件名
                            filename=$(basename $file)
                            #免密在集群机器创建相同文件夹
                            ssh $host "mkdir -p $pdir"
                            #相集群机器分发文件
                            rsync -av $pdir/$filename $host:$pdir
                    else
                            echo "$file 文件不存在"
                    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

    在这里插入图片描述

    修改脚本 xsync 具有执行权限

    [hadoop@hadoop101 hadoop-3.1.3]$ chmod +x /home/hadoop/bin/xsync
    
    • 1

    在这里插入图片描述
    测试脚本

    [hadoop@hadoop101 ~]$ xsync /home/hadoop/bin/
    
    • 1

    在这里插入图片描述
    将脚本复制到/bin中,以便全局调用

    [hadoop@hadoop101 hadoop-3.1.3]$ sudo cp /home/hadoop/bin/xsync /bin/
    
    • 1

    2.SSH无密登录配置(以一台机器为例)

    1)配置ssh

    [hadoop@hadoop101 ~]$ ssh hadoop102
    [hadoop@hadoop102 ~]$ exit
    
    • 1
    • 2

    在这里插入图片描述

    2)免密配置

    生成公钥和私钥

    [hadoop@hadoop101 ~]$ cd .ssh/
    [hadoop@hadoop101 .ssh]$ ssh-keygen -t rsa
    
    • 1
    • 2

    在这里插入图片描述

    将公钥拷贝到要免密登录的目标机器上

    [hadoop@hadoop101 .ssh]$ ssh-copy-id hadoop101
    [hadoop@hadoop101 .ssh]$ ssh-copy-id hadoop102
    [hadoop@hadoop101 .ssh]$ ssh-copy-id hadoop103
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    注意:在hadoop102 和 hadoop103中也要分别执行以上操作
    还需要在hadoop101上采用root账号,配置一下无密登录到hadoop101、hadoop102、hadoop103;

    3.配置集群

    1)规划hadoop集群

    NameNode和SecondaryNameNode不要安装在同一台服务器
    ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。

    hadoop101    namenode           datanode    nodemanager
    		
    hadoop102    resourcemanager    datanode    nodemanager
    		 
    hadoop103    secondarynamenode  datanode    nodemanager
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2)熟悉hadoop的配置文件

      -- hadoop的默认配置文件
    
         core-default.xml
         hdfs-default.xml
         mapread-default.xml
         yarn-default.xml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
      -- hadoop提供可自定义的配置文件
             core-site.xml
             hdfs-site.xml
             mapread-site.xml
             yarn-site.xml
    	 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
      -- Hadoop 中加载配置文件的顺序
    	当Hadoop集群启动后,先加载默认配置,然后再加载自定义配置文件,自定义的配置信息会覆盖默认配置
    
    • 1
    • 2
    3)配置集群的相关信息(修改hadoop自定义的配置文件)
    
    • 1
    core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。
    
    • 1
    [hadoop@hadoop101 hadoop-3.1.3]$ cd etc/hadoop/
    [hadoop@hadoop101 hadoop]$ ll
    
    • 1
    • 2

    查看一下etc/hadoop/的配置文件
    在这里插入图片描述

    配置core-site.xml(配置hadoop的全局信息)

    [hadoop@hadoop101 hadoop]$ vim core-site.xml
    
    • 1

    在文件中添加以下内容:

    <configuration>
        
        <property>
            <name>fs.defaultFSname>
            <value>hdfs://hadoop101:8020value>
        property>
    
        
        <property>
            <name>hadoop.tmp.dirname>
            <value>/opt/module/hadoop-3.1.3/datavalue>
        property>
    
        
        <property>
            <name>hadoop.http.staticuser.username>
            <value>hadoopvalue>
        property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这里插入图片描述

    配置hdfs-site.xml

    [hadoop@hadoop101 hadoop]$ vim hdfs-site.xml
    
    • 1

    在文件中添加以下内容:

    <configuration>
            
            <property>
            <name>dfs.namenode.http-addressname>
            <value>hadoop101:9870value>
        property>
            
        <property>
            <name>dfs.namenode.secondary.http-addressname>
            <value>hadoop103:9868value>
        property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    配置yarn-site.xml

    [hadoop@hadoop101 hadoop]$ vim yarn-site.xml
    
    • 1

    在文件中添加以下内容:

    <configuration>
    
    
        
        <property>
            <name>yarn.nodemanager.aux-servicesname>
            <value>mapreduce_shufflevalue>
        property>
    
        
        <property>
            <name>yarn.resourcemanager.hostnamename>
            <value>hadoop102value>
        property>
    
        
        <property>
            <name>yarn.nodemanager.env-whitelistname>
            <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOMEvalue>
        property>
        <property>
        <name>yarn.log-aggregation-enablename>
        <value>truevalue>
    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

    在这里插入图片描述

    配置mapred-site.xml

    [hadoop@hadoop101 hadoop]$ vim mapred-site.xml
    
    • 1

    在文件中添加以下内容:

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

    在这里插入图片描述

    在集群上分发配置好的Hadoop配置文件

    [hadoop@hadoop101 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/
    
    • 1

    在这里插入图片描述

    4.群起集群

    1)配置 workers

    [hadoop@hadoop101 hadoop-3.1.3]$ vim /opt/module/hadoop3.1.3/etc/hadoop/workers
    
    • 1

    在文件中添加以下内容:

    hadoop101
    hadoop102
    hadoop103
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

    同步所有节点配置文件

    [hadoop@hadoop101 hadoop-3.1.3]$ xsync /opt/module/hadoop-3.1.3/etc
    
    • 1

    在这里插入图片描述

    2)启动集群

    (1)如果集群是第一次启动,需要在 hadoop101 节点格式化 NameNode

    [hadoop@hadoop101 hadoop]$ hdfs namenode -format
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停 止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。

    2)启动 HDFS

    [hadoop@hadoop101 hadoop-3.1.3]$ sbin/start-dfs.sh
    [hadoop@hadoop101 hadoop-3.1.3]$ ll
    
    • 1
    • 2

    在这里插入图片描述

    3)在配置了 ResourceManager 的节点(hadoop103)启动 YARN

    [atguigu@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh
    [hadoop@hadoop102 hadoop-3.1.3]$ jps
    
    • 1
    • 2

    在这里插入图片描述

    4)Web 端查看 HDFS 的 NameNode

    (a)浏览器中输入:http://hadoop102:9870
    (b)查看 HDFS 上存储的数据信息
    (5)Web 端查看 YARN 的 ResourceManager
    (a)浏览器中输入:http://hadoop103:8088
    (b)查看 YARN 上运行的 Job 信息
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    5)集群基本测试

    执行 wordcount 程序

    [hadoop@hadoop103 hadoop-3.1.3]$ hadoop fs -mkdir /input
    [hadoop@hadoop103 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    5.配置历史服务器
    为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

    1)配置 mapred-site.xml

    [hadoop@hadoop101 hadoop-3.1.3]$ vim etc/hadoop/mapred-site.xml
    
    • 1

    在文件中添加以下内容:

    <configuration>
    
    <property>
        <name>mapreduce.jobhistory.addressname>
        <value>hadoop101:10020value>
    property>  
                
    
    <property>  
        <name>mapreduce.jobhistory.webapp.addressname>
        <value>hadoop101:19888value>
    property>  
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    2)分发配置

    [hadoop@hadoop101 hadoop-3.1.3]$ xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml
    
    • 1

    在这里插入图片描述

    3)在 hadoop101 启动历史服务器

    [hadoop@hadoop101 hadoop-3.1.3]$ mapred --daemon start historyserver
    
    • 1

    在这里插入图片描述

    5)查看 JobHistory

    http://hadoop102:19888/jobhistory
    在这里插入图片描述
    在这里插入图片描述

    6.配置日志的聚集

    1)配置 yarn-site.xml

    [hadoop@hadoop101 hadoop-3.1.3]$ vim etc/hadoop/yarn-site.xml
    
    • 1

    在文件中添加以下内容:

    <configuration>
    
    
     
    
    <property>  
        <name>yarn.log.server.urlname>  
        <value>http://hadoop101:19888/jobhistory/logsvalue>
    property> 
    
    <property>
        <name>yarn.log-aggregation.retain-secondsname>
        <value>604800value>
    property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

    2)分发配置

    [hadoop@hadoop101 hadoop-3.1.3]$ xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml
    
    • 1

    在这里插入图片描述

    3)关闭 NodeManager 、ResourceManager 和 HistoryServer

    [hadoop@hadoop102 hadoop-3.1.3]$ sbin/stop-yarn.sh 
    [hadoop@hadoop101 hadoop-3.1.3]$ mapred --daemon stop historyserver
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    4)启动 NodeManager 、ResourceManage 和 HistoryServer

    [hadoop@hadoop102 hadoop-3.1.3]$ sbin/start-yarn.sh 
    [hadoop@hadoop101 hadoop-3.1.3]$ mapred --daemon start historyserver
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    5)删除 HDFS 上已经存在的输出文件

    [hadoop@hadoop101 hadoop-3.1.3]$ hadoop fs -rm -r /output
    
    • 1

    在这里插入图片描述

    6)执行 WordCount 程序

    [hadoop@hadoop101 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
    
    • 1

    在这里插入图片描述

    7)查看日志
    (1)历史服务器地址
    http://hadoop102:19888/jobhistory
    (2)历史任务列表
    (3)查看任务运行日志
    (4)运行日志详情
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    7.Hadoop 集群常用脚本

    1)Hadoop 集群启停脚本(包含 HDFS,Yarn,Historyserver):myhadoop.sh

    [hadoop@hadoop101 hadoop-3.1.3]$ vim /home/hadoop/bin/myhadoop.sh
    
    • 1

    在文件中添加以下内容:

    #!/bin/bash
    #判断参数列表是否为空
    if [ $# -lt -1 ]
    then
        echo "参数列表为空,请重新输入"
        exit;
    fi
    
    #输入判断
    case $1 in
    #输入为start时
    "start")
            echo "=======================启动hadoop集群======================="
            echo "=========================启动hdfs========================="
            ssh hadoop101 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
            echo "=========================启动yarn========================="
            ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
            echo "=======================启动历史日志服务======================="
            ssh hadoop101 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
    ;;
    #输入为stop时
    "stop")
    
            echo "=======================关闭历史日志服务======================="
            ssh hadoop101 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
            echo "=========================关闭yarn========================="
            ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
            echo "=========================关闭hdfs========================="
            ssh hadoop101 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
    ;;
    #输入为其他时
    *)
            echo "输入有误,请检查"
    ;;
    esac
    
    • 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

    在这里插入图片描述

    保存后退出,然后赋予脚本执行权限

    [hadoop@hadoop101 hadoop-3.1.3]$ chmod 744 /home/hadoop/bin/myhadoop.sh
    
    • 1

    测试脚本

    [hadoop@hadoop101 hadoop-3.1.3]$ myhadoop.sh stop
    [hadoop@hadoop101 hadoop-3.1.3]$ myhadoop.sh start
    [hadoop@hadoop101 hadoop-3.1.3]$ jps
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2)查看三台服务器Java进程脚本:jpsall

    [hadoop@hadoop101 hadoop-3.1.3]$ vim /home/hadoop/bin/jpsall
    
    • 1

    在这里插入图片描述

    在文件中添加以下内容:

    #!/bin/bash
    for host in hadoop101 hadoop102 hadoop103
    do
        echo ================$host===============
        ssh $host jps
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    赋予脚本执行权限

    [hadoop@hadoop101 hadoop-3.1.3]$ chmod 744 /home/hadoop/bin/jpsall
    
    • 1

    分发/home/atguigu/bin目录,保证自定义脚本在三台机器上都可以使用

    [hadoop@hadoop101 hadoop-3.1.3]$ xsync /home/hadoop/bin/
    
    • 1

    在这里插入图片描述

    测试脚本

    [hadoop@hadoop101 hadoop-3.1.3]$ jpsall
    
    • 1

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    分享一个全新的轻量级JDBC读写分离(主备数据库访问)方案
    几种常见的垃圾回收器和垃圾回收算法
    H.264 帧内预测
    Linux shell脚本之回顾及实用笔记
    【JAVA-2】第二章 Java基本语法01:变量与运算符
    举例说明自然语言处理(NLP)技术。
    在轮询系统如何将A站订单在B站自动建立,并调用B站产品
    springboot毕设项目车销售管理系统724s0(java+VUE+Mybatis+Maven+Mysql)
    消防安全无小事!飞凌T507国产核心板助力消防疏散系统智能化升级
    阿里云国际站:互联网云巨头增速放缓 SaaS生态决胜未来?
  • 原文地址:https://blog.csdn.net/qq_43687583/article/details/126435383