其他分享
首页 > 其他分享> > 数仓项目常用脚本

数仓项目常用脚本

作者:互联网

常用脚本

1.集群分发脚本xsync

(1)需求:循环复制文件到所有节点的相同目录下

(2)需求分析

①rsync命令原始拷贝:

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

②期望脚本:

xsync 要同步的文件名称

③说明:在/home/用户名/bin这个目录下存放的脚本,用户可以在系统任何地方直接执行。

(3)脚本实现

①在用的家目录/home/atguigu下创建bin文件夹

[atguigu@hadoop102 ~]$ mkdir bin

②在/home/atguigu/bin目录下创建xsync文件,以便全局调用

[atguigu@hadoop102 ~]$ cd /home/atguigu/bin

[atguigu@hadoop102 ~]$ 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具有执行权限

[atguigu@hadoop102 bin]$ chmod +x xsync

④测试脚本

[atguigu@hadoop102 bin]$ xsync xsync

2.集群日志生成脚本

在hadoop102的/home/atguigu目录下创建bin目录,这样脚本可以在服务器的任何目录执行。

[atguigu@hadoop102 ~]$ echo $PATH

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/atguigu/.local/bin:/home/atguigu/bin

(1)在/home/atguigu/bin目录下创建脚本lg.sh

[atguigu@hadoop102 bin]$ vim lg.sh

(2)在脚本中编写如下内容

`#!/bin/bash`

for i in hadoop102 hadoop103; do

echo "========== $i =========="

ssh $i "cd /opt/module/applog/; java -jar gmall2020-mock-log-2021-01-22.jar >/dev/null 2>&1 &"

done

注:

①/opt/module/applog/为jar包及配置文件所在路径

②/dev/null代表Linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。

标准输入0:从键盘获得输入 /proc/self/fd/0

标准输出1:输出到屏幕(即控制台) /proc/self/fd/1

错误输出2:输出到屏幕(即控制台) /proc/self/fd/2

(3)修改脚本执行权限

[atguigu@hadoop102 bin]$ chmod u+x lg.sh

(4)将jar包及配置文件上传至hadoop103的/opt/module/applog/路径

(5)启动脚本

[atguigu@hadoop102 module]$ lg.sh

(6)分别在hadoop102、hadoop103的/opt/module/applog/log目录上查看生成的数据

[atguigu@hadoop102 logs]$ ls

app.2020-06-14.log

[atguigu@hadoop103 logs]$ ls

app.2020-06-14.log

3.集群所有进程查看脚本

(1)在/home/atguigu/bin目录下创建脚本xcall.sh

[atguigu@hadoop102 bin]$ vim xcall.sh

(2)在脚本中编写如下内容

#! /bin/bash

for i in hadoop102 hadoop103 hadoop104

do

echo --------- $i ----------

ssh $i "$*"

done

(3)修改脚本执行权限

[atguigu@hadoop102 bin]$ chmod 777 xcall.sh

(4)启动脚本

[atguigu@hadoop102 bin]$ xcall.sh jps

4.ZK集群启动停止脚本

(1)在hadoop102的/home/atguigu/bin目录下创建脚本

[atguigu@hadoop102 bin]$ vim zk.sh

在脚本中编写如下内容

#!/bin/bash

case $1 in

"start"){

for i in hadoop102 hadoop103 hadoop104

do

echo ---------- zookeeper $i 启动 ------------

ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"

done

};;

"stop"){

for i in hadoop102 hadoop103 hadoop104

do

echo ---------- zookeeper $i 停止 ------------

ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"

done

};;

"status"){

for i in hadoop102 hadoop103 hadoop104

do

echo ---------- zookeeper $i 状态 ------------

ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status"

done

};;

esac

(2)增加脚本执行权限

[atguigu@hadoop102 bin]$ chmod u+x zk.sh

(3)Zookeeper集群启动脚本

[atguigu@hadoop102 module]$ zk.sh start

(4)Zookeeper集群停止脚本

[atguigu@hadoop102 module]$ zk.sh stop

5.Kafka集群启动停止脚本

(1)在/home/atguigu/bin目录下创建脚本kf.sh

[atguigu@hadoop102 bin]$ vim kf.sh

在脚本中填写如下内容

#! /bin/bash

case $1 in

"start"){

for i in hadoop102 hadoop103 hadoop104

do

echo " --------启动 $i Kafka-------"

ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"

done

};;

"stop"){

for i in hadoop102 hadoop103 hadoop104

do

echo " --------停止 $i Kafka-------"

ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh stop"

done

};;

esac

(2)增加脚本执行权限

[atguigu@hadoop102 bin]$ chmod u+x kf.sh

(3)kf集群启动脚本

[atguigu@hadoop102 module]$ kf.sh start

(4)kf集群停止脚本

[atguigu@hadoop102 module]$ kf.sh stop

标签:脚本,数仓,常用,module,sh,atguigu,bin,hadoop102
来源: https://www.cnblogs.com/chc2001/p/15974544.html