大数据常用集群脚本

大数据常用集群脚本

一、集群分发同步脚本

1.1 在/bin目录下创建xsync文件

1
cd /bin && vim xsync

1.2 xsync集群分发同步Shell脚本

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
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in master slave1 slave2
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.3 安装 rsync

1
apt install rsync -y

1.4 给予 xsync 文件可执行权限,并分发到其他节点上

1
chmod +x xsync && xsync xsync

二、查看集群所有进程脚本

2.1 在/bin目录下创建xcall文件

1
cd /bin && vim xcall

2.2 集群进程查看Shell脚本

1
2
3
4
5
6
7
#! /bin/bash

for i in master slave1 slave2
do
echo --------- $i ----------
ssh $i "source /etc/profile; $*"
done

2.3 给予xcall文件可执行权限,并分发到其他节点上

1
chmod 777 xcall && xsync xcall

三、Hadoop集群管理脚本

3.1 在/bin目录下创建 hdp 文件

1
cd /bin && vim hdp

3.2 Hadoop集群管理Shell脚本

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
34
35
36
37
38
39
40
41
42
43
#判断用户是否传参
if [ $# -ne 1 ];then
echo "无效参数,用法为: $0 {start|stop}"
exit
fi
#获取用户输入的命令
cmd=$1
#定义函数功能
function hadoopManger(){
case $cmd in
start)
echo "启动服务"
remoteExecutionstart
;;
stop)
echo "停止服务"
remoteExecutionstop
;;
*)
echo "无效参数,用法为: $0 {start|stop}"
;;
esac
}

#启动Hadoop
function remoteExecutionstart(){
echo "启动historyserver"
ssh slave2 "source /etc/profile; mapred --daemon start historyserver"

echo "启动HDFS和YARM"
ssh master "source /etc/profile; start-all.sh"
}

#关闭HADOOP
function remoteExecutionstop(){
echo "关闭HDFS和YARM"
ssh master "source /etc/profile; stop-all.sh"

echo "关闭historyserver"
ssh slave2 "source /etc/profile; mapred --daemon stop historyserver"
}
#调用函数
hadoopManger

3.3 给予hdp文件可执行权限,并分发到其他节点上

1
chmod 777 hdp && xsync hdp

3.4 测试hdp脚本

1
2
hdp start
hdp stop

四、ZooKeeper集群管理脚本

4.1 在/bin目录下创建zk文件

1
cd /bin && vim zk

4.2 ZooKeeper集群管理Shell脚本

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

case $1 in
"start"){
for i in master slave1 slave2
do
echo -e "\033[47;36m ---------- zookeeper $i 启动 ------------ \033[0m "
ssh $i "source /etc/profile; zkServer.sh start"
done
};;
"stop"){
for i in master slave1 slave2
do
echo -e "\033[47;36m ---------- zookeeper $i 停止 ------------ \033[0m "
ssh $i "source /etc/profile; zkServer.sh stop"
done
};;
"status"){
for i in master slave1 slave2
do
echo -e "\033[47;36m ---------- zookeeper $i 状态 ------------ \033[0m "
ssh $i "source /etc/profile; zkServer.sh status"
done
};;
esac

4.3 给予zk文件可执行权限,并分发到其他节点上

1
chmod 777 zk && xsync zk

4.4 测试zk脚本

1
2
3
zk start
zk status
zk stop

五、Kafka 集群管理脚本

5.1 在/bin目录下创建kf文件

1
cd /bin && vim kf 

5.2 Kafka集群管理Shell脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#! /bin/bash

case $1 in
"start"){
for i in master slave1 slave2
do
echo -e "\033[47;36m --------启动 $i Kafka------- \033[0m"
ssh $i "source /etc/profile; kafka-server-start.sh -daemon /usr/local/src/kafka/config/server.properties"
done
};;
"stop"){
for i in master slave1 slave2
do
echo -e "\033[47;36m --------停止 $i Kafka------- \033[0m"
ssh $i "source /etc/profile; kafka-server-stop.sh stop"
done
};;
esac

5.3 给予kf文件可执行权限,并分发到其他节点上

1
chmod 777 kf && xsync kf

5.4 测试 kf 脚本

1
2
kf start
kf stop

六、Hive集群管理脚本

6.1 在/bin目录下创建hv文件

1
cd /bin && vim hv

6.2 Hive集群管理Shell脚本

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/bin/bash

HIVE_LOG_DIR=$HIVE_HOME/logs

