Hadoop集群及Linux操作脚本

以下是记录一些操作Linux及hadoop集群等的一些群体操作脚本,比如有启动 / 关闭hadoop集群脚本,启动 / 关闭zookeeper集群脚本,查看每台服务器上的java进程脚本,集群分发脚本等。

将脚本编写完毕后需要配置到环境变量中,才可以在任何目录下进行使用!

操作详细讲解:

1.集群配置分发脚本:

2) rsync

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

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

(1)查看rsync使用说明

man rsync | more

(2)基本语法

rsync -rvl $pdir/$fname $user@hadoop$host:$pdir

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

(3)选项说明

选项

功能

-r

递归

-v

显示复制过程

-l

拷贝符号连接

(4)案例实操

把本机/opt/software目录同步到hadoop102服务器的root用户下的/opt/目录

[memories@hadoop101 opt]$ rsync -rvl /opt/software/* hadoop102:/opt/software/

3)脚本需求分析:循环复制文件到所有节点的相同目录下。

(1)原始拷贝:

rsync -rvl /opt/module root@hadoop103:/opt/

(2)期望脚本:

xsync要同步的文件名称

(3)在/home/memories/bin这个目录下存放的脚本,memories用户可以在系统任何地方直接执行。

4)脚本实现:

(1)在/home/memories目录下创建bin目录,并在bin目录下xsync创建文件,文件内容如下:

[memories@hadoop102 ~]$ mkdir bin

[memories@hadoop102 ~]$ cd bin/

[memories@hadoop102 bin]$ touch xsync

[memories@hadoop102 bin]$ vi xsync

#!/bin/bash

#1 获取输入参数个数,如果没有参数,直接退出

pcount=$#

if((pcount==0)); then

echo no args;

exit;

fi



#2 获取文件名称

p1=$1

fname=`basename $p1`

echo fname=$fname



#3 获取上级目录到绝对路径

pdir=`cd -P $(dirname $p1); pwd`

echo pdir=$pdir



#4 获取当前用户名称

user=`whoami`



#5 循环

for((host=102; host<104; host++)); do

echo --------------------- hadoop$host ----------------

rsync -rvl $pdir/$fname $user@hadoop$host:$pdir

done

(2)修改脚本 xsync 具有执行权限

[memories@hadoop102 bin]$ chmod 777 xsync

(3)调用脚本形式:xsync 文件名称

[memories@hadoop102 bin]$ xsync /home/memories/bin



2.Zookeeper集群自动启动停止脚本

前提条件:
1、下面以主机hadoop1、hadoop2、hadoop3作为zookeeper集群。
2、以上机器之间已经配置好了ssh免密码登录。

startzk-all.sh 启动脚本内容如下:
#!/bin/bash
echo “Starting zk cluster ......”
for i in {1..3}
do
ssh hadoop$i "source /etc/profile;/opt/zookeeper-3.4.5/bin/zkServer.sh start"
done


stopzk-all.sh 停止脚本内容如下:
#!/bin/bash
echo “Stoping zk cluster ......”
for i in {1..3}
do
ssh hadoop$i "source /etc/profile;/opt/zookeeper-3.4.5/bin/zkServer.sh stop"
done


3.一起查看集群中的jps进程
#!/bin/bash
for i in cMaster cSlave0 cSlave1
do
        echo "================           $i             ================"
        ssh $i '/opt/module/jdk1.8.0_144/bin/jps'
done

操作集群脚本:

1.群启zookeeper
<!--修改版-->
#!/bin/bash
echo “Starting zk cluster ......”
for host in {cMaster cSlave0 cSlave1}
do
	echo "==============================  $host  starting zookeeper.....=============================="
	ssh $host "source /etc/profile;/opt/module/zookeeper-3.4.5/bin/zkServer.sh start"
done

2.群关zookeeper
<!--修改版-->
#!/bin/bash
echo “Stoping zk cluster ......”
for host in {cMaster cSlave0 cSlave1}
do
	echo "==============================  $host  stoping zookeeper.....=============================="
	ssh $host "source /etc/profile;/opt/module/zookeeper-3.4.5/bin/zkServer.sh stop"
done

<!--***************************************************************************************************-->

3.自定义集群配置文件分发脚本:
(1)在/home/memories目录下创建bin目录,并在bin目录下xsync创建文件,文件内容如下:

[memories@hadoop102 ~]$ mkdir bin
[memories@hadoop102 ~]$ cd bin/
[memories@hadoop102 bin]$ touch xsync
[memories@hadoop102 bin]$ vi xsync

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#

if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1

fname=`basename $p1`

echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`

echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for host in cMaster cSlave0 cSlave1
do

echo --------------------- xsync to $host ...... ----------------

rsync -rvl $pdir/$fname $user@$host:$pdir

done

(2)修改脚本 xsync 具有执行权限

[memories@hadoop102 bin]$ chmod 777 xsync

(3)调用脚本形式:xsync 文件名称

[memories@hadoop102 bin]$ xsync /home/memories/bin

<!--***************************************************查看集群中所有机器上的JPS进程********************************************************-->
4.一起查看集群中的jps进程
#!/bin/bash
for i in cMaster cSlave0 cSlave1
do
        echo "================           $i  JPS 进程            ================"
        <!--该路径为jdk的路径-->
		ssh $i '/usr/local/jdk1.8.0_144/bin/jps'
done


<!--************************************************群启及关闭Hadoop脚本(在不同机器上启动HDFS和Yarn)***********************************************************-->

5.群启Hadoop相关服务脚本:
#!/bin/bash
echo "================     开始启动Hadoop所有节点服务            ==========="

echo "================     正在启动HDFS                    ==========="
ssh root@cSlave0 '/usr/local/hadoop/hadoop-2.9.1/sbin/start-dfs.sh'
echo "================     正在启动YARN                    ==========="
ssh root@cMaster '/usr/local/hadoop/hadoop-2.9.1/sbin/start-yarn.sh'
echo "================     正在开启JobHistoryServer        ==========="
ssh root@cSlave0 '/usr/local/hadoop/hadoop-2.9.1/sbin/mr-jobhistory-daemon.sh start historyserver'


6.群关Hadoop相关服务脚本:

#!/bin/bash
echo "================          开始关闭所有节点服务               ==========="
echo "================     正在关闭HDFS                    ==========="
ssh root@cSlave0 '/usr/local/hadoop/hadoop-2.9.1/sbin/stop-dfs.sh'
echo "================     正在关闭YARN                    ==========="
ssh root@cMaster '/usr/local/hadoop/hadoop-2.9.1/sbin/stop-yarn.sh'
echo "================     正在关闭JobHistoryServer        ==========="
ssh root@cSlave0 '/usr/local/hadoop/hadoop-2.9.1/sbin/mr-jobhistory-daemon.sh stop historyserver'

<!--************************************************群启及关闭zk脚本(在不同机器上启动zk)***********************************************************-->

7.startzk-all.sh 启动脚本内容如下:
#!/bin/bash
echo “Starting zk cluster ......”
for i in cMaster cSlave0 cSlave1
do
	echo "*******************************正在启动 $i 的zookeeper*******************************"
	ssh hadoop$i "source /etc/profile;/opt/module/zookeeper-3.4.10/bin/zkServer.sh start"
done



8.stopzk-all.sh 停止脚本内容如下:
#!/bin/bash
echo “Stoping zk cluster ......”
for i in cMaster cSlave0 cSlave1
do
	echo "*******************************正在关闭 $i 的zookeeper*******************************"
	ssh hadoop$i "source /etc/profile;/opt/module/zookeeper-3.4.10/bin/zkServer.sh stop"
done

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值