当前位置:   article > 正文

尚硅谷Hadoop3.x-入门(2)_hadoop 指定resourcemanager地址

hadoop 指定resourcemanager地址

配置集群

总的来说,配置集群的步骤为:配置模板机 -> 克隆虚拟机 -> 配置完全分布式运行模式

其中:

配置模板机:新建虚拟机并配置root用户和主机名 -> 配置IP地址、设置hosts文件 -> 安装epel-release -> 测试网络 -> 关闭防火墙及其自启动 -> 安装jdk和hadoop

克隆虚拟机:克隆虚拟机 -> 更改主机名和IP地址

配置完全分布式运行模式:配置ssh免密登录 -> 编写集群分发脚本xsync -> 集群配置 -> 群起集群 -> 测试集群 -> 配置历史服务器 -> 配置日志的聚集 -> 编写群起集群脚本myhadoop.sh和查看所有节点jps脚本jpsall

以上内容是配置集群的大致步骤,接下来是详细的配置过程。

一. 配置模板机

1. 新建虚拟机

学习hadoop之前我们应该具备了一定的Linux基础,创建虚拟机其实可以沿用之前的配置。所以这部分没啥好说的,只需注意别安装最小系统版的Linux,选择一个图形化界面即可。然后在创建的过程中设置好root用户的密码,不用创建别的用户了,因为我们将全程使用root用户,这将为以后避免许多不必要的麻烦。同时配置好主机名,我将这台模板机命名为hadoop102,102将设置成这台虚拟机ip地址的尾号,这样我们可以做到看见机器名字就能知道它的ip地址是什么,将为我们带来很大的便利。

2. 配置IP地址、hosts文件

配置IP地址:

使用命令vim /etc/sysconfig/network-scripts/ifcfg-ens33,将其中的BOOTPROTO改为static,如果不这样设置则会出现ifcfg-ens33文件中的ip地址与使用ifconfig命令查看的ip地址不一样的情况。

然后在最下面添加以下内容:

#IP地址
IPADDR=192.168.17.102
#网关
GATEWAY=192.168.17.2
#域名解析器
DNS1=192.168.17.2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

然后保存退出即可。

**配置hosts文件:**模板机和本地机器都要配置hosts文件,这样就可以直接使用主机名来访问别的节点了,不再需要敲冗长且容易记错的IP地址。而本地机器也需要配置hosts的原因是,配置好后我们就可以在使用xshell、xftp以及浏览器时可以直接输入主机名代替输入ip地址,更便利且不易出错。

模板机:

使用命令vim /etc/hosts打开hosts文件后,添加以下内容:

192.168.17.100 hadoop100
192.168.17.101 hadoop101
192.168.17.102 hadoop102
192.168.17.103 hadoop103
192.168.17.104 hadoop104
  • 1
  • 2
  • 3
  • 4
  • 5

然后保存退出。

我打算用hadoop102、hadoop103和hadoop104这三台虚拟机搭建集群,所以hosts文件只写到了hadoop104,以后若是有别的机器加入那么只需要再添加对于的IP地址和主机名即可。

本地机器:

Windows11系统的hosts文件的路径为:C:\Windows\System32\drivers\etc\hosts,找到后直接复制到桌面上,然后重命名在后面加上".txt"后缀方便我们用打开并修改其中的内容。用文本编辑器打开后再最下面加上与模板机相同的内容,保存退出。再将后缀删去,复制到原地址中,选择"替换目标中的文件"即可。

3. 安装epel-release

在联网的情况下输入命令yum install -y epel-release就能安装好了。

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

4. 测试网络

我们需要测试虚拟机能否连接外网和本地机器。

我们需要使用伟大的命令:ping

外网:输入ping www.baidu.com看看能不能ping通。

本地机器:在自己电脑的命令行上输入ipconfig查看ip地址,然后在模板机上ping一下,看看能不能ping通。

如果都能ping通那就没问题,否则需要上网寻找相关方法来解决这个问题。

5. 关闭防火墙及其自启动

为了我们能正常访问集群配置好后的各种web页面,我们需要先将防火墙关闭。

关闭防火墙:systemctl stop firewalld

关闭防火墙自启动:systemctl disable firewalld.service

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

6. 安装jdk和hadoop

在安装jdk和hadoop前,我们需要先将虚拟机自带的jdk删除干净,然后再安装自己的jdk和hadoop。最后我们需要配置环境变量,以便我们在任何情况下都能直接使用java和hadoop命令。

卸载虚拟机自带的jdk:

使用命令rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps

其中各项参数为:

  • rpm -qa:查询所安装的所有rpm软件包

  • grep -i:忽略大小写

  • xargs -n1:表示每次只传递一个参数

  • rpm -e –nodeps:强制卸载软件