# 创建日志目录
if [ ! -d $HIVE_LOG_DIR ]
then
mkdir -p $HIVE_LOG_DIR
fi

# 检查进程是否运行正常,参数 1 为进程名,参数 2 为进程端口
function check_process()
{
pid=$(ps -ef 2>/dev/null | grep -v grep | grep -i $1 | awk '{print $2}')
ppid=$(netstat -nltp 2>/dev/null | grep $2 | awk '{print $7}' | cut -d '/' -f 1)
echo $pid
[[ "$pid" =~ "$ppid" ]] && [ "$ppid" ] && return 0 || return 1
}

# 启动服务
function hive_start()
{
# 启动Metastore
metapid=$(check_process HiveMetastore 9083)
cmd="nohup hive --service metastore >$HIVE_LOG_DIR/metastore.log 2>&1 &"
[ -z "$metapid" ] && eval $cmd || echo -e "\033[47;36m Metastroe 服务已启动\033[0m"

# 启动HiveServer2
server2pid=$(check_process HiveServer2 10000)
cmd="nohup hiveserver2 >$HIVE_LOG_DIR/hiveServer2.log 2>&1 &"
[ -z "$server2pid" ] && eval $cmd || echo -e "\033[47;36m HiveServer2 服务已启动\033[0m"
}

# 停止服务
function hive_stop()
{
# 停止Metastore
metapid=$(check_process HiveMetastore 9083)
[ "$metapid" ] && kill $metapid || echo -e "\033[47;33m Metastore 服务未启动\033[0m"

# 停止HiveServer2
server2pid=$(check_process HiveServer2 10000)
[ "$server2pid" ] && kill $server2pid || echo -e "\033[47;33m HiveServer2 服务未启动\033[0m"
}

# 脚本参数菜单
case $1 in
"start")
echo -e "\033[47;32m 服务启动中,HiveServer2启动时间较长,请等待!\033[0m"
hive_start
;;

"stop")
echo -e "\033[47;32m 服务停止中,请等待!\033[0m"
hive_stop
;;

"restart")
echo -e "\033[47;32m 服务重启中,HiveServer2启动时间较长,请等待!\033[0m"
hive_stop
sleep 2
hive_start
;;

"status")
check_process HiveMetastore 9083 >/dev/null && echo -e "\033[47;36m Metastore 服务运行正常\033[0m" || echo -e "\033[47;31m Metastore 服务运行异常\033[0m"
check_process HiveServer2 10000 >/dev/null && echo -e "\033[47;36m HiveServer2 服务运行正常\033[0m" || echo -e "\033[47;31m HiveServer2 服务运行异常\033[0m"
;;

*)
echo -e "\033[47;31m Invalid Args!\033[0m"
echo 'Usage: '$(basename $0)' start|stop|restart|status'
;;
esac

6.3 给予hv文件可执行权限,并分发到其他节点上

1
chmod 777 hv && xsync hv

6.4 测试hv脚本

1
2
hv start 
hv stop

七、HBase集群管理脚本

7.1 在/bin目录下创建 hb 文件

1
cd /bin && vim hb

7.2 HBase集群管理Shell脚本

1
2
3
4
5
6
7
8
9
10
11
12
#! /bin/bash

case $1 in
"start"){
echo -e "\033[47;31m --------启动HBase------- \033[0m"
ssh master "/usr/local/src/hbase/bin/start-hbase.sh"
};;
"stop"){
echo -e "\033[47;31m --------停止HBase------- \033[0m"
ssh master "/usr/local/src/hbase/bin/stop-hbase.sh"
};;
esac

7.3 给予 hb 文件可执行权限,并分发到其他节点上

1
chmod 777 hb && xsync hb

7.4 测试 hb 脚本

1
2
hb start 
hb stop

八、Spark集群管理脚本

8.1 在/bin目录下创建 sp 文件

1
cd /bin && vim sp

8.2 Spark集群管理Shell脚本

1
2
3
4
5
6
7
8
9
10
11
12
#! /bin/bash

case $1 in
"start"){
echo " --------启动Spark...-------"
ssh master "/usr/local/src/spark/sbin/start-all.sh"
};;
"stop"){
echo " --------停止Spark...-------"
ssh master "/usr/local/src/spark/sbin/stop-all.sh"
};;
esac

8.3 给予 sp 文件可执行权限,并分发到其他节点上

1
chmod 777 sp && xsync sp

8.4 测试 sp 脚本

1
2
sp start 
sp stop