大数据集群搭建以及使用过程中几个实用的shell脚本

ops/2024/9/24 13:14:40/

文章目录

  • 前言
  • 一、分发脚本
  • 二、查看所有节点jps脚本
  • 三、zookeeper启停脚本
  • 四、hive中的hiveserver2和metastore启停脚本


前言

下面的所有脚本要想全局使用,需要将其放到 /usr/local/sbin 或者 /usr/local/bin 或者 /usr/sbin 或者 /usr/bin 下面,这样才能全局使用以下脚本

一、分发脚本

创建 xsync.sh 文件,并添加如下内容:

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if [ $pcount -lt 1 ]
thenecho No Enough Arguement!exit;
fi#2. 遍历集群所有机器
for host in node02 node03
doecho ====================    $host    ====================#3. 递归遍历所有目录for file in $@do#4 判断文件是否存在if [ -e $file ]then#5. 获取全路径pdir=$(cd -P $(dirname $file); pwd)echo pdir=$pdir#6. 获取当前文件的名称fname=$(basename $file)echo fname=$fname#7. 通过ssh执行命令:在$host主机上递归创建文件夹(如果存在该文件夹)ssh $host "source /etc/profile;mkdir -p $pdir"#8. 远程同步文件至$host主机的$USER用户的$pdir文件夹下rsync -av $pdir/$fname $USER@$host:$pdirelseecho $file Does Not Exists!fidone
done

使用方法:
xsync.sh 后面跟上需要分发的文件

二、查看所有节点jps脚本

创建jpsall文件,添加如下内容:

#!/bin/bash
USAGE="使用方法:jpsall'"
NODES=("node01" "node02" "node03")
# 循环遍历三台节点,并获取jps进程,打印出来
for NODE in ${NODES[*]};do
echo "--------$NODE--------"
ssh $NODE "/opt/installs/jdk/bin/jps"
done
echo "--------jpsall脚本执行完成!--------"

使用方法:
在存放该脚本的节点上输入jpsall即可查看所有节点的jps进程

三、zookeeper启停脚本

创建 zk.sh 文件,并添加如下内容:

#!/bin/bash# 获取参数
COMMAND=$1
if [ ! $COMMAND ]; thenecho "please input your option in [start | stop | status]"exit -1
fi
if [ $COMMAND != "start" -a $COMMAND != "stop" -a $COMMAND != "status" ]; thenecho "please input your option in [start | stop | status]"exit -1
fi# 所有的服务器
HOSTS=( node01 node02 node03 )
for HOST in ${HOSTS[*]}
dossh -T $HOST << TERMINATORecho "---------- $HOST ----------"zkServer.sh $COMMAND 2> /dev/null | grep -ivh SSLexit
TERMINATOR
done

使用方法:

zk.sh start # 开启zookeeper集群
zk.sh stop  # 关闭zookeeper集群

四、hive中的hiveserver2和metastore启停脚本

创建 hive-server-manager.sh 文件,并添加如下内容:

#!/bin/bash
help_info() {echo "+---------------------------------------------------------------------------------+"echo "|             本脚本可以一键控制 Hive 的 metastore 和 hiveserver2 服务            |"echo "| 使用方式: hive-server-manager.sh [start|stop|status] [metastore|hiveserver2]    |"echo "+---------------------------------------------------------------------------------+"echo "| 第一个参数用来指定操作命令,可以选择 开始(start)、停止(stop)、状态查看(status)  |"echo "| 第二个参数用来指定操作的服务,可以选择 metastore、hiveserver2,默认为全部       |"echo "+---------------------------------------------------------------------------------+"echo "|     - start  : 一键开启metastore和hiveserver2服务,也可以指定服务开启           |"echo "|     - stop   : 一键停止metastore和hiveserver2服务,也可以指定服务停止           |"echo "|     - status : 一键查看metastore和hiveserver2服务,也可以指定服务查看           |"echo "+---------------------------------------------------------------------------------+"exit -1
}# 获取操作命令
op=$1
# 获取操作的服务
server=$2# 检查参数是否正确
if [ ! $op ]; thenhelp_info
elif [ $op != "start" -a $op != "stop" -a $op != "status" ]; thenhelp_info
fi# 检查进程状态
metastore_pid=`ps aux | grep org.apache.hadoop.hive.metastore.HiveMetaStore | grep -v grep | awk '{print $2}'`
hiveserver2_pid=`ps aux | grep proc_hiveserver2 | grep -v grep | awk '{print $2}'`# 检查日志文件夹的存在情况,如果不存在则创建这个文件夹
log_dir=/var/log/my_hive_log
if [ ! -e $log_dir ]; thenmkdir -p $log_dir
fi
# 开启服务
start_metastore() {# 检查是否开启,如果未开启,则开启 metastore 服务if [ $metastore_pid ]; thenecho "metastore   服务已经开启,进程号: $metastore_pid,已跳过"elsenohup hive --service metastore >> $log_dir/metastore.log 2>&1 &echo "metastore   服务已经开启,日志输出在 $log_dir/metastore.log"fi
}
start_hiveserver2() {# 检查是否开启,如果未开启,则开启 hiveserver2 服务if [ $hiveserver2_pid ]; thenecho "hiveserver2 服务已经开启,进程号: $hiveserver2_pid,已跳过"elsenohup hive --service hiveserver2 >> $log_dir/hiveserver2.log 2>&1 &echo "hiveserver2 服务已经开启,日志输出在 $log_dir/hiveserver2.log"fi 
}# 停止服务
stop_metastore() {if [ $metastore_pid ]; thenkill -9 $metastore_pidfiecho "metastore   服务已停止" 
}
stop_hiveserver2() {if [ $hiveserver2_pid ]; then kill -9 $hiveserver2_pidfiecho "hiveserver2 服务已停止"
}# 查询服务
status_metastore() {if [ $metastore_pid ]; thenecho "metastore   服务已开启,进程号: $metastore_pid"elseecho "metastore   服务未开启"fi
}
status_hiveserver2() {if [ $hiveserver2_pid ]; thenecho "hiveserver2 服务已开启,进程号: $hiveserver2_pid"elseecho "hiveserver2 服务未开启"fi
}# 控制操作
if [ ! $server ]; then${op}_metastore${op}_hiveserver2
elif [ $server == "metastore" ]; then${op}_metastore
elif [ $server == "hiveserver2" ]; then${op}_hiveserver2
elseecho "服务选择错误"help_info
fi

