【手把手配置】Hadoop集群--虚拟机模拟完全分布式模式

Hadoop运行环境搭建

模板虚拟机环境准备
  1. VMware安装
    • 快速安装
  2. CentOS配置
    • 虚拟机配置(硬件)
      在这里插入图片描述在这里插入图片描述
      在这里插入图片描述

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

  • 查看自己电脑的CPU核数
    在这里插入图片描述

为何采用2+2+2+2的配置呢?

首先是有3个hadoop虚拟机组成集群,故配置3*2;同时要考虑Windows实际运行的内容,再配置个2;下面配置内存,同理。

在这里插入图片描述
在这里插入图片描述
选择IO控制器
磁盘类型
在这里插入图片描述
在这里插入图片描述
指定磁盘存放位置
硬件配置汇总

  • 系统安装(软件)
    插入光驱
    开启虚拟机
    安装CentOS7
    配置

    • 日期和时间
      日期和时间

    • 软件选择
      软件选择

      • 安装位置

安装位置
手动配置分区

  • KDUMP

       ![KDUMP](https://img-blog.csdnimg.cn/img_convert/757eb5eca9f4dfe134ccaf3816a47871.png)
    
    • 网络和主机名

      网络和主机名

    • 安全协议

      安全协议
      在这里插入图片描述

    开始安装,安装期间设置root用户密码
    设置root用户

    安装完成后,重启虚拟机,进入引导界面,基本勾选“前进”,即可;同时要创建一个普通用户

    接受许可证

    在这里插入图片描述

  • 网络配置

    1. 虚拟机的网络配置

      虚拟机的网络配置
      NAT模式配置

    2. 实体机的网络配置(以win10为例)

      实体机网络配置
      VM8配置
      Internet4配置

    3. CentOS的网络IP修改

      root用户下运行

      vim /etc/sysconfig/network-scripts/ifcfg-ens33
      

      编辑内容如下:

      TYPE="Ethernet"    #网络类型(通常是Ethemet)
      PROXY_METHOD="none"
      BROWSER_ONLY="no"
      BOOTPROTO="static"   #IP的配置方法[none|static|bootp|dhcp](引导时不使用协议|静态分配IP|BOOTP协议|DHCP协议)
      DEFROUTE="yes"
      IPV4_FAILURE_FATAL="no"
      IPV6INIT="yes"
      IPV6_AUTOCONF="yes"
      IPV6_DEFROUTE="yes"
      IPV6_FAILURE_FATAL="no"
      IPV6_ADDR_GEN_MODE="stable-privacy"
      NAME="ens33"   
      UUID="e83804c1-3257-4584-81bb-660665ac22f6"   #随机id
      DEVICE="ens33"   #接口名(设备,网卡)
      ONBOOT="yes"   #系统启动的时候网络接口是否有效(yes/no)
      #IP地址
      IPADDR=192.168.10.100  
      #网关  
      GATEWAY=192.168.10.2      
      #域名解析器
      DNS1=192.168.10.2
      

      修改前先按“i”,进入编辑模式;修改后按“ESC”键后输入“:wq”以退出并保存

      效果如下:

      CentOSIP配置

      重启网络服务

      systemctl restart network
      

      查看当前IP

      ifconfig
      

    查询IP

    保证Linux系统ifcfg-ens33文件中IP地址、虚拟网络编辑器地址和Windows系统VM8网络IP地址相同

    1. 修改主机名和hosts文件

      修改主机名称,为hadoop100

      vim /etc/hostname
      

      配置Linux克隆机主机名称映射hosts文件

      vim /etc/hosts
      

      内容如下:

      192.168.10.100 hadoop100
      192.168.10.101 hadoop101
      192.168.10.102 hadoop102
      192.168.10.103 hadoop103
      192.168.10.104 hadoop104
      192.168.10.105 hadoop105
      192.168.10.106 hadoop106
      192.168.10.107 hadoop107
      192.168.10.108 hadoop108
      

      重启虚拟机

      reboot
      
  • 修改windows的主机映射文件(hosts文件)

    进入C:\Windows\System32\drivers\etc

    将hosts文件拷贝到桌面

    打开hosts文件添加如下内容:

    192.168.10.100 hadoop100
    192.168.10.101 hadoop101
    192.168.10.102 hadoop102
    192.168.10.103 hadoop103
    192.168.10.104 hadoop104
    192.168.10.105 hadoop105
    192.168.10.106 hadoop106
    192.168.10.107 hadoop107
    192.168.10.108 hadoop108
    

    将桌面hosts文件覆盖C:\Windows\System32\drivers\etc路径hosts文件

  1. 远程终端工具Xshell和Xftp配置
    • Xshell安装

      xshell免费版

    • 以Xshell配置hadoop100为例

      1. 创建新链接
        Xshell新建链接

      2. 编辑新链接

        编辑新链接
        在这里插入图片描述
        在这里插入图片描述

      3. 连接完成
        连接完成

    • 配置Xftp,不再赘述

  2. hadoop100虚拟机配置
    • 检查是否正常上网

      ping www.baidu.com
      

      测试下虚拟机联网情况

    • 安装epel-release

      yum install -y epel-release
      
      • Extra Packages for Enterprise Linux是为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux。相当于是一个软件仓库,大多数rpm包在官方 repository 中是找不到的)

      • 如果Linux安装的是最小系统版,还需要安装如下工具;如果安装的是Linux桌面标准版,不需要执行如下操作:

        yum install -y net-tools
        yum install -y vim
        
    • 关闭防火墙和防火墙开机自启

      # 关闭防火墙
      systemctl stop firewalld
      # 关闭防火墙开机自启
      systemctl disable firewalld.service
      

      在企业开发时,通常单个服务器的防火墙时关闭的。公司整体对外会设置非常安全的防火墙

    • 创建普通用户,并设置密码

      useradd userName
      passwd userName
      

      输入两次用户密码

    • 为普通用户配置root权限

      vim /etc/sudoers
      
      # 在%wheel这行下面添加一行
      
      ## Allow root to run any commands anywhere
      root    ALL=(ALL)     ALL
      
      ## Allows people in group wheel to run all commands
      %wheel  ALL=(ALL)       ALL
      userName   ALL=(ALL)     NOPASSWD:ALL
      
    • 创建相关文件夹

      # 在/opt目录下创建module和software文件夹
      mkdir /opt/module
      mkdir /opt/software
      # 修改module和software文件夹的所有者和所属组为普通用户
      chown userName:userName /opt/module 
      chown userName:userName /opt/software
      # 查看文件夹所有者和所属组
      cd /opt/
      ll
      
    • 卸载虚拟机自带的JDK

      rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
      

      如果你的虚拟机是最小化安装不需要执行这一步

    • 重启虚拟机

      reboot
      
  3. 克隆虚拟机
    • 以模板hadoop100,克隆三台虚拟机(克隆时先关闭hadoop100)

      克隆
      开始克隆
      克隆自
      完整克隆

      克隆机命名

      克隆完成

    • 修改克隆的虚拟机IP(与上面操作基本一样)

      NAT模式
      NAT配置

      修改IP文件

      vim /etc/sysconfig/network-scripts/ifcfg-ens33
      

      内容如下

      DEVICE=ens33
      TYPE=Ethernet
      ONBOOT=yes
      BOOTPROTO=static
      NAME="ens33"
      IPADDR=192.168.10.102
      PREFIX=24
      GATEWAY=192.168.10.2
      DNS1=192.168.10.2
      

      保证Linux系统ifcfg-ens33文件中IP地址、虚拟网络编辑器地址和Windows系统VM8网络IP地址相同

    • 修改克隆的主机名(与上面操作基本一样)

      # 修改主机名称
      vim /etc/hostname
      # 修改为:
      hadoop102
      # 配置Linux克隆机主机名称映射hosts
      vim /etc/hosts
      # 内容如下:
      192.168.10.100 hadoop100
      192.168.10.101 hadoop101
      192.168.10.102 hadoop102
      192.168.10.103 hadoop103
      192.168.10.104 hadoop104
      192.168.10.105 hadoop105
      192.168.10.106 hadoop106
      192.168.10.107 hadoop107
      192.168.10.108 hadoop108
      
    • 重启克隆机

      reboot
      
    • 修改windows的主机映射文件(hosts文件)

      进入C:\Windows\System32\drivers\etc

      将hosts文件拷贝到桌面

      打开hosts文件添加如下内容:

      192.168.10.100 hadoop100
      192.168.10.101 hadoop101
      192.168.10.102 hadoop102
      192.168.10.103 hadoop103
      192.168.10.104 hadoop104
      192.168.10.105 hadoop105
      192.168.10.106 hadoop106
      192.168.10.107 hadoop107
      192.168.10.108 hadoop108
      

      将桌面hosts文件覆盖C:\Windows\System32\drivers\etc路径hosts文件

  4. 为hadoop102安装JDK(以hadoop102为例)
    1. 卸载已有JDK

      安装JDK前,一定确保提前删除了虚拟机自带的JDK

    2. 上传下载好的JDK

      利用Xftp将JDK导入到opt目录下的software文件夹下

      上传JDK

      下载地址:jdk-8u212-linux-x64.tar.gz百度网盘 提取码:cbw4

    3. 检查是否上传成功并解压

      检查是否上传成功

      ls /opt/software/
      # 结果如下:
      jdk-8u212-linux-x64.tar.gz
      

      解压到指定目录下

      1.  tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
        
    4. 配置JDK环境变量

      sudo vim /etc/profile.d/my_env.sh
      

      内容如下:

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

      source一下/etc/profile文件,让新的环境变量PATH生效

      source /etc/profile
      
    5. 测试JDK是否安装成功

      java
      # 或查看Java版本
      java -version
      
  5. 为hadoop102安装Hadoop
    1. 将下载好的hadoop上传到/opt/software文件夹下

      上传Hadoop

      Hadoop下载地址:hadoop-3.1.3

    2. 解压安装文件到/opt/module

      # 进入对应目录
      cd /opt/software/
      # 解压到对应目录
      tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
      # 查看是否解压成功
      ls /opt/module/
      
    3. 为Hadoop配置环境变量

      sudo vim /etc/profile.d/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文件,让新的环境变量PATH生效

      source /etc/profile
      
    4. 测试是否安装成功

      hadoop
      # 或查看hadoop版本
      hadoop version
      

      查看Hadoop目录结构

      [user@hadoop102 hadoop-3.1.3]$  ll
      
      # 内容如下:
      总用量 52
      drwxr-xr-x. 2 user user  4096 522 2017 bin
      drwxr-xr-x. 3 user user  4096 522 2017 etc
      drwxr-xr-x. 2 user user  4096 522 2017 include
      drwxr-xr-x. 3 user user  4096 522 2017 lib
      drwxr-xr-x. 2 user user  4096 522 2017 libexec
      -rw-r--r--. 1 user user 15429 522 2017 LICENSE.txt
      -rw-r--r--. 1 user user   101 522 2017 NOTICE.txt
      -rw-r--r--. 1 user user  1366 522 2017 README.txt
      drwxr-xr-x. 2 user user  4096 522 2017 sbin
      drwxr-xr-x. 4 user user  4096 522 2017 share
      

      bin目录:存放对Hadoop相关服务(hdfs,yarn,mapred)进行操作的脚本

      etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件

      lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)

      sbin目录:存放启动或停止Hadoop相关服务的脚本

      share目录:存放Hadoop的依赖jar包、文档、和官方案例

