【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」

文章目录

  • 1. Hadoop三种工作模式
  • 2. Hadoop分布式集群环境配置
    • 第一步: 安装VMware 与 CentOS的虚拟机
    • 第二步:虚拟机网络配置
    • 第三步:主机远程登入虚拟机
    • 第四步: 配置一台模板虚拟机
    • 第五步: 克隆三台主机
    • 第六步:安装JDK和Hadoop
        • (1) 首先给配置机安装JDK
        • (2) 再给配置机安装Hadoop
        • (3) 将配置机的JDK和Hadoop复制给其他克隆机
    • 第七步:在配置机中编写同步脚本并同步至其他克隆机
        • (1) 设置服务器间免密登入
        • (2) 编写脚本
        • (2) 为编写脚本配置可执行权限
        • (3) 使用编写的xsync脚本将配置机的环境变量同步给其他克隆机
    • 第八步:集群配置
        • (1) 服务器规划
        • (2) 配置文件配置
        • (3) 配置集群
        • (4) 使用xsync将配置机的集群配置文件同步给其他克隆机
    • 第九步:启动集群
        • (1) 初始化NameNode
        • (2) 启动 / 关闭 HDFS
        • (3) 启动 / 关闭 YARN
        • (4) 启动 / 关闭 历史服务器
    • 第十步:集群测试
        • (1) Web端端测试
        • (2) HDFS测试
        • (3) YARN测试
    • 第十一步:时间同步
  • 3. 补充
    • 3.1 使用shell脚本启动集群
    • 3.2 使用shell脚本查看所有服务器启动状况
    • 3.3 Hadoop常用端口和配置文件(面试题)
    • 3.4 集群崩溃时的处理

1. Hadoop三种工作模式

Hadoop有三种工作模式:

  1. 本地模式(Local Mode):单台服务器,数据存储在Linux本地。生产环境几乎不会采用该模式,一般用于测试。
  2. 伪分布式模式(Pseudo-Distributed Mode):单台服务器,数据存储在HDFS上。有较少的小型公司采用该模式。
  3. 完全分布式模式(Fully-Distributed Mode):多台服务器组成集群,数据存储在HDFS上,多台服务器工作。在企业中大量使用。

下面只介绍完全分布式模式的环境配置,至于其他有机会再补上。

2. Hadoop分布式集群环境配置

第一步: 安装VMware 与 CentOS的虚拟机

安装VMware 与 CentOS的虚拟机

第二步:虚拟机网络配置

虚拟机网络配置

第三步:主机远程登入虚拟机

主机远程登入虚拟机

第四步: 配置一台模板虚拟机

将hadoop100做为一台模板虚拟机。

  1. 安装 epel-release:

    [root@hadoop100 ~]# yum install -y epel-release
    
  2. 关闭防火墙,关闭防火墙开机自启:

    [root@hadoop100 ~]# systemctl stop firewalld
    [root@hadoop100 ~]# systemctl disable firewalld.service
    

    注意:在实际开发中,服务器的防火墙也是关闭的,只有连接公网的那台服务器才开启防火墙。
    【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第1张图片

  3. 为hao 用户添加 root 权限,方便后期加 sudo 执行 root 权限的命令:

    [root@hadoop100 ~]# vim /etc/sudoers
    

    【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第2张图片
    hao ALL=(ALL) NOPASSWD:ALL

  4. 在/opt 目录下创建文件夹,并修改所属主和所属组

    [root@hadoop100 ~]# mkdir /opt/module
    [root@hadoop100 ~]# mkdir /opt/software
    [root@hadoop100 ~]# chown hao:hao /opt/module 
    [root@hadoop100 ~]# chown hao:hao /opt/software
    
  5. 卸载虚拟机自带的 JDK

    [root@hadoop100 ~]# rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
    

    【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第3张图片

第五步: 克隆三台主机

  1. 关机模板虚拟机
  2. 克隆三台虚拟机,并命名为:Hadoop102、Hadoop103、Hadoop104
    【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第4张图片
  3. 修改克隆机的主机名和静态IP
    【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第5张图片
    【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第6张图片
  4. 重启主机

第六步:安装JDK和Hadoop

将Hadoop102做为配置机。 即:先给配置机Hadoop102装JDK和Hadoop。后面再直接将Hadoop102虚拟机的JDK和Hadoop复制给克隆机Hadoop103、Hadoop104。