注:卸载完后记得使用reboot命令重启虚拟机。

安装jdk和hadoop:

先在/opt目录下创建module和software目录,其中software用来存放jdk和hadoop的压缩包,module用来存放jdk和hadoop。

先进入software目录,然后使用xftp连接模板机并将jdk和hadoop的压缩包传输给模板机。接着使用命令tar -zxvf jdk-8u371-linux-x64.tar.gz -C /opt/module/将jdk解压至module目录,再使用命令tar -zxvf hadoop-3.3.6.tar.gz -C /opt/module/将jdk解压至module目录。

配置环境变量:

首先新建my_env.sh文件vim /etc/profile.d/my_env.sh

然后添加以下内容:

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

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.3.6

export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

保存退出后用命令source /etc/profile,让新的环境变量PATH生效。

接着回到主目录分别使用java -versionhadoop -version测试环境变量是否配置成功,有结果、能看见他们的信息就是配置成功了,且配置成功后输入开头的几个字母可以按tab键自动补全。

此外,可以通过运行本地运行模式(官方WordCount)来检测是否成功安装jdk和hadoop:

在hadoop-3.3.6下创建文件夹input,再在里面创建word.txt文本文件并输入几个单词,然后退回hadoop-3.3.6目录,使用命令:hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount input/ output

运行成功的情况下可以看见多了output目录,进入后发现里面有两个文件:part-r-00000和_SUCCESS,part-r-00000就是对word.txt进行单词数统计得出的结果。

二. 克隆虚拟机

1. 克隆虚拟机

将模板机关机后(注意一定要先关机!)克隆出剩下的虚拟机。我打算用三台虚拟机搭建集群,所以我克隆了另外两台。

2. 更改主机名和IP地址

分别对每一台克隆出来的虚拟机进行更改对应的主机名和ip地址的操作。

更改主机名:vim /etc/sysconfig/network-scripts/ifcfg-ens33,只需要将inet这一行的ip地址修改就行了,其余不用动。

更改ip地址:vim /etc/hostname

操作完后直接reboot重启。

三. 配置完全分布式运行模式

1. 配置ssh免密登录

配置ssh免密登录是后面所有脚本运行的基础(指方便快捷,因为不再需要输一堆密码),所以我们一上来就先将其配置好。

免密登录的原理:

在这里插入图片描述

总而言之,我将我的公钥发给别人后就代表:我要免密登录你了。所以我们接下来需要生成公钥和私钥,再拷贝给其他的所有节点。

生成公钥和私钥:

cd回到主目录然后cd .ssh进入.ssh目录,再输入ssh-keygen -t rsa后连续按三次回车,就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)。

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

使用命令ssh-copy-id 主机名将公钥发给每一个节点,**包括自己!!!**对我来说就是ssh-copy-id hadoop102ssh-copy-id hadoop103ssh-copy-id hadoop104各输一遍,然后挨个输入密码。

然后对剩余的每一个节点都这么操作(此时就是拼手速的时候了)。

千万千万别落下了自己!!!这很重要!!

注:.ssh目录中的 known_hosts 记录ssh访问过计算机的公钥(public key),id_rsa 是生成的私钥, id_rsa.pub 是生成的公钥,authorized_keys 存放授权过的无密登录服务器公钥。

2. 编写集群分发脚本xsync

在编写xsync脚本前我们需要先学习两个命令:scp和rsync。

scp(secure copy)安全拷贝:

定义:scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)

基本语法:scp -r p d i r / pdir/ pdir/fname u s e r @ user@ user@host: p d i r / pdir/ pdir/fname

​ 命令 递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

例:scp -r /opt/module/jdk1.8.0_371 root@hadoop103:/opt/module可以将本节点上的jdk拷贝给登录root用户的hadoop103的/opt/module。

rsync远程同步工具

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

基本语法:rsync -av p d i r / pdir/ pdir/fname u s e r @ user@ user@host: p d i r / pdir/ pdir/fname

​ 命令 选项参数 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

选项参数说明:

  • -a:归档拷贝
  • -v:显示复制过程

rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新,scp是把所有文件都复制过去。

注意:rsync是同步!!什么是同步,若我的机器有别的机器没有的,那么rsync给它后他也就有了一份一模一样的,连文件路径都一样。即如果我rsync对方没有的文件,就相当于scp,即拷贝。若我rsync对面有的文件且进行了修改,那么只会更新对方的该文件至和我相同,此时是更新!!若完全一样那就不进行任何操作。所以假如我删了某个目录中的某些文件,再rsync这一整个目录,不会让对方的目录的目录减少相同的文件。即更新只会令文件数量增多或保持不变,不可能让文件数量变少。

