1、采用jps命令查看服务器集群中所有的进程
#!/bin/bash
for host in hadoop101 hadoop102 hadoop103
do
echo =============== $host 启动的进程 ===============
ssh $host 'jps'
done
2、群起hadoop集群的脚本
#!/bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input..."
exit ;
fi
case $1 in
"start")
echo " =================== 启动 hadoop集群 ==================="
echo " --------------- 启动 hdfs ---------------"
ssh hadoop101 "/opt/module/hadoop/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop102 "/opt/module/hadoop/sbin/start-yarn.sh"
echo " --------------- 启动 historyserver ---------------"
ssh hadoop101 "/opt/module/hadoop/bin/mapred --daemon start historyserver"
;;
"stop")
echo " =================== 关闭 hadoop集群 ==================="
echo " --------------- 关闭 historyserver ---------------"
ssh hadoop101 "/opt/module/hadoop/bin/mapred --daemon stop historyserver"
echo " --------------- 关闭 yarn ---------------"
ssh hadoop102 "/opt/module/hadoop/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh hadoop101 "/opt/module/hadoop/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error..."
;;
esac
3、分布式分发集群分发脚本
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo 参数不能为空!!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop101 hadoop102 hadoop103
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
4、zookeeper集群分发脚本
#!/bin/bash
if [ $# -lt 1 ]
then
echo '参数不能为空!!'
exit
fi
#循环遍历每台服务器启动zookeeper
for host in hadoop101 hadoop102 hadoop103
do
case $1 in
"start")
echo "$1 ****** $host *****ZK***********"
ssh $host /opt/module/zookeeper-3.5.7/bin/zkServer.sh $1
;;
"stop")
echo "$1 ****** $host *****ZK***********"
ssh $host /opt/module/zookeeper-3.5.7/bin/zkServer.sh $1
;;
"status")
echo "$1 ****** $host *****ZK***********"
ssh $host /opt/module/zookeeper-3.5.7/bin/zkServer.sh $1
;;
"*")
echo "参数有误!!"
exit;
;;
esac
done
5、kafka 集群启停脚本
#!/bin/bash
#判断是否输入参数
if [ $# -lt 1 ]
then
echo "请输入参数(start/stop/status/...)"
exit
fi
for host in hadoop101 hadoop102 hadoop103
do
case $1 in
"start")
echo "=================== START $host KAFKA ====================="
ssh $host /opt/module/kafka_2.12-3.3.1/bin/kafka-server-start.sh -daemon /opt/module/kafka_2.12-3.3.1/config/server.properties
echo "$host Kafka 启动成功"
;;
"stop")
echo "=================== STOP $host KAFKA ====================="
ssh $host /opt/module/kafka_2.12-3.3.1/bin/kafka-server-stop.sh
echo "$host Kafka 关闭成功"
;;
"status")
echo "该实现待完成"
;;
"*")
echo "参数输入错误"
exit
;;
esac
done
6、mysql 自动安装脚本(版本指定8.0.28)
#!/bin/bash
#在脚本中单引号输出是所见即所得
#双引号:会先解析双引号中的变量再输出
#反引号:命令替换。先执行反引号张的语句,再把结果加入到原命令中
#if [ $# -lt 2 ]
#then
# echo "请输入MySQL压缩包地址(本脚本只支持安装.tar.xz的包)===和解压目的目录"
# exit;
#fi
#注意1、使用该脚本需要在 root用户下,才可以运行
# 2、该脚本需要在/opt/software、opt/module创建两个文件夹
echo “开始解压mysql”
tar -xvJf /opt/software/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz -C /opt/module
echo "开始重命名"
mv /opt/module/mysql-8.0.28-linux-glibc2.12-x86_64 /opt/module/mysql-8.0.28
echo "在同级目录下创建数据存储文件夹 /data"
mkdir /opt/module/mysql-8.0.28/data
echo "创建mysql组"
groupadd mysql
echo "创建mysql 用户"
useradd -g mysql mysql
echo "给mysql-8.0.28文件夹授权"
chown -R mysql.mysql /opt/module/mysql-8.0.28
echo "安装numactl"
yum install -y numactl
echo "初始化数据库"
/opt/module/mysql-8.0.28/bin/mysqld --user=mysql --basedir=/opt/module/mysql-8.0.28/ --datadir=/opt/module/mysql-8.0.28/data/ --initialize
echo "复制mysql.server 到/etc/init.d/mysql"
cp -a /opt/module/mysql-8.0.28/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
echo "添加my.cnf"
touch /etc/my.cnf
echo '[mysqld]' >> /etc/my.cnf
echo '#设置mysql的安装目录' >> /etc/my.cnf
echo 'basedir = /opt/module/mysql-8.0.28' >> /etc/my.cnf
echo '#设置mysql数据库数据存放目录' >> /etc/my.cnf
echo 'datadir = /opt/module/mysql-8.0.28/data' >> /etc/my.cnf
echo 'socket = /opt/module/mysql-8.0.28/mysql.sock' >> /etc/my.cnf
echo '#设置连接最大连接数' >> /etc/my.cnf
echo 'max_connections=10000' >> /etc/my.cnf
echo '# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统' >> /etc/my.cnf
echo 'max_connect_errors=10' >> /etc/my.cnf
echo '# 服务端使用的字符集默认为UTF8' >> /etc/my.cnf
echo 'default-storage-engine=INNODB' >> /etc/my.cnf
echo 'character-set-server=utf8' >> /etc/my.cnf
echo 'port = 3306' >> /etc/my.cnf
echo 'sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES' >> /etc/my.cnf
echo '[mysql]' >> /etc/my.cnf
echo '# 设置mysql客户端默认字符集' >> /etc/my.cnf
echo 'default-character-set=utf8' >> /etc/my.cnf
echo '[client]' >> /etc/my.cnf
echo '# 设置mysql客户端连接服务端时默认使用的端口' >> /etc/my.cnf
echo 'port=3306' >> /etc/my.cnf
echo 'socket = /opt/module/mysql-8.0.28/mysql.sock' >> /etc/my.cnf
echo 'default-character-set=utf8' >> /etc/my.cnf
echo "启动mysql"
service mysql start
echo "查看启动状态"
service mysql status
echo "创建软连接"
ln -s /opt/module/mysql-8.0.28/bin/mysql /usr/bin
echo "-------------------请按照以下步骤自行修改密码----------------------------"
echo "1、设置密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY'123456';"
echo "2、进入mysql表 use mysql"
echo "3、修改权限 update user set host = '%' where user = 'root';"
echo "4、刷新设置 flush privileges;"
#如果在初次登录时,没有随机生成密码,可采用以下步骤
#1、关闭mysql服务====> service mysql stop
#2、安全模式登录(需要cd 到 /opt/module/mysql-8.0.28/bin )===>./mysqld_safe --skip-grant-tables
#3、需要打开新的终端,登录mysql
#4、flush privileges;
#5、ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY'此处填写你的密码';
想用mysql自动安装脚本,可参考博主 mysql栏目中的 --->linux中安装mysql8.0.28 --采用脚本实现自动安装
这篇文章 http://t.csdn.cn/BsQ5O
注:想用脚本只需修改脚本服务器机名既可