使用方式: hive-server-manager.sh [start|stop|status] [metastore|hiveserver2]

  • start : 一键开启metastore和hiveserver2服务,也可以指定服务开启
  • stop : 一键停止metastore和hiveserver2服务,也可以指定服务停止
  • status : 一键查看metastore和hiveserver2服务,也可以指定服务查看

http://www.ppmy.cn/ops/111938.html

相关文章

python基础 --- 爬虫前篇

python 文章目录 python变量变量类型 输出运行程序 ctrlshiftf10命名规范&#xff1a;字母&#xff0c;数字&#xff0c;下划线 开头不能是数字注释&#xff1a; ctrl&#xff1f;字典 键key&#xff1a;值value修改字典的信息字典添加一个键值对字典删除一个键值对 实操案例--…

vivado 时间汇总报告

步骤7&#xff1a;时间汇总报告 定时路径在时钟元素处开始和结束。输入和输出端口不是顺序的 元素&#xff0c;默认情况下&#xff0c;Vivado时序分析不会对进出I/O端口的路径进行计时 设计&#xff0c;除非指定了输入/输出延迟约束。 在此步骤中&#xff0c;您将在Vivado中生成…

157-安全开发-Python 自动化挖掘项目SRC 目标FOFA 资产Web 爬虫解析库

案例一&#xff1a;Python-WEB 爬虫库&数据解析库 这里开发的内容不做过多描述&#xff0c;贴上自己写的代码 爬取数据 要爬取p标签&#xff0c;利用Beautyfulsoup模块 import requests,time from bs4 import BeautifulSoup#url"https://src.sjtu.edu.cn/rank/firm…

[数据集][目标检测]车窗状态检测车窗开关检测数据集VOC+YOLO格式299张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;299 标注数量(xml文件个数)&#xff1a;299 标注数量(txt文件个数)&#xff1a;299 标注类别…

关于RabbitMQ重复消费的解决方案

一、产生原因 RabbitMQ在多种情况下可能会出现消息的重复消费。这些情况主要包括以下几个方面&#xff1a; 1. 网络问题 网络波动或中断&#xff1a;在消息处理过程中&#xff0c;由于网络波动或中断&#xff0c;消费者向RabbitMQ返回的确认消息&#xff08;ack&#xff09;…

Android DPC模式多开 APP

1、修改创建多个profile时超出限制 packages/apps/ManagedProvisioning/src/com/android/managedprovisioning/preprovisioning/PreProvisioningController.java // PO preconditions if (isProfileOwnerProvisioning()) {// If there is already a managed profile, first c…

启动windows更新/停止windows更新,在配置更新中关闭自动更新的方法

在Windows操作系统中&#xff0c;启动或停止Windows更新&#xff0c;以及调整“配置更新”的关闭方法&#xff0c;涉及多种途径&#xff0c;这里将详细阐述几种常用的专业方法。 启动Windows更新 1.通过Windows服务管理器&#xff1a; -打开“运行”对话框&#xff08;…

谷歌在在线展示广告技术上的垄断,Meta无法有效竞争

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…