Linux集群常用脚本(个人总结)

2023-11-01

    声明: 1. 本文为我的个人复习总结, 并那种从零基础开始普及知识 内容详细全面, 言辞官方的文章
              2. 由于是个人总结, 所以用最精简的话语来写文章
              3. 若有错误不当之处, 请指出

常用脚本编写汇总

自定义脚本放在~/bin下,并把这个目录配到PATH中去

mkdir ~/bin
vim  /etc/profile
#添加~/bin到PATH
PATH=$PATH:~/bin
source  /etc/profile

三台机器都配置一下上述命令

脚本编写后都赋予可执行权限, chmod +x 脚本

集群分发文件脚本xsync.sh

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

集群分发命令脚本all

#!/bin/bash

#集群分发命令
for i in hadoop102 hadoop103 hadoop104
do
    echo --------- $i ----------
    ssh $i "$*"
done

ZooKeeper [启动/停止/查看状态] 脚本zk.sh

#!/bin/bash

#ZooKeeper [启动/停止/查看状态]
commandPath=$ZOOKEEPER_HOME/bin
case $1 in
	"start"){
		all $commandPath/zkServer.sh start
	};;
	"stop"){
		all $commandPath/zkServer.sh stop
	};;
	"status"){
		all $commandPath/zkServer.sh status
	};;
	"cli"){
		all $commandPath/zkCli.sh
	};;


    "1"){
		all $commandPath/zkServer.sh start
	};;
	"0"){
		all $commandPath/zkServer.sh stop
	};;
    *)
    echo "非法参数!"
    ;;
esac

Hive后台启动metastore和hiveserver2服务脚本 hive.sh

#!/bin/bash

#Hive [启动/停止/查看状态]
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(){
    metapid=$(check_process HiveMetastore 9083)
    cmd="nohup hive --service metastore >$HIVE_LOG_DIR/metastore.log 2>&1 &"
    [ -z "$metapid" ] && eval $cmd || echo "Metastroe 服务已启动"
    server2pid=$(check_process HiveServer2 10000)
    cmd="nohup hive --service hiveserver2 >$HIVE_LOG_DIR/hiveServer2.log 2>&1 &"

    [ -z "$server2pid" ] && eval $cmd || echo "HiveServer2 服务已启动"
}

function hive_stop(){
    metapid=$(check_process HiveMetastore 9083)
    kill $metapid
    server2pid=$(check_process HiveServer2 10000)
    kill $server2pid
}

case $1 in
    "start")
    hive_start
    ;;
    "stop")
    hive_stop
    ;;
    "status")
    check_process HiveMetastore 9083 >/dev/null && echo "Metastore 服务运行 正常" || echo "Metastore 服务运行异常"
    check_process HiveServer2 10000 >/dev/null && echo "HiveServer2 服务运 行正常" || echo "HiveServer2 服务运行异常"
    ;;

    "1")
    hive_start
    ;;
    "0")
    hive_stop
    ;;
    *){
        echo "非法参数!"
    };;
esac

Kafka集群 [启动/停止] 脚本kf.sh

#!/bin/bash
case $1 in
	"start"){
		all $KAFKA_HOME/bin/kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
	};;
	"stop"){
		all $KAFKA_HOME/bin/kafka-server-stop.sh
	};;
esac

HBase集群 [启动/停止] 脚本hbase.sh

#!/bin/bash
case $1 in
	"start"){
		all start-hbase.sh
	};;
	"stop"){
		all stop-hbase.sh
	};;
esac
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux集群常用脚本(个人总结) 的相关文章

