目录
7.Maxwell启动停止脚本
一.Shell脚本中一些常用参数的解释
' ' 和 " " 都是表示字符串的意思
' ' 不会解析变量,直接当作字符串使用
" " 会解析变量,并且和其他进行拼接使用
$n
功能描述:n为数字, $0 代表该脚本名称, $1-$9 代表第一到第九个参数,十以上的参数需要用大括号包含,如 ${10}
$#
功能描述:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性
$*
功能描述:这个变量代表命令行中所有的参数, $* 把所有的参数看成一个整体
$@
功能描述:这个变量也代表命令行中所有的参数,不过 $@ 把每个参数区分对待
二.Shell脚本
注意事项:
(1)为方便使用脚本,建议编写后将脚本放在用户bin目录下(或者自定义文件夹,将其绝对路径添加至环境变量PATH中)。
(2)hadoop102,hadoop103,hadoop104为集群中主机名称(hostname),此处举例三台主机,使用时按需更改为对应的主机名称即可。
(3)以下脚本使用前均需配置SSH免密登录。
1.SSH免密登录配置
(1)免密登录原理
(2)生成公钥和私钥
[local@hadoop102 ~]$ cd ~/.ssh
[local@hadoop102 .ssh]$ ssh-keygen -t rsa
然后敲三个Enter,就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)。
[local@hadoop102 .ssh]$ ll
-rw-------. 1 local local 1679 2月 16 19:18 id_rsa
-rw-r--r--. 1 local local 399 2月 16 19:18 id_rsa.pub
(3)将公钥拷贝到要免密登录的目标机器上
[local@hadoop102 .ssh]$ ssh-copy-id hadoop102
[local@hadoop102 .ssh]$ ssh-copy-id hadoop103
[local@hadoop102 .ssh]$ ssh-copy-id hadoop104
之后还需在hadoop103、hadoop104上用同样的步骤配置一下免密登录到hadoop102、hadoop103、hadoop104服务器上。
2.集群分发文件脚本
vim xsync
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo "No Args Input..."
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
3.显示当前所有java进程及其pid脚本
vim jpsall jpsall为脚本名称,根据自己喜好定义即可
#!/bin/bash
for i in hadoop102 hadoop103 hadoop104;
do
echo "==========$i=========="
ssh $i "jps $@ | grep -v Jps"
done
执行脚本结果如下:
[local@hadoop102 ~]$ jpsall
========= hadoop102 ==========
1314 QuorumPeerMain
27811 Kafka
========= hadoop103 ==========
1361 QuorumPeerMain
6933 Kafka
7191 ConsoleConsumer
========= hadoop104 ==========
2741 Kafka
1382 QuorumPeerMain
4.Hadoop集群启动停止脚本
三台主机集群配置部署如下:
hadoop102 |
hadoop103 |
hadoop104 |
|
HDFS |
NameNode DataNode |
DataNode |
SecondaryNameNode DataNode |