(1) 首先给配置机安装JDK

  1. 将windows主机下的jdk1.8 压缩包通过Xftp拖拽上传到之前在Hadoop102中创建的 /opt/software 文件夹中。

  2. 将 jdk 解压到之前创建的 /opt/module/文件夹中

    tar -zxvf /opt/software/jdk-8u212-linux-x64.tar.gz -C /opt/module/
    
  3. 为JDK配置环境变量: /etc/profile.d文件夹中的.sh后缀的文件都会被加载到为环境变量。所以:
    ① 在/etc/profile.d下创建 my_env.sh,并编写该文件:

    [root@Hadoop102 profile.d]# cd /etc/profile.d
    [root@Hadoop102 profile.d]# sudo vim my_env.sh
    

    ② 编写my_env.sh文件,写入:

    # JAVA_HOME
    export JAVA_HOME=/opt/module/jdk1.8.0_212
    export PATH=$PATH:$JAVA_HOME/bin
    

    ③ 重新加载环境变量的配置文件

    source /etc/profile
    

    ④ 在终端输入java,能够显示java相关文字,则说明JDK安装成功!
    【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第7张图片

(2) 再给配置机安装Hadoop

  1. 将windows主机下的Hadoop 3.x压缩包通过Xftp拖拽上传到之前在Hadoop102中创建的 /opt/software 文件夹中。

  2. 将Hadoop 3.x解压到之前创建的 /opt/module/文件夹中

    tar -zxvf /opt/software/hadoop-3.1.3.tar.gz -C /opt/module/
    
  3. 为Hadoop配置环境变量:
    ① 安装JDK时创建了 my_env.sh,此时再次打开此文件,并添加:

    [root@Hadoop102 profile.d]# cd /etc/profile.d
    [root@Hadoop102 profile.d]# vim my_env.sh
    

    ② 编写my_env.sh文件,写入:

    # HADOOP_HOME
    export HADOOP_HOME=/opt/module/hadoop-3.1.3
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    

    ③ 重新加载环境变量的配置文件

    source /etc/profile
    

    ④ 在终端输入hadoop,能够显示hadoop相关文字,则说明hadoop安装成功!
    【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第8张图片

(3) 将配置机的JDK和Hadoop复制给其他克隆机

scp 可以实现服务器与服务器之间的数据拷贝。语法:
在这里插入图片描述

# 给hadoop103装JDK、Hadoop
scp -r /opt/module/jdk1.8.0_212/ hao@hadoop103:/opt/module/
scp -r /opt/module/hadoop-3.1.3/ hao@hadoop103:/opt/module/

# 给hadoop104装JDK、Hadoop
scp -r /opt/module/jdk1.8.0_212/ hao@hadoop104:/opt/module/
scp -r /opt/module/hadoop-3.1.3/ hao@hadoop104:/opt/module/

# 也可以在hadoop103上使用scp从hadoop102上拉取,比如:
# scp -r hao@hadoop102:/opt/module/hadoop-3.1.3 /opt/module/

Hadoop103、Hadoop104安装JDK、Hadoop是否成功,同上面。

第七步:在配置机中编写同步脚本并同步至其他克隆机

(1) 设置服务器间免密登入

为了后续的方便,设置Hadoop102、Hadoop103、Hadoop104间的免密登入。【免密登陆详情】