随机推荐

  • 多版本node的安装和巧妙切换

    1 安装多版本node的原因 在项目开发过程中 不同项目使用的 node版本不同 有时会因为node版本过高或太低 导致报错 本文将教你如何在同一个系统中安装多个版本的node并且快速而且 巧妙地切换 2 安装指定版本的node 点击进入
  • Keil MDK的一些推荐功能(编码格式、自动保存、代码提示、动态语法检查、多核编译)

    一直在用Keil MDK开发 很多时候并没有仔细去研究它强大的功能 最近在做一些开源项目的同时也在想办法提高自己的工作效率 所谓时间就是金钱 看到世伟兄分享的这篇Keil MDK的笔记 正是我想要学习提升效率的 所谓前人种树 作为后人的我就
  • DAY39:贪心算法(七)根据身高重建队列(注意思路)+最少箭引爆气球(重叠区间)

    文章目录 406 根据身高重建队列 注意思路 思路 两个维度 降序排序注意点 完整版 vector容器插入相关复习 为什么能直接根据ki数值插入ki位置的下标 时间复杂度 vector insert操作存在的问题 链表优化版 时间复杂度 l
  • Zookeeper的功能以及工作原理

    1 ZooKeeper是什么 ZooKeeper是一个分布式的 开放源码的分布式应用程序协调服务 是Google的Chubby一个开源的实现 它是集群的管理者 监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作 最终 将简单易用
  • 2022年5月30日STM32——存储器 和 I2C读写EEPROM

    此内容仅是为了自己方便回忆 内容来源于野火指南者开发板教程 一 存储器 RAM Random Access Memory 随机存储器 当存储器中的消息被读取或写入时 所需要的时间与这段信息所在的位置无关 RAM分为动态随机存储器DRAM D
  • 再见以前说再见 操作系统复习

    mutex semget IPC PRIVATE 1 0666 IPC CREAT 创建信号量 semctl mutex 0 SETVAL 1 互斥信号量mutex赋初值为1 定义p操作 信号量申请操作 p sem num 0 p sem
  • 如何使用Python的Pyecharts做一个数据可视化的Graph 关系图?

    文章目录 前言 一 Pyecharts是什么 二 Graph关系图是什么 三 使用步骤 1 引入库 2 读入数据 3 人物关系 4 结果 总结 前言 Graph 关系图通常用于分析具有复杂性的数据 例如 如果你想探索不同实体之间的关系 你可
  • C# WinForm 默认最大化

    只需要在窗口的Shown事件处理函数中修改 WindowState即可 this WindowState FormWindowState Maximized
  • 事件绑定器-BP

    蓝图上的事件绑定器 在C 中就是代理 类似于这边绑定炸药包 那边爆炸 这个例子是 绑定人的F键 启动着火特效 书上的这个例子有问题 关卡蓝图上 核心在于startfire 事件 1 一边连接这绑定 一边连接着事件触发后的响应 先看第三人称绑
  • SpringBoot使用AOP

    本文介绍SpringBoot中使用Spring AOP 简介 AOP简介 AOP可能对于广大开发者耳熟能详 它是Aspect Oriented Programming的缩写 翻译成中文就是 面向切面编程 这个可能是面试中经常提到的问题 同时
  • 客服如何使用ChatGPT提高工作效率

    文章目录 ChatGPT简介 ChatGPT在客服中的应用 ChatGPT的优势和挑战 客服人员应该如何应对 1 与ChatGPT保持较高的专业水平 2 与ChatGPT建立良好的合作关系 3 强调人性化的服务 4 不断提升沟通和解决问题的
  • [前端] 编译时报错FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory

    参考文献 FATAL ERROR Reached heap limit Allocation failed JavaScript heap out of memory Vue cli3执行serve和build命令时nodejs内存溢出问题
  • 【JAVA多线程11】线程基本方法-线程等待(wait)/线程唤醒(notify)

    1 wait notify notifyAll 方法是Object的本地final方法 无法被重写 2 wait 使当前线程阻塞 前提是 必须先获得锁 一般配合synchronized 关键字使用 即 一般在synchronized 同步代
  • Django 快速搭建博客 第四节(hello world视图)

    上一节我们学会了怎样建数据库表 学习数据库的操作 如果想要把它们显示在网页上 我们还得练习一下如何在网页上显示第一个自己写的hello world 视图 1 我们需要在blog下建一个urls py的文件 里面写上 blog urls py
  • react与vue区别及react面试题

    react和vue的区别如下 1 React与Vue最大的区别是模板的编写 Vue鼓励去写近似常规HTML的模板 写起来很接近标准HTML元素 只是多了一些属性 这些属性也可以被使用在单文件组件中 尽管它需要在在构建时将组件转换为合法的Ja
  • springboot优雅实现工厂模式,策略模式——利用spring自动注入list,map性质

    工厂模式 工厂模式 Factory Pattern 是 Java 中最常用的设计模式之一 这种类型的设计模式属于创建型模式 它提供了一种创建对象的最佳方式 在工厂模式中 我们在创建对象时不会对客户端暴露创建逻辑 并且是通过使用一个共同的接口
  • 【WEB】HTTP返回头分析

    Http协议通讯时 在客户端发送请求后 request 服务器端返回的状态码解释 response Http状态码 1 请求收到 继续处理 2 操作成功收到 分析 接受 200 3 完成此请求必须进一步处理 301 302 304 4 请求
  • QObject::connect: Cannot connect QTimer::timeout() to (null)::fuction()

    这几天连接一对信号与槽怎么也连接不上 后来在下面的这个网站找到了答案 https stackoverflow com questions 6238486 qt qobjectconnect cannot connect null 问题在于c
  • [CocoaPods]podspec文件中的resource和resource_bundle

    相信基本上所有的iOS开发同学针对于CocoaPods都不陌生 即便没有用过 也是久闻大名如雷贯耳 作为Objective C和Swift中非常流行的依赖管理工具 它拥有超过10000个公有程序库 通过一份Podfile文件和pod ins
  • Linux集群常用脚本(个人总结)

    声明 1 本文为我的个人复习总结 并非那种从零基础开始普及知识 内容详细全面 言辞官方的文章 2 由于是个人总结 所以用最精简的话语来写文章 3 若有错误不当之处 请指出 常用脚本编写汇总 自定义脚本放在 bin下 并把这个目录配到PATH