xsync集群分发脚本:

xsync相当于对其他所有节点依次使用rsync命令。因为rsync即具备scp的复制文件作用,又具备更新相关文件的作用,所以我们没有必要使用scp命令了,它的功能已经完全被rsync所代替。故我们使用xsync就能将本节点的某些文件直接同步至其余所有节点(无论对方是有还是没有),且由于我们前面配置好了ssh免密登录,故分发文件只需要使用xsync这一个命令即可,非常的好用,非常的便捷。

此外我们希望随时随地都能使用这个命令,所以应该将脚本放在声明了全局环境变量的路径。

我们使用echo $PATH就能看见所有声明了全局环境变量的路径:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/module/jdk1.8.0_371/bin:/opt/module/hadoop-3.3.6/bin:/opt/module/hadoop-3.3.6/sbin:/home/sunhao/bin:/root/bin。可以发现路径/root/bin是其中之一,故我们决定将脚本放在这个路径。

在主目录中用mkdir bin新建bin目录,然后进去,再vim xsync新建xysnc文件,输入以下内容:

#!/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

  • 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

注意:要先按 i 进入编辑模式再粘贴,不能直接粘贴!在普通模式下粘贴会出错!

保存退出后,使用chmod 777 xsync修改脚本权限,再分发脚本xsync xsync

3. 集群配置

集群部署规划:

  • NameNode和SecondaryNameNode很消耗内存,不要安装在同一台服务器上。

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

在这里插入图片描述

配置文件:

我们需要先配置存放在$HADOOP_HOME/etc/hadoop这个路径上的core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xmlworkers五个配置文件。

core-site.xml:

cd /opt/module/hadoop-3.3.6/etc/hadoop/进入hadoop目录后,vim core-site.xml 进入core-site.xml,在<configuration></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.3.6/data</value>
    </property>

    <!-- 配置HDFS网页登录使用的静态用户为root -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
    </property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

hdfs-site.xml:

vim hdfs-site.xml 进入hdfs-site.xml,在<configuration></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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

yarn-site.xml:

vim yarn-site.xml 进入yarn-site.xml,在<configuration></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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

mapred-site.xml:

vim mapred-site.xml 进入mapred-site.xml,在<configuration></configuration>之间插入以下内容:

<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
  • 1
  • 2
  • 3
  • 4
  • 5

workers:

vim workers进入workers,删除原本的那一行话,再添加以下内容:

hadoop102
hadoop103
hadoop104
  • 1
  • 2
  • 3

注意:这里是将每一行都当做主机名了,所以名字的后面不能留有空格,最后一行不能有单独的空行,否则会将这个空行当做主机名称,从而出现错误。

五个文件全都配置好后,在集群上分发hadoop配置文件:cd ..回退至上一级目录etc,然后xsync hadoop

4. 群起集群

如果是第一次启动集群,那么需要先在hadoop102节点格式化NameNode,然后再启动hdfs和yarn。之后则不需要进行初始化操作。

初始化:

使用命令:hdfs namenode -format

正常情况下会多出data和logs这连个目录,若缺少其中任何一个则说明有问题,此时需要检查core-site.xml文件有没有复制错。

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

启动集群:

首先,我们使用root用户不能直接调用start-dfs.sh,会报错。因为这是hdfs的保护机制,root的权力太大了,用root启动集群可能造成某些不可挽回的问题,所以hdfs默认禁止使用root用户启动集群。

此时我们需要修改hadoop安装目录下的 etc/hadoop下的 hadoop-env.sh文件,直接在开头添加以下内容:

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

保存退出再分发:xsync hadoop-env.sh
然后就可以在hadoop102使用命令:start-dfs.sh。正常情况下,在hadoop102使用jps会出现jps、datanode和namenode,在hadoop103使用jps会出现datanode和jps,在hadoop104使用jps会出现secondarynamenode、datanode和jps。

接着在hadoop103使用命令:start-yarn.sh。正常情况下,在每个节点使用jps都会出现四个进程,其中有三个是一样的:jps、datanode和nodemanager。然后剩下的一个,hadoop102为namenode,hadoop103为resourcemanager,hadoop104为secondarynamenode。

至此,集群启动成功。

注意:千万要记住,dfs是在hadoop102上启停的,yarn是在hadoop103上启停的!!!不然会报错!

5. 测试集群

首先打开浏览器在地址栏分别尝试进入:hadoop102:9870、hadoop103:8088。其中hadoop102:9870为Namenode information,hadoo103:8088为All Applications。

接着在集群创建文件夹:hadoop fs -mkdir /input

上传小文件:hadoop fs -put $HADOOP_HOME/wcinput/word.txt /input