(2) 编写脚本

  • scp命令:复制所有文件。
  • rsync命令:只复制名称或内容不相同的文件。

    所以,使用rsync指令去编写同步脚本。
  1. 创建xsync文件
    在这里插入图片描述

  2. 编写xsync文件,内容如下:

    #!/bin/bash
    
    # 1. 判断参数个数
    if [ $# -lt 1 ]
    then
      echo Not Enough Argument
      exit
    fi
    
    # 2. 遍历集群所有机器
    for host in hadoop102 hadoop103 hadoop104
    do
      echo ================== $host =====================
      # 3. 遍历所有目录,逐个发送
      for file in $@
      do
        # 4. 判断文件是否存在
        if [ -e $file ]
          then
            # 5. 获取父目录
            # -P 如果cd后面是一个软链接,-P可以进入软链接指向的真正文件夹
            pdir=$(cd -P $(dirname $file); pwd)
            # 6. 获取当前文件名称
            fname=$(basename $file)
            # -p 如果存在则不创建,如果不存在则创建
            ssh $host "mkdir -p $pdir"
            rsync -av $pdir/$fname $host:$pdir
          else
            echo $file does not exists!
        fi
      done
    done
    

    注意:此脚本只能用于文件同步。并不能删除。比如配置机没有data文件,其他克隆机有data文件,使用xsync后,并不能将其他克隆机的data文件删除。

  3. /home/hao/bin添加到环境变量:
    ① 安装JDK时创建了 my_env.sh,此时再次打开此文件,并添加:

    [root@Hadoop102 profile.d]# cd /etc/profile.d
    [root@Hadoop102 profile.d]# vim my_env.sh
    

    ② 编写my_env.sh文件,写入:

    # HADOOP_HOME
    export HADOOP_HOME=/opt/module/hadoop-3.1.3
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    

    ③ 重新加载环境变量的配置文件

    source /etc/profile
    

(2) 为编写脚本配置可执行权限

【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第9张图片

此时自定义的xsync命令用法:

  1. 同步当个文件夹或文件: xsync 当前主机要同步给其他主机的绝对或相对路径
  2. 同步多个文件夹或文件: xsync 路径1 路径2

(3) 使用编写的xsync脚本将配置机的环境变量同步给其他克隆机

从逻辑上说,环境变量是root才可以修改的,所以要使用root用户去同步
【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第10张图片

第八步:集群配置

(1) 服务器规划

  1. Yarn集群和HDFS集群:逻辑上分离、物理上在一起。
    ① 逻辑上,Yarn集群的启动和HDFS集群的启动并没有直接的依赖关系。
    ② 物理上,Yarn集群、HDFS集群,都是在同一个安装了Hadoop的集群内。

  2. MapReduce是计算框架,是代码层面的组件,没有集群之说。

故,Hadoop集群 = HDFS集群 + Yarn集群 。又因为 NameNodeSecondaryNameNodeResourceManager 都比较占内存,所以最好分别安装在不同的服务器上。最终服务器规划如下:

配置项 Hadoop102 Hadoop102 Hadoop103 Hadoop104
HDFS NameNode、DataNode DataNode SecondaryNameNode、DataNode
YARN NodeManager ResourceMananger、NodeManager NodeMananger
历史服务器 JobHistoryServer

(2) 配置文件配置

  1. 配置文件的分类:
    1. 默认配置文件: 一般不做修改。位于$HADOOP_HOME/share/hadoop,即 /opt/module/hadoop-3.1.3/share/hadoop

      默认的四大配置文件 存放位置
      core-default.xml ① hadoop-common-3.1.3.jar ② 使用jar指令解压后可见core-default.xml文件
      hdfs-default.xml ① hadoop-hdfs-3.1.3.jar ② 使用jar指令解压后可见hdfs-default.xml文件
      yarn-default.xml ① hadoop-yarn-common-3.1.3.jar ② 使用jar指令解压后可见yarn-default.xml文件
      mapred-default.xml ① hadoop-mapreduce-client-core-3.1.3.jar ② 使用jar指令解压后可见mapred-default.xml文件
    2. 自定义配置文件: 一般修改自定义文件。位于$HADOOP_HOME/etc/hadoop,即/opt/module/hadoop-3.1.3/etc/hadoop/

      自定义的四大配置文件 存放位置
      core-site.xml 该目录下直接可见
      hdfs-site.xml 该目录下直接可见
      yarn-site.xml 该目录下直接可见
      mapred-site.xml 该目录下直接可见
  2. 修改Hadoop102的自定义配置文件
    1. 编辑core-site.xml文件:
      【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第11张图片

      "1.0" encoding="UTF-8"?>
      type="text/xsl" href="configuration.xsl"?>
      
        <!-- 指定NameNode的地址 -->
        
          fs.defaultFS</name>
          hdfs://hadoop102:8020</value>
        </property>
      
        <!-- 指定hadoop数据的存储目录 -->
        <!-- 我们指定的data文件夹如果不存在,hadoop会自动进行创建 -->
        
          hadoop.tmp.dir</name>
          /opt/module/hadoop-3.1.3/data</value>
        </property>
      
        <!-- 配置HDFS网页登录使用的静态用户为hao(即hdfs中的用户) -->
        <!-- 如果不配置,那么在浏览器中默认的是Mr.who,该用户删除hdfs文件时,会提示无权限。-->
        
          hadoop.http.staticuser.user</name>
          hao</value>
        </property>
      </configuration>
      
    2. 编写hdfs-site.xml文件:配置NameData、SecondinaryNameData访问外网信息
      【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第12张图片

      "1.0" encoding="UTF-8"?>
      type="text/xsl" href="configuration.xsl"?>
      
      
        <!-- NameNode对外暴露的Web端访问地址 -->
        
          dfs.namenode.http-address</name>
          hadoop102:9870</value>
        </property>
      
        <!-- 2NN 对外暴露的Web端访问地址(2NN安装在hadoop104上) -->
        
          dfs.namenode.secondary.http-address</name>
          hadoop104:9868</value>
        </property>
      </configuration>
      
    3. 配置yarn-site.xml文件:

      "1.0"?>
      
        <!-- 指定MR走shuffle -->
        <!-- 在yarn-default.xml中该项默认值为空,但是官方推荐使用mapreduce_shuffle -->
        
          yarn.nodemanager.aux-services</name>
          mapreduce_shuffle</value>
        </property>
      
        <!-- 指定ResourceManager的地址(ResourceManager安装在hadoop103) -->
        
          yarn.resourcemanager.hostname</name>
          hadoop103</value>
        </property>
      
        <!-- 环境变量的继承 -->
        
          yarn.nodemanager.env-whitelist</name>
          JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
        </property>
        
        <!-- 配置日志聚集功能,yarn-default.xml中该项默认为false -->
        
      	yarn.log-aggregation-enable</name>
      	true</value>
        </property>
        <!-- 设置日志聚集服务器地址,设置聚集到历史日志服务器上,方便查看 -->
        
      	yarn.log.server.url</name>
      	http://hadoop102:19888/jobhistory/logs</value>
        </property>
      	<!-- 设置日志保留时间:7天 -->
        
      	yarn.log-aggregation.retain-seconds</name>
      	604800</value>
        </property>
      
        <!-- 结点大小限制 -->
        
          yarn.nodemanager.resource.memory-mb</name>
          22528</value>
          每个节点可用内存,单位MB</discription>
        </property>
        
          yarn.scheduler.minimum-allocation-mb</name>
          1500</value>
          单个任务可申请最少内存,默认1024MB</discription>
        </property>
        
          yarn.scheduler.maximum-allocation-mb</name>
          16384</value>
          单个任务可申请最大内存,默认8192MB</discription>
        </property>
      
      </configuration>
      
    4. 配置mapred-site.xml文件:

      "1.0"?>
      type="text/xsl" href="configuration.xsl"?>
      
      
        <!-- 指定MapReduce程序运行在Yarn上 -->
        <!-- mapred-default.xml中该项默认值是local,即在本地运行 -->
        
          mapreduce.framework.name</name>
          yarn</value>
        </property>
        
        <!-- 配置历史服务器的内部服务端地址 -->
        
          mapreduce.jobhistory.address</name>
          hadoop102:10020</value>
        </property>
        <!-- 配置历史服务器暴露的web地址 -->
        
          mapreduce.jobhistory.webapp.address</name>
          hadoop102:19888</value>
        </property>
        
        <!-- map、reduce结点的限制 -->
        
          mapreduce.map.memory.mb</name>
          1500</value>
          每个Map任务的物理内存限制</description>
        </property>
       
        
          mapreduce.reduce.memory.mb</name>
          3000</value>
          每个Reduce任务的物理内存限制</description>
        </property>
       
        
          mapreduce.map.java.opts</name>
          -Xmx1200m</value>
        </property>
       
        
          mapreduce.reduce.java.opts</name>
          -Xmx2600m</value>
        </property>
        
          mapreduce.framework.name</name>
          yarn</value>
        </property>
      
      </configuration>
      

(3) 配置集群

参与集群的所有主机都需要记录在$HADOOP_HOME/etc/hadoop/,即/opt/module/hadoop-3.1.3/etc/hadoop/路径下的works文件中。

[root@Hadoop102 ~]# cd /opt/module/hadoop-3.1.3/etc/hadoop/
[root@Hadoop102 hadoop]# vim workers 

【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第13张图片

(4) 使用xsync将配置机的集群配置文件同步给其他克隆机

从逻辑上说,是用户hao安装的Hadoop,所以要使用hao用户去同步Hadoop的文件

[hao@Hadoop102 hadoop]# xsync /opt/module/hadoop-3.1.3/etc/hadoop/

然后,可以在Hadoop103中查看是否同步成功。

第九步:启动集群

(1) 初始化NameNode

如果是第一次启动集群,需要对NameNode进行初始化操作,不是第一次则不用。(类似于电脑新加了一个硬盘,需要给硬盘进行分盘符等初始化操作)

非常重要: 由于配置机以及其他克隆机的Hadoop都是以hao用户去创建的,所以为了保证权限的同一,应该hao用户去执行以下指令,这样该指令所创建的data文件logs文件 还是hao用户。

在配置NameNode的主机上执行以下命令:

# 在任何路径下输入以下初始化命令
[hao@Hadoop102 ~]# hdfs namenode -format

【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第14张图片

注意:如果多次格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到以往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止NameNode和DataNode的进程,并且要使用rm -rf 文件夹名删除所有机器datalogs目录,然后再进行格式化

(2) 启动 / 关闭 HDFS

  1. 启动:在配置NameNode的主机上执行/opt/module/hadoop-3.1.3/sbin下的start-dfs.sh文件。
    在这里插入图片描述

  2. **查看:**再输入jps查看当前主机运行的 hdfs 的java进程和集群规划的是否一致。
    【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第15张图片
    再上Hadoop103、Hadoop104上查看一下,是否与服务器规划一致,若所有服务器都一致,则hdfs配置成功。

  3. 关闭:

    1. 关闭namenode/datanode/secondarynamenode一个或多个,则在集群中的任意主机上输入:
      hdfs --daemon start/stop namenode/datanode/secondarynamenode
      
    2. 如果要关闭HDFS:namenode/datanode/secondarynamenode所有,则:在配置NameNode的主机上执行/opt/module/hadoop-3.1.3/sbin下的stop-dfs.sh文件。
    3. 关闭所有HDFS、YARN等,则在集群中的任意主机上执行stop-all.sh文件。

(3) 启动 / 关闭 YARN

  1. 启动:在配置ResourceManager的主机上执行/opt/module/hadoop-3.1.3/sbin下的start-yarn.sh文件。

  2. **查看:**再输入jps查看当前主机运行的 hdfs 的java进程和集群规划的是否一致。
    【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第16张图片

    再上Hadoop103、Hadoop104上查看一下,是否与服务器规划一致,若所有服务器都一致,则yarn配置成功。

  3. 关闭:

    1. 关闭resourcemanager/nodemanager一个或多个,则在集群中的任意主机上输入:
      hdfs --daemon start/stop resourcemanager/nodemanager
      
    2. 关闭所有的YARN:resourcemanager/nodemanager所有,则:在配置NameNode的主机上执行/opt/module/hadoop-3.1.3/sbin下的stop-yarn.sh文件。
    3. 关闭所有HDFS、YARN等,则在集群中的任意主机上执行stop-all.sh文件。

(4) 启动 / 关闭 历史服务器

  1. 在配置JobHistoryServer的主机上的终端输入以下命令:

    [hao@Hadoop102 hadoop]$ mapred --daemon start historyserver
    
  2. 再输入jps查看当前主机运行的 hdfs 的java进程和集群规划的是否一致。
    【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第17张图片

  3. 如果要关闭历史服务器:

    [hao@Hadoop102 hadoop]$ mapred --daemon stop historyserver
    

第十步:集群测试

(1) Web端端测试

  1. Web端查看HDFS的NameNode:打开浏览器输入:http://192.168.10.102:9870 【192.168.10.102是配置机Hadoop102的IP】就可打开如下界面:
    【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第18张图片
  2. Web端查看ResourceManager:打开浏览器输入:http://192.168.10.103:8088 【192.168.10.103是克隆机Hadoop103的IP】就可打开如下界面:
    【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第19张图片
  3. Web端查看日志:http://192.168.10.102:19888 【192.168.10.102是克隆机Hadoop102的IP】就可打开如下界面:
    【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第20张图片

(2) HDFS测试

  1. 在hdfs创建文件夹testDir:

    1. 命令方式创建:
      [hao@Hadoop102 sbin]$ hadoop fs -mkdir /testDir
      
    2. web界面创建:
      【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第21张图片
  2. 查看创建的文件夹testDir:

    1. 命令查看:
      [hao@Hadoop102 ~]$ hadoop fs -ls /testDir
      
    2. 在web页面查看:
      【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第22张图片
  3. 上传文件a.sh:

    1. 命令方式上传:
      # 将 a.sh 文件 上传到 /testDir目录下
      [hao@Hadoop102 temp]$ hadoop fs -put /home/hao/temp/a.sh /testDir
      
    2. web界面上传:
      【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第23张图片

    注意:上传后,集群中的每台服务器都会存储一份a.sh文件,具体存储在/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-xxxxxxxx/current/finalized/subdir0/subdir0中。

    1. 如果上传的是小文件,该目录下会生成一个文件,则用vim打开就是完整内容:
      在这里插入图片描述
    2. 如果上传的是大文件,该目录下会生成多个文件,需要先用拼接命令,将多个文件拼接成一个完整文件,再用vim打开该文件就是完整内容:
      【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第24张图片
  4. 下载文件a.sh:

    1. 命令方式下载:
      hadoop fs -get /testDir/a.sh /home/hao/temp/aa.sh
      
    2. web方式下载:
      【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第25张图片
  5. 删除文件:

    # Hadoop中:
    # 能 rm -f
    # 能 rm -r
    # rm -rf 要写成 rm -r -f (r、f要分开)
    [hao@Hadoop102 temp]$ hadoop fs -rm -f /testDir/a.sh
    

(3) YARN测试

# 在任意地方
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /testDir/a.sh /output

然后通过yarn的web管理页面查看,可以发现多出来一个正在运行的wordcount任务。当yarn管理页面上的job状态变为FINISHED时,代表着程序执行完毕,就可以在/output目录下查看到输出的结果/output/part-r-00000
【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第26张图片
【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第27张图片

第十一步:时间同步

如果是集群中的主机都能连接外网,那么他们的时间一定是同步的。所以不需要配置时间同步。只有内网有服务器不能连接外网才需要将其与其他主机时间同步。故一般不需要配置

3. 补充

3.1 使用shell脚本启动集群

/home/hao/bin/下创建hadoop.sh脚本:
【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第28张图片
其内容为:

#!/bin/bash

if [ $# -lt 1 ]
then
  echo "No args Input..."
  exit;
fi

case $1 in
"start")
  echo "============= 启动hadoop集群 ======================"

  echo "------------- 启动 hdfs ---------------------------"
  ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
  echo "------------- 启动 yarn ---------------------------"
  ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
  echo "---------- 启动 historyserver ----------------------"
  ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
  echo "================ 关闭hadoop集群 =========================="

  echo "-------------- 关闭historyserver ------------------------"
  ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
  echo "---------------- 关闭 yarn ------------------------------"
  ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
  echo "---------------- 关闭 hdfs ------------------------------"
  ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
  echo "Input Args Error..."
;;
esac

然后命令为:

  1. hadoop.sh stop是停止hdfs、yarn、历史服务器
  2. hadoop.sh start是启动hdfs、yarn、历史服务器

例如:
【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第29张图片

3.2 使用shell脚本查看所有服务器启动状况

/home/hao/bin/下创建jpsall脚本:

#!/bin/bash

for host in hadoop102 hadoop103 hadoop104
do
  echo ================= $host =================
  ssh $host jps
done

【Hadoop---03】Hadoop分布式环境搭建「安装虚拟机、安装CentOS操作系统 | 虚拟机的网络配置 | rsync | 集群配置 | 启动集群 | 集群测试」_第30张图片

3.3 Hadoop常用端口和配置文件(面试题)

(1) 常用端口号

  1. Hadoop 3.x中:
    1. HDFS NameNode 内部通讯端口:8020/9000/9820
    2. HDFS NameNode 对用户的web查询端口:9870
    3. Yarn查看任务运行情况的web页面端口:8088
    4. 历史服务器对外暴露的web页面端口:19888
  2. Hadoop 2.x中:
    1. HDFS NameNode 内部通讯端口:8020/9000
    2. HDFS NameNode 对用户的web查询端口:50070
    3. Yarn查看任务运行情况的web页面端口:8088
    4. 历史服务器对外暴露的web页面端口:19888

(2) 配置文件:

    1. Hadoop 3.x中:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、workers
  1. hadoop 2.x中:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、slaves

3.4 集群崩溃时的处理

  1. 关闭HDFSYarn历史服务器
  2. 删除所有服务器/opt/module/hadoop-3.1.3下的datalogs文件
  3. 重新执行启动集群步骤

你可能感兴趣的:(#,Hadoop,centos,hadoop,分布式)