大数据开发中常用组件服务的集群管理脚本整理集合

这篇具有很好参考价值的文章主要介绍了大数据开发中常用组件服务的集群管理脚本整理集合。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大数据环境相关脚本

bash运行模式说明

bash的运行模式可分为login shell(用户名、密码登录)和non-login shell(SSH登录)。

两者登录方式加载情况:

1.login shell启动时会加载:/etc/profile,~/.bash_profile,~/.bashrc

2.non-login shell启动时会加载:~/.bashrc

注意:~/.bashrc实则会加载/etc/bashrc/etc/bashrc又加载/etc/profile.d/*.sh

SSH登录注意:

当SSH到其他节点的时候是使用non-login shell模式,默认是不加载/etc/profile配置文件,也就会导致环境变量信息未配置,从而会找不到部分命令的问题

创建shell脚本目录

创建/root/shell目录,用于存放shell脚本

/etc/bashrc文件配置shell脚本目录,将其作为环境变量,以便在任何地方使用新建的shell脚本

# My Shell
export PATH=$PATH:/root/shell

配置hosts

配置每个节点的hosts文件,设置节点IP与Name的映射。

vim /etc/hosts

172.29.234.1 node01
172.29.234.2 node02
172.29.234.3 node03
172.29.234.4 node04
172.29.234.5 node05

SSH自动配置脚本

执行脚本来自动配置各个节点免密登录。

vim ssh_config.sh

#! /bin/bash
function sshPasswordLogin() {
    # 检测expect服务是否存在,不存在则使用yum安装expect
    expectIsExists=$(rpm -qa | grep expect)
    if [ -z "$expectIsExists" ]; then
        yum -y install expect
    fi
    
    # 密钥对不存在则创建密钥
    if [ ! -f /root/.ssh/id_rsa.pub ]; then
        ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
    fi
    
    # 服务器列表
    # servers=("IP地址1 用户名1 密码1" "IP地址2 用户名2 密码2" "IP地址3 用户名3 密码3")
    servers=("node01 root 123456" "node02 root 123456" "node03 root 123456" "node04 root 123456" "node05 root 123456")
    
    for server in "${servers[@]}"; do
        hostname=$(echo "$server" | cut -d " " -f1)
        username=$(echo "$server" | cut -d " " -f2)
        password=$(echo "$server" | cut -d " " -f3)
        
        echo "Configuring password login on $hostname..."
        
        expect <<EOF
            spawn ssh-copy-id "$username@$hostname"
            expect {
                "yes/no" {
                    send "yes\n"
                    exp_continue
                }
                "password" {
                    send "$password\n"
                    exp_continue
                }
                eof
            }
EOF
    done
}
sshPasswordLogin

更改执行权限

chmod +x ssh_config.sh

在各个节点执行ssh_config.sh脚本,然后就会自动进行SSH互相配置密码登录

[root@node01 ~]# ./ssh_config.sh
[root@node02 ~]# ./ssh_config.sh
[root@node03 ~]# ./ssh_config.sh
[root@node04 ~]# ./ssh_config.sh
[root@node05 ~]# ./ssh_config.sh

文件同步、复制工具rsync

rsync 是一个功能强大的文件同步和复制工具,可以在本地或远程服务器之间进行文件传输和备份。

通过运行以下命令安装

# CentOS/RHEL
yum install rsync

# Ubuntu/Debian 
apt-get install rsync

基本用法

1.本地文件复制:

把source 目录下的文件复制到 destination 目录

rsync /path/to/source/file /path/to/destination/

2.本地目录复制:

使用 -a 参数表示递归复制目录,-v 参数表示显示详细的复制过程

rsync -av /path/to/source/directory/ /path/to/destination/directory/

3.本地文件同步:

使用 --delete 参数可以保持源和目标目录的同步,删除目标目录中不存在于源目录的文件

rsync -av --delete /path/to/source/directory/ /path/to/destination/directory/

4.远程文件复制:

通过 SSH 连接复制本地文件到远程服务器。-z 参数表示使用压缩来加速传输

rsync -avz -e "ssh" /path/to/local/file user@remote:/path/to/destination/

5.远程目录复制:

rsync -avz -e "ssh" /path/to/local/directory/ user@remote:/path/to/destination/directory/

文件同步脚步

将指定的文件传输到每个指定的主机节点,在传输之前,会检查文件是否存在,然后创建相应的目录并使用 rsync 进行传输。

这个脚本将循环复制当前节点指定目录下的文件到其他节点的相同路径下

vim sync.sh

#! /bin/bash
# 检查是否提供了足够的命令行参数
if [ $# -lt 1 ]; then
	echo Not Enough Arguement!
	exit
fi


# 遍历集群所有机器
for host in node01 node02 node03 node04 node05; do
	echo ==================== $host ====================
	# 遍历所有目录,挨个发送
	for file in $@; do
		# 检查文件是否存在
		if [ -e $file ]; then
			#  获取父目录
			pdir=$(
				cd -P $(dirname $file)
				pwd
			)
			# 获取当前文件的名称
			fname=$(basename $file)
			# 在远程主机执行创建目录的命令
			ssh $host "mkdir -p $pdir"
			# 将文件传输到远程主机的相应目录
			rsync -av $pdir/$fname $host:$pdir
		else
			echo $file does not exists!
		fi
	done
done

更改执行权限

chmod +x sync.sh

使用文件同步脚本,进行分发同步hosts配置信息

[root@node01 ~]# sync.sh /etc/hosts

命令执行脚本

遍历服务器名称列表,然后在每台服务器上运行指定的命令

#! /bin/bash
for i in node01 node02 node03 node04 node05
do
	echo --------- $i ----------
	ssh $i "$*"
done

更改执行权限

chmod  +x call.sh

使用示例

call.sh jps

使用命令执行脚本,在每个节点执行指定的命令

[root@node01 ~]# call.sh jps

节点循环简化

定义一个hosts文件

node01
node02
node03
node04
node05

以命令执行脚本简化为例说明:

#!/bin/bash
for host in `cat /root/hosts` ;
do
	# tput命令,用于设置终端输出的文本颜色为绿色
    tput setaf 2
         echo ======== $host ========
    # 将终端输出的文本颜色重置为默认颜色     
    tput setaf 7
        ssh $host "$@"
done

大数据组件相关脚本

Hadoop集群脚本

vim hadoop.sh

#!/bin/bash
# Hadoop安装目录
HADOOP_HOME="/usr/local/program/hadoop"
# namenode分配节点
NAMENODE="node01"
COMMAND=""

if [ $# -lt 1 ]; then
    echo "请输入命令参数 start 或 stop"
    exit
fi

case $1 in
    "start")
        echo "=================== 启动 Hadoop 集群 ==================="
        echo "--------------- 启动 HDFS ---------------"
        ssh $NAMENODE "$HADOOP_HOME/sbin/start-dfs.sh"
        echo "--------------- 启动 YARN ---------------"
        ssh $NAMENODE "$HADOOP_HOME/sbin/start-yarn.sh"
        ;;
    "stop")
        echo "=================== 关闭 Hadoop 集群 ==================="
        echo "--------------- 关闭 YARN ---------------"
        ssh $NAMENODE "$HADOOP_HOME/sbin/stop-yarn.sh"
        echo "--------------- 关闭 HDFS ---------------"
        ssh $NAMENODE "$HADOOP_HOME/sbin/stop-dfs.sh"
        ;;
    *)
        echo "无效参数: $1"
        echo "请输入: start 或 stop"
        exit 1
        ;;
esac

启动、停止Hadoop

hadoop.sh start

hadoop.sh stop

Zookeeper集群脚本

vim zk.sh

#!/bin/bash
case $1 in
"start")
	for i in node01 node02 node03; do
		echo "----------------------zookeeper $i 启动----------------------"
		ssh $i "/usr/local/program/zookeeper/bin/zkServer.sh start"
	done
	;;
"stop")
	for i in node01 node02 node03; do
		echo "----------------------zookeeper $i 停止----------------------"
		ssh $i "/usr/local/program/zookeeper/bin/zkServer.sh stop"
	done
	;;
"status")
	for i in node01 node02 node03; do
		echo "----------------------zookeeper $i 状态----------------------"
		ssh $i "/usr/local/program/zookeeper/bin/zkServer.sh status"
	done
	;;
*)
	echo "无效的命令"
	;;
esac

修改脚本执行权限

chmod +x zk.sh

启动、停止Zookeeper

zk.sh start

zk.sh stop

Kafaka集群脚本

vim kafaka.sh

#!/bin/bash

if [ $# -eq 0 ]; then
  echo "请输入命令参数 start 或 stop"
  exit 1
fi

KAFKA_HOME="/usr/local/program/kafka"

case $1 in
"start")
  for node in "node01" "node02" "node03"; do
    echo "----------------------kafka $node 启动----------------------"
    ssh $node "$KAFKA_HOME/bin/kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties"
    # 通过$?获取上一个命令的执行状态。如果执行状态不为 0,则表示启动或停止失败
    if [ $? -ne 0 ]; then
      echo "启动 $node 失败"
    fi
  done
  ;;
"stop")
  for node in "node01" "node02" "node03"; do
    echo "----------------------kafka $node 停止----------------------"
    ssh $node "$KAFKA_HOME/bin/kafka-server-stop.sh"
    if [ $? -ne 0 ]; then
      echo "停止 $node 失败"
    fi
  done
  ;;
*)
  echo "无效参数: $1"
  echo "请输入: start 或 stop"
  exit 1
  ;;
esac

修改脚本执行权限

chmod +x kafaka.sh

启动、停止Kafaka

kafaka.sh start

kafaka.sh stop

Flume集群脚本

创建vim flume.sh集群启动停止脚本

#!/bin/bash
# flume执行节点
REMOTE_HOST="node01"
# flume-ng位置
FLUME_EXECUTABLE="/usr/local/program/flume/bin/flume-ng"
# flume配置目录
FLUME_CONF_DIR="/usr/local/program/flume/conf/"
# flume配置文件
FLUME_CONF_FILE="/usr/local/program/flume/job/file_to_kafka.conf"
# 执行进程名称
PROCESS_NAME="file_to_kafka"

case $1 in
"start")
    echo " ---------------启动flume采集--------------"
    ssh "$REMOTE_HOST" "nohup $FLUME_EXECUTABLE agent -n a1 -c \"$FLUME_CONF_DIR\" -f \"$FLUME_CONF_FILE\" >/dev/null 2>&1 &"
    ;;

"stop")
    echo " ---------------停止flume采集--------------"
    ssh "$REMOTE_HOST" "ps -ef | grep $PROCESS_NAME | grep -v grep |awk  '{print \$2}' | xargs -n1 kill -9 "
    ;;

*)
    echo "无效参数: $1"
    echo "请输入: start 或 stop"
    exit 1
    ;;
esac

修改脚本执行权限

chmod +x flume.sh

启动、停止Flume文章来源地址https://www.toymoban.com/news/detail-732509.html

flume.sh start

flume.sh stop

到了这里,关于大数据开发中常用组件服务的集群管理脚本整理集合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TiDB 应急运维脚本,更加方便的管理TiDB集群

    TiDB 应急运维脚本,更加方便的管理TiDB集群 使用方法 修改权限 使用示例

    2024年02月12日
    浏览(46)
  • 开发必备的常用 Linux 命令整理

    在前面的文章中,截止到 微服务系列:分布式日志 ELK 搭建指南 这篇,我们终于算是将微服务系列给基本学完了,一时间难以决定接下来要写些什么东西。 想了想还是决定写几篇 Linux 相关命令的文章,毕竟平时也经常去 Linux 服务器上部署项目,你可能会问,部署这块不应该

    2024年02月07日
    浏览(37)
  • 手把手教你快速在生产环境搭建Doris集群附集群启停管理脚本

    组件分布规划 节点 node4 node5 node6 node7 node8 Node9 Node10 Node11 服务 FE(follower) BE FE(follower) BE FE(follower) BE FE(observer) BE BE Broker BE Broker BE BE Ip 192.168.22.34 192.168.22.35 192.168.22.36 192.168.22.37 192.168.22.20 192.168.22.16 192.168.22.17 192.168.22.18 根据自己集群的软硬件配置,选择合适的版本

    2024年02月02日
    浏览(50)
  • 大数据集群迁移整理

    1. 迁移之前需要考虑的问题 迁移总数据量有多少? 新老集群之间的带宽有多少?能否全部用完?为了减少对线上其他业务的影响最多可使用多少带宽? 如何限制迁移过程中使用的带宽? 迁移过程中,哪些文件可能发生删除,新增数据的情况?新数据和旧数据怎么处理?哪些

    2024年02月04日
    浏览(32)
  • 服务器常用端口_整理(不定时更新)

    21 端口 : 是 FTP 服务,FTP服务主要是为了在两台计算机之间实现文件的上传与下载,一台计机作为FTP客户端,另一台计算机作为FTP服务器,可以采用匿名登录和授权用户名与密码登录两种方式登录FTP服务器 22 端口 : 是 SSH 端口,用于通过命令行模式远程连接系统服务器 23 端口

    2024年02月10日
    浏览(50)
  • Kubernetes集群管理 —追踪 Kubernetes 系统组件、代理

    特性状态: Kubernetes v1.27 [beta] 系统组件追踪功能记录各个集群操作的时延信息和这些操作之间的关系。 Kubernetes 组件基于 gRPC 导出器的 OpenTelemetry 协议 发送追踪信息,并用 OpenTelemetry Collector 收集追踪信息,再将其转交给追踪系统的后台。 关于收集追踪信息、以及使用收集器

    2024年02月14日
    浏览(41)
  • 13个程序员常用开发工具用途推荐整理

    作为一名刚入门的程序员,选择合适的开发工具可以提高工作效率,加快学习进度。在本文中,我将向您推荐10个常用的开发工具,并通过简单的例子和代码来介绍它们的主要用途。 Visual Studio Code(VSCode)是一个免费、开源且跨平台的代码编辑器,支持多种编程语言。它具有

    2024年02月07日
    浏览(72)
  • csgo部分常用服务器指令与一些绑定指令整理

    【1秒后刷新游戏】mp_restartgame 1  【是否打开自动平衡】mp_autoteambalance 0/1  【最高金钱16000】mp_maxmoney 16000  【死亡竞赛的回合时间60分钟】mp_roundtime 60  【休闲/竞技模式每局时间60分钟】mp_roundtime_defuse 60  【休闲/竞技模式最大局数设为30局】mp_maxrounds 30  【出生金钱为16000】

    2024年02月03日
    浏览(62)
  • 【科普】集群基础和PBS任务管理常用命令

    最近需要用到集群做实验,学习下集群相关的内容。 什么是服务器集群 服务器集群其实就是将很多服务器(或者简单理解为主机)集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多

    2024年02月08日
    浏览(31)
  • HarmonyOS开发:NodeJs脚本实现组件化动态切换

    上篇文章,我们使用NodeJs脚本完成了HarmonyOS项目的组件化运行,但是由于脚本是基于4.0.0.400版本的DevEco Studio开发的,可能在配置文件的修改上有些许差距,那么遇到这种情况怎么办,一种是再写一套针对性的脚本文件或者在原有的脚本中增加配置版本参数,第二种就是自己

    2024年02月07日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包