本地运行模式
  1. 在hadoop文件夹下创建wcinput文件夹

    mkdir wcinput
    
  2. 在wcinput文件夹下创建并编辑word.txt文件

    # 进入wcinput文件夹
    cd wcinput
    # 编辑word.txt
    vim word.txt
    
    # 内容如下:
    hadoop yarn
    hadoop mapreduce
    user
    user
    
  3. 回到Hadoop目录,即/opt/module/hadoop

    cd /opt/module/hadoop
    
  4. 执行程序

    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput
    
  5. 查看结果

    cat wcoutput/part-r-00000
    
    # 结果如下:
    user 2
    hadoop  2
    mapreduce       1
    yarn    1
    
完全分布式模式
  • 上述配置模板虚拟机完成,进行以下操作:

    1. 准备工作

      • 分发jdk到集群中各机器

        修改两个目录的组别

        sudo chown userName:userName -R /opt/module
        sudo chown userName:userName -R /opt/software
        

        将hadoop102中/opt/module/jdk1.8.0_212目录拷贝到hadoop103和hadoop104上

        scp -r /opt/module/jdk1.8.0_212  user@hadoop103:/opt/module
        scp -r /opt/module/jdk1.8.0_212  user@hadoop104:/opt/module
        
      • 同步hadoop到集群中各机器

        将hadoop102中/opt/module/hadoop-3.1.3目录同步到hadoop103和hadoop104上

        rsync -av hadoop-3.1.3/ userName@hadoop103:/opt/module/hadoop-3.1.3/
        rsync -av hadoop-3.1.3/ userName@hadoop104:/opt/module/hadoop-3.1.3/
        
      • 编写xsync脚本分发集群

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

        [userName@hadoop102 opt]$  cd /home/userName
        [userName@hadoop102 ~]$  mkdir bin
        [userName@hadoop102 ~]$  cd bin
        [userName@hadoop102 bin]$  vim xsync
        

        在该文件中编写如下代码:

        #!/bin/bash
        
        #1. 判断参数个数
        if [ $# -lt 1 ]
        then
            echo Not Enough Arguement!
            exit;
        fi
        
        #2. 遍历集群所有机器
        for host in hadoop102 hadoop103 hadoop104
        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
        

        修改脚本 xsync 具有执行权限

        [userName@hadoop102 bin]$  chmod +x xsync
        

        测试脚本

        [userName@hadoop102 ~]$  xsync /home/userName/bin
        

        将脚本复制到/bin中,以便全局调用

        [userName@hadoop102 bin]$  sudo cp xsync /bin/
        

        同步环境变量配置(root所有者)

        [userName@hadoop102 ~]$  sudo ./bin/xsync /etc/profile.d/my_env.sh
        

        使环境变量在集群中其他机器生效

        [userName@hadoop103 bin]$  source /etc/profile
        [userName@hadoop104 bin]$  source /etc/profile
        
      • 配置无密钥登录

        生成公钥和私钥

        [userName@hadoop102 ~]$  cd ~/.ssh
        [userName@hadoop102 .ssh]$  ssh-keygen -t rsa
        

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

        [userName@hadoop102 .ssh]$  ssh-copy-id hadoop102
        [userName@hadoop102 .ssh]$  ssh-copy-id hadoop103
        [userName@hadoop102 .ssh]$  ssh-copy-id hadoop104
        

        还需要在hadoop103上采用user账号配置一下无密登录到hadoop102、hadoop103、hadoop104服务器上。

        还需要在hadoop104上采用user账号配置一下无密登录到hadoop102、hadoop103、hadoop104服务器上。

        与上述操作一致(即,重复①生成公钥和私钥和②将公钥拷贝到要免密登录的目标机器上两步)

    2. 配置集群

      集群部署规划

      hadoop102hadoop103hadoop104
      HDFSNameNode
      DataNode
      DataNodeSecondaryNameNode
      DataNode
      YARNNodeManagerResourceManager
      NodeManager
      NodeManager

      Ø NameNode和SecondaryNameNode不要安装在同一台服务器

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

      默认配置文件:

      要获取的默认文件文件存放在Hadoop的jar包中的位置
      [core-default.xml]hadoop-common-3.1.3.jar/core-default.xml
      [hdfs-default.xml]hadoop-hdfs-3.1.3.jar/hdfs-default.xml
      [yarn-default.xml]hadoop-yarn-common-3.1.3.jar/yarn-default.xml
      [mapred-default.xml]hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml

      配置集群

      • 核心配置文件

        [userName@hadoop102 ~]$  cd $HADOOP_HOME/etc/hadoop
        [userName@hadoop102 hadoop]$  vim core-site.xml
        
        <?xml version="1.0" encoding="UTF-8"?>
        <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
        
        <configuration>
            <!-- 指定NameNode的地址 -->
            <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop102:8020</value>
            </property>
        
            <!-- 指定hadoop数据的存储目录 -->
            <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/module/hadoop-3.1.3/data</value>
            </property>
        
            <!-- 配置HDFS网页登录使用的静态用户为userName -->
            <property>
                <name>hadoop.http.staticuser.user</name>
                <value>userName</value>
            </property>
        </configuration>
        
      • HDFS配置文件

        [userName@hadoop102 hadoop]$  vim hdfs-site.xml
        
        <?xml version="1.0" encoding="UTF-8"?>
        <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
        
        <configuration>
        	<!-- nn web端访问地址-->
        	<property>
                <name>dfs.namenode.http-address</name>
                <value>hadoop102:9870</value>
            </property>
        	<!-- 2nn web端访问地址-->
            <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoop104:9868</value>
            </property>
        </configuration>
        
      • YARN配置文件

        [userName@hadoop102 hadoop]$  vim yarn-site.xml
        
        <?xml version="1.0" encoding="UTF-8"?>
        <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
        
        <configuration>
            <!-- 指定MR走shuffle -->
            <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
            </property>
        
            <!-- 指定ResourceManager的地址-->
            <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoop103</value>
            </property>
        
            <!-- 环境变量的继承 -->
            <property>
                <name>yarn.nodemanager.env-whitelist</name>
               <value>
                   JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
               </value>
            </property>
        </configuration>
        
      • MapReduce配置文件

        [userName@hadoop102 hadoop]$  vim mapred-site.xml
        
        <?xml version="1.0" encoding="UTF-8"?>
        <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
        
        <configuration>
        	<!-- 指定MapReduce程序运行在Yarn上 -->
            <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
            </property>
        </configuration>
        

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

      [userName@hadoop102 hadoop]$  xsync /opt/module/hadoop-3.1.3/etc/hadoop/
      

      在103和104上查看文件分发情况

      [userName@hadoop103 ~]$  cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
      [userName@hadoop104 ~]$  cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
      
    3. 群起并测试集群

      配置workers

      1. 进入workers

        [userName@hadoop102 hadoop]$  vim /opt/module/hadoop3.1.3/etc/hadoop/workers
        
      2. 修改为以下内容:

        hadoop102
        hadoop103
        hadoop104
        

        即将该文件中localhost的内容修改为上述内容,并要求结尾不允许有空格,文件中不允许有空行

      3. 同步集群所有机器配置文件

        [userName@hadoop102 hadoop]$  xsync /opt/module/hadoop-3.1.3/etc
        

      启动集群

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

        [userName@hadoop102 hadoop-3.1.3]$  hdfs namenode -format
        

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

      2. 启动HDFS

        [userName@hadoop102 hadoop-3.1.3]$  sbin/start-dfs.sh
        

        去集群中各台机器中输入jps,查看对应结点与配置规则HDFS是否一致

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

        [userName@hadoop103 hadoop-3.1.3]$  sbin/start-yarn.sh
        

        去集群中各台机器中输入jps,查看对应结点与配置规则YARN是否一致

      4. Web端查看HDFS的NameNode

        (a)浏览器中输入:http://hadoop102:9870

        (b)查看HDFS上存储的数据信息

      5. Web端查看YARN的ResourceManager

        (a)浏览器中输入:http://hadoop103:8088

        (b)查看YARN上运行的Job信息

      集群基本测试

      • 上传文件到集群

        [userName@hadoop102 ~]$  hadoop fs -mkdir /input
        [userName@hadoop102 ~]$  hadoop fs -put $HADOOP_HOME/wcinput/word.txt /input
        
      • 执行wordcount程序

        [userName@hadoop102 hadoop-3.1.3]$  hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
        
    • 优化配置内容

      • 配置历史服务器

        1. 配置mapred-site.xml

          vim mapred-site.xml
          

          增加如下配置:

          <configuration>
              <!-- 历史服务器端地址 -->
              <property>
                  <name>mapreduce.jobhistory.address</name>
                  <value>hadoop102:10020</value>
              </property>
          
              <!-- 历史服务器web端地址 -->
              <property>
                  <name>mapreduce.jobhistory.webapp.address</name>
                  <value>hadoop102:19888</value>
              </property>
          </configuration>
          
        2. 分发配置

          [userName@hadoop102 hadoop]$  xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml
          
        3. 在hadoop102启动历史服务器

          [userName@hadoop102 hadoop]$  mapred --daemon start historyserver
          
        4. 查看历史服务器是否启动

          [userName@hadoop102 hadoop]$  jps
          
      • 配置日志的聚集

        1. 配置yarn-site.xml

          [userName@hadoop102 hadoop]$  vim yarn-site.xml
          

          增加如下配置

          <configuration>
              <!-- 开启日志聚集功能 -->
              <property>
                  <name>yarn.log-aggregation-enable</name>
                  <value>true</value>
              </property>
              <!-- 设置日志聚集服务器地址 -->
              <property>  
                  <name>yarn.log.server.url</name>  
                  <value>http://hadoop102:19888/jobhistory/logs</value>
              </property>
              <!-- 设置日志保留时间为7天 -->
              <property>
                  <name>yarn.log-aggregation.retain-seconds</name>
                  <value>604800</value>
              </property>
          </configuration>
          
        2. 分发配置

          [userName@hadoop102 hadoop]$  xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml
          
        3. 关闭NodeManager 、ResourceManager和HistoryServer

          [userName@hadoop103 hadoop-3.1.3]$  sbin/stop-yarn.sh
          [userName@hadoop103 hadoop-3.1.3]$  mapred --daemon stop historyserver
          
        4. 启动NodeManager 、ResourceManager和HistoryServer

          [userName@hadoop103 ~]$  start-yarn.sh
          [userName@hadoop102 ~]$  mapred --daemon start historyserver
          
        5. 删除HDFS上已经存在的输出文件

          [userName@hadoop102 ~]$  hadoop fs -rm -r /output
          
        6. 执行WordCount程序

          [userName@hadoop102 hadoop-3.1.3]$  hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
          
        7. 查看日志

          历史服务器

      • 集群启动/停止方式总结

        各个模块分开启动停止

        • 整体启动/停止HDFS

          start-dfs.sh/stop-dfs.sh
          
        • 整体启动/停止YARN

          start-yarn.sh/stop-yarn.sh
          

        各个服务组件逐一启动停止

        • 分别启动/停止HDFS组件

          hdfs --daemon start / stop namenode/datanode/secondarynamenode
          
        • 分别启动/停止YARN组件

          yarn --daemon start / stop  resourcemanager/nodemanager
          
      • 编写Hadoop集群常用脚本

        • Hadoop集群启停脚本(包含HDFS,Yarn,Historyserver)

          [userName@hadoop102 ~]$  cd /home/userName/bin
          [userName@hadoop102 bin]$  vim myhadoop.sh
          
          #!/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
          
          [userName@hadoop102 bin]$  chmod +x myhadoop.sh
          
          [userName@hadoop102 ~]$ xsync /home/userName/bin/
          
        • 查看三台服务器Java进程脚本

          [userName@hadoop102 ~]$  cd /home/userName/bin
          [userName@hadoop102 bin]$  vim jpsall
          
          #!/bin/bash
          
          for host in hadoop102 hadoop103 hadoop104
          do
                  echo =============== $host ===============
                  ssh $host jps 
          done
          
          [userName@hadoop102 bin]$  chmod +x jpsall
          
          [userName@hadoop102 ~]$  xsync /home/userName/bin/
          
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值