上传大文件:hadoop fs -put /opt/software/jdk-8u371-linux-x64.tar.gz /

由于yarn是管理资源的分配和调度的,所以需要计算时才会显示任务。

我们可以采用官方的wordcount案例来切身体会一下:

使用命令:hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output,在计算过程中我们切换至hadoo103:8088页面,可以发现多了一个任务,而这个任务正是wordcount。

HDFS文件的存储路径为:/opt/module/hadoop-3.3.6/data/dfs/data/current/BP-697859437-192.168.17.102-1688800644759/current/finalized/subdir0/subdir0

且一共有三个备份,每个节点都存放着相同的文件。

查看的文件内容:cat blk_...可以使用t查看没有后缀的文件。

拼接文件:cat blk_... >> temp.tar.gz可以将多个文件追加进同一个压缩包中,解压后就能看见存放的是什么了。

6. 配置历史服务器

为了查看程序的历史运行情况,所以需要配置一下历史服务器。

配置mapred-site.xml:

vim mapred-site.xml打开mapred-site.xml文件后,在<configuration></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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

之后分发配置:xsync mapred-site.xml

启动历史服务器:

在hadoop102上使用命令:mapred --daemon start historyserver

之后用jps查看是否成功启动,若成功启动则会增加一个进程:JobHistoryServer。

我们也可以在网页上进行查看:在浏览器进入hadoop102:19888,即JobHistory。之后的所有任务都会在历史服务器上保存,只要开启了。

7. 配置日志的聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。

日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。

配置yarn-site.xml:

vim yarn-site.xml打开yarn-site.xml文件后,在<configuration></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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

之后分发配置:xsync yarn-site.xml

关闭NodeManager 、ResourceManager和HistoryServer:

在hadoop103上调用:stop-yarn.sh

在hadoop102上调用: mapred --daemon stop historyserver

启动NodeManager 、ResourceManager和HistoryServer:

在hadoop103上调用:start-yarn.sh

在hadoop102上调用: mapred --daemon starthistoryserver

测试:

此时我们再次执行wordcount:hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output2

运行完毕后就能在hadoop102:19888上查看历史任务,然后点击logs查看日志。

8. 编写群起集群脚本myhadoop.sh和查看所有节点jps脚本jpsall

我们可以采用整体启动/停止hdfs和yarn,也可以单独启动/停止hdfs和yarn的组件(hdfs的组件是namenode、datanode和secondarynamenode,yarn的组件是resourcemanager和nodemanager)。

整体启动/停止HDFS:start-dfs.sh/stop-dfs.sh

整体启动/停止:start-yarn.sh/stop-yarn.sh

单独启动/停止HDFS组件:hdfs --daemon start/stop namenode/datanode/secondarynamenode

单独启动/停止YARN组件:yarn --daemon start/stop resourcemanager/nodemanager

我们在启动集群时需要在不同的节点上使用不同的命令,这样就很麻烦。我们更希望在某一台机器上使用一个命令就能将集群启动起来,所以我们来编写集群脚本myhadoop.sh。

我们将脚本放在主目录下的bin目录中,cd /root/bin然后vim myhadoop.sh新建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.3.6/sbin/start-dfs.sh"
        echo " --------------- 启动 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.3.6/sbin/start-yarn.sh"
        echo " --------------- 启动 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.3.6/bin/mapred --daemon start historyserver"
;;
"stop")
        echo " =================== 关闭 hadoop集群 ==================="

        echo " --------------- 关闭 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.3.6/bin/mapred --daemon stop historyserver"
        echo " --------------- 关闭 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.3.6/sbin/stop-yarn.sh"
        echo " --------------- 关闭 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.3.6/sbin/stop-dfs.sh"
;;
*)
    echo "Input Args Error..."
;;
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

保存退出后,给予脚本权限:chmod 777 myhadoop.sh

之后分发脚本:xsync myhadoop.sh

然后分别使用myhadoop.sh stopmyhadoop.sh start看看能否正常停止和启动集群。

我们查看jps时需要切换到每一个节点上挨个调用jps,这样就很麻烦,我们希望能在任意一个节点上调用一个命令就能查看所有节点的jps,所以我们来编写查看所有节点jps脚本jpsall。

同样在/root/bin目录中创建jpsall文件,然后输入以下内容:

#!/bin/bash

for host in hadoop102 hadoop103 hadoop104
do
        echo =============== $host ===============
        ssh $host jps
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

保存退出后,给予脚本权限:chmod 777 jpsall

之后分发脚本:xsync jpsall

之后再每个节点上各调用一次看看有没有问题。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/205503
推荐阅读
相关标签
  

闽ICP备14008679号