大数据框架群起脚本

ssh 远程执行命令

SSH 是 Linux 下进行远程连接的基本工具,但是如果仅仅用它来登录那可是太浪费啦!SSH 命令可是完成远程操作的神器,借助它我们可以把很多的远程操作自动化掉!

配置SSH无密登录

https://blog.csdn.net/qq_40794973/article/details/86681941#5%E3%80%81SSH%E6%97%A0%E5%AF%86%E7%99%BB%E5%BD%95%E9%85%8D%E7%BD%AE

远程执行命令

如果我们要查看一下某台主机的磁盘使用情况,不一定要先登录到目标主机在执行df命令,我们可以使用 ssh 命令在远程的主机上执行 df 命令,然后直接把结果显示出来。整个过程就像是在本地执行了一条命令一样,程序执行完成后当前的主机和位置不会更改。

ssh user@xxx.xxx.xxx.xxx "df -h"
  • user user代表的是用户
  •  xxx.xxx.xxx.xxx 为ip地址,也可以是主机名,前提是你配置了的(/etc/hosts)。

[atguigu@hadoop102 module]$ ssh hadoop103 "df -h"
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        97G  4.2G   88G   5% /
tmpfs           996M   72K  996M   1% /dev/shm
/dev/sda1       190M   39M  142M  22% /boot
[atguigu@hadoop102 module]$ 

执行多条命令

一次执行多条命令只需要每条命令中间使用分号隔开即可。

ssh user@xxx.xxx.xxx.xxx "pwd; ls -al"

[atguigu@hadoop102 module]$ ssh hadoop103 "pwd; ls -al"
/home/atguigu
总用量 164
drwx------. 27 atguigu atguigu 4096 4月  17 23:51 .
drwxr-xr-x.  4 root    root    4096 1月  29 07:23 ..
drwxrwxr-x   2 atguigu atguigu 4096 2月  22 18:20 .abrt
-rw-------.  1 atguigu atguigu 8936 4月  17 07:59 .bash_history

 


配置Hadoop群起脚本和Zookeeper群起脚本

集群单点启动

https://blog.csdn.net/qq_40794973/article/details/86681941#4%E3%80%81%E9%9B%86%E7%BE%A4%E5%8D%95%E7%82%B9%E5%90%AF%E5%8A%A8

由于我配置了群起集群的,我这里写的群起代码就相对少点,具体路径根据自己的修改。 

#!/bin/bash
echo "启动hdfs中..."
ssh hadoop102 "/opt/module/hadoop-2.7.2/sbin/start-dfs.sh"
echo -e "\n\n"

echo "启动yarn中..."
ssh hadoop103 "/opt/module/hadoop-2.7.2/sbin/start-yarn.sh"
echo -e "\n\n"

for i in atguigu@hadoop102 atguigu@hadoop103 atguigu@hadoop104
do
        echo "---------------------Hadoop$i启动情况---------------------"
        ssh $i '/opt/module/jdk1.8.0_144/bin/jps'
        echo -e "\n\n"
done
#!/bin/bash
echo "关闭hdfs中..."
ssh hadoop102 "/opt/module/hadoop-2.7.2/sbin/stop-dfs.sh"
echo -e "\n\n"

echo "关闭yarn中..."
ssh hadoop103 "/opt/module/hadoop-2.7.2/sbin/stop-yarn.sh"
echo -e "\n\n"

for i in atguigu@hadoop102 atguigu@hadoop103 atguigu@hadoop104
do
        echo "---------------------Hadoop$i jps---------------------"
        ssh $i '/opt/module/jdk1.8.0_144/bin/jps'
        echo -e "\n"
done

 

 

注意配置/home/atguigu目录下的(.bashrc)文件,在其中配置JAVA_HOME,并source /home/atguigu/.bashrc

jps演示: 

#!/bin/bash
for i in atguigu@hadoop102 atguigu@hadoop103 atguigu@hadoop104
do
        echo "================           $i             ================"
        ssh $i '/opt/module/jdk1.8.0_144/bin/jps'
done

注:执行命令最好用全路径,不然会找不到命令。 

群起Zookeeper演示:

#!/bin/bash
for i in atguigu@hadoop102 atguigu@hadoop103 atguigu@hadoop104
do
        echo "================           $i             ================"
        ssh $i '/opt/module/zookeeper-3.4.10/bin/zkServer.sh start'
done

 群起hadoop相关进程脚本:

#!/bin/bash
echo "================     开始启动所有节点服务            ==========="
echo "================     正在启动Zookeeper               ==========="
for i in atguigu@hadoop102 atguigu@hadoop103 atguigu@hadoop104
do
        ssh $i '/opt/module/zookeeper-3.4.10/bin/zkServer.sh start'
done
echo "================     正在启动HDFS                    ==========="
ssh atguigu@hadoop102 '/opt/module/hadoop-2.7.2/sbin/start-dfs.sh'
echo "================     正在启动YARN                    ==========="
ssh atguigu@hadoop103 '/opt/module/hadoop-2.7.2/sbin/start-yarn.sh'
echo "================     正在开启JobHistoryServer        ==========="
ssh atguigu@hadoop102 '/opt/module/hadoop-2.7.2/sbin/mr-jobhistory-daemon.sh start historyserver'

 群关ZK以及hadoop相关进程脚本:

#!/bin/bash
echo "================     开始关闭所有节点服务            ==========="
echo "================     正在关闭Zookeeper               ==========="
for i in atguigu@hadoop102 atguigu@hadoop103 atguigu@hadoop104
do
        ssh $i '/opt/module/zookeeper-3.4.10/bin/zkServer.sh stop'
done
echo "================     正在关闭HDFS                    ==========="
ssh atguigu@hadoop102 '/opt/module/hadoop-2.7.2/sbin/stop-dfs.sh'
echo "================     正在关闭YARN                    ==========="
ssh atguigu@hadoop103 '/opt/module/hadoop-2.7.2/sbin/stop-yarn.sh'
echo "================     正在关闭JobHistoryServer        ==========="
ssh atguigu@hadoop102 '/opt/module/hadoop-2.7.2/sbin/mr-jobhistory-daemon.sh stop historyserver'

 


配置在任意目录下执行shell脚本

只需要把脚本移动到当前用户的bin目录下重启即可,比如 /home/atguigu/bin 。

[atguigu@hadoop102 bin]$ cat ~/.bash_profile

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

简单说PATH就是一组路径的字符串变量,当你输入的命令不带任何路径时,LINUX会在PATH记录的路径中查找该命令。有的话则执行,不存在则提示命令找不到。比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls命令根本不在这个两个目录下,当你输入ls命令时LINUX会去/bin/usr/bin/sbin等目录寻找该命令。而PATH就是定义/bin:/sbin:/usr/bin等这些路劲的变量,其中冒号为目录间的分割符

如何自定义路径: 

假设你新编译安装了一个apache在/usr/local/apache下,你希望每次启动的时候不用敲一大串字符(# /usr/local/apache/bin/apachectl start)才能使用它,而是直接像ls一样在任何地方都直接输入类似这样(# apachectl start)的简短命令。这时,你就需要修改环境变量PATH了,准确的说就是给PATH增加一个值/usr/local/apache/bin。将/usr/local/apache/bin添加到PATH中有三种方法:

1、直接在命令行中设置PATH

PATH=$PATH:/usr/local/apache/bin

使用这种方法,只对当前会话有效,也就是说每当登出或注销系统以后,PATH设置就会失效。

2、在profile中设置PATH

vi /etc/profile

找到export行,在最下面新增加一行,内容为:export PATH=$PATH:/usr/local/apache/bin
注:= 等号两边不能有任何空格。这种方法最好,除非手动强制修改PATH的值,否则将不会被改变。编辑/etc/profile后PATH的修改不会立马生效,如果需要立即生效的话,可以执行source /etc/profile命令。

3、在当前用户的profile中设置PATH

vi ~/.bash_profile

在最下面新增加一行,内容为:export PATH=$PATH:/usr/local/apache/bin

source ~/.bash_profile

让这次的修改生效 source  ~/.bash_profile
注:这种方法只对当前用户起作用的,其他用户该修改无效。

去除自定义路径: 

当你发现新增路径/usr/local/apache/bin没用或不需要时,你可以在以前修改的/etc/profile~/.bash_profile文件中删除你曾今自定义的路径。


使用脚本关闭集群

 https://blog.csdn.net/qq_40794973/article/details/89414546

#!/bin/bash
for i in atguigu@hadoop104 atguigu@hadoop103 atguigu@hadoop102 
do
        echo "---------------------$i shutting down---------------------"
        ssh $i 'echo "123456" | sudo -S shutdown -h now'
done

参考:

https://www.cnblogs.com/youngerger/p/9104144.html

https://blog.csdn.net/student__software/article/details/81460233

https://www.cnblogs.com/softidea/p/6855045.html

https://blog.csdn.net/qq_16633405/article/details/82056619

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值