当前位置: 首页 > wzjs >正文

申请做网站 论坛版主网站优化公司哪个好

申请做网站 论坛版主,网站优化公司哪个好,网上学编程可靠吗,集团做网站一、引言 在大数据开发中,Hive 作为重要的数据仓库工具,其核心服务metastore(元数据服务)和hiveserver2(查询服务)的启停管理是日常运维的基础操作。手动执行命令启停服务不仅效率低下,还容易因…

一、引言

在大数据开发中,Hive 作为重要的数据仓库工具,其核心服务metastore(元数据服务)和hiveserver2(查询服务)的启停管理是日常运维的基础操作。手动执行命令启停服务不仅效率低下,还容易因操作遗漏导致服务状态不一致。本文将介绍一个自主开发的 Hive 服务控制脚本,实现对两大核心服务的一键启停、状态查询及日志管理,大幅提升运维效率。

二、脚本核心功能与架构设计

2.1 核心功能

多模式操作:支持start(启动)、stop(停止)、status(状态查询)三种操作模式

单 / 批量控制:可单独指定服务(metastorehiveserver2)或批量操作所有服务

智能校验:自动检测服务状态,避免重复启停

日志管理:自动创建日志目录,将服务输出重定向到独立日志文件

友好交互:提供详细帮助信息和状态反馈

2.2 架构设计

#!/bin/bash
op=$1          # 操作类型(start/stop/status)
server=$2      # 目标服务(metastore/hiveserver2,可选)# 核心模块:
# 1. 参数校验与帮助信息(help_info函数)
# 2. 进程状态查询(ps命令获取PID)
# 3. 日志目录创建(/var/log/my_hive_log)
# 4. 服务控制函数(启动/停止/状态查询)
# 5. 主逻辑调度(根据参数执行对应操作)

三、脚本代码与关键逻辑详解

3.1 完整脚本代码

#!/bin/bash# Hive服务控制脚本,支持metastore/hiveserver2一键管理
# 使用方式: hive-server-manager.sh [start|stop|status] [metastore|hiveserver2]help_info() {echo "+---------------------------------------------------------------------------------+"echo "|             Hive服务管理脚本 - 支持metastore/hiveserver2控制                   |"echo "| 用法: $0 {start|stop|status} [metastore|hiveserver2]                           |"echo "+---------------------------------------------------------------------------------+"echo "| 操作命令: start(启动) | stop(停止) | status(状态)                               |"echo "| 目标服务: metastore(元数据服务) | hiveserver2(查询服务),默认操作所有服务        |"echo "+---------------------------------------------------------------------------------+"exit -1
}# 参数校验
op=$1
server=$2
[ -z "$op" ] || [ "$op" != "start" -a "$op" != "stop" -a "$op" != "status" ] && help_info# 进程查询
metastore_pid=$(ps aux | grep 'org.apache.hadoop.hive.metastore.HiveMetaStore' | grep -v grep | awk '{print $2}')
hiveserver2_pid=$(ps aux | grep 'hiveserver2' | grep -v grep | awk '{print $2}')# 日志目录管理
log_dir="/var/log/my_hive_log"
[ ! -d "$log_dir" ] && mkdir -p "$log_dir"# 启动函数
start_metastore() {[ -n "$metastore_pid" ] && echo "metastore已运行,PID: $metastore_pid" && returnnohup hive --service metastore >> "$log_dir/metastore.log" 2>&1 &echo "metastore启动成功,日志路径:$log_dir/metastore.log"
}start_hiveserver2() {[ -n "$hiveserver2_pid" ] && echo "hiveserver2已运行,PID: $hiveserver2_pid" && returnnohup hive --service hiveserver2 >> "$log_dir/hiveserver2.log" 2>&1 &echo "hiveserver2启动成功,日志路径:$log_dir/hiveserver2.log"
}# 停止函数
stop_metastore() {[ -n "$metastore_pid" ] && kill -9 "$metastore_pid"echo "metastore服务已停止"
}stop_hiveserver2() {[ -n "$hiveserver2_pid" ] && kill -9 "$hiveserver2_pid"echo "hiveserver2服务已停止"
}# 状态查询函数
status_metastore() {echo "metastore状态:$(if [ -n "$metastore_pid" ]; then echo "运行中,PID: $metastore_pid"; else echo "未运行"; fi)"
}status_hiveserver2() {echo "hiveserver2状态:$(if [ -n "$hiveserver2_pid" ]; then echo "运行中,PID: $hiveserver2_pid"; else echo "未运行"; fi)"
}# 主逻辑调度
if [ -n "$server" ]; thencase "$server" inmetastore) "${op}_metastore" ;;hiveserver2) "${op}_hiveserver2" ;;*) echo "错误:未知服务 $server" && help_info ;;esac
else"${op}_metastore""${op}_hiveserver2"
fi

3.2 关键逻辑解析

3.2.1 参数校验与帮助信息
[ -z "$op" ] || [ "$op" != "start" -a "$op" != "stop" -a "$op" != "status" ] && help_info

严格校验首个参数是否为合法操作(start/stop/status)

非法参数或参数缺失时,调用help_info函数输出详细使用说明

3.2.2 进程状态查询
metastore_pid=$(ps aux | grep 'org.apache.hadoop.hive.metastore.HiveMetaStore' | grep -v grep | awk '{print $2}')

通过ps命令结合进程关键字精准匹配服务进程

grep -v grep过滤掉自身查询进程,确保结果准确

3.2.3 日志管理机制
log_dir="/var/log/my_hive_log"
[ ! -d "$log_dir" ] && mkdir -p "$log_dir"

自动创建日志目录/var/log/my_hive_log

服务输出通过nohup重定向到独立日志文件,避免终端关闭导致进程终止

3.2.4 服务控制函数
start_metastore() {[ -n "$metastore_pid" ] && echo "已运行" && return  # 避免重复启动nohup hive --service metastore >>日志文件 &  # 后台运行
}

启动前先检查进程状态,防止重复启动

停止时使用kill -9强制终止(生产环境建议改用kill优雅终止)

四、部署与使用指南

4.1 部署步骤

# 1. 保存脚本
wget https://example.com/hive-service-manager.sh  # 或手动创建
vi hive-service-manager.sh  # 粘贴脚本内容# 2. 移动到系统路径并赋予权限
sudo mv hive-service-manager.sh /usr/local/bin/
sudo chmod +x /usr/local/bin/hive-service-manager.sh

4.2 操作示例

4.2.1 批量操作
# 启动所有服务
hive-service-manager.sh start# 停止所有服务
hive-service-manager.sh stop# 查看所有服务状态
hive-service-manager.sh status
4.2.2 单服务操作
# 单独启动metastore
hive-service-manager.sh start metastore# 单独停止hiveserver2
hive-service-manager.sh stop hiveserver2# 查看hiveserver2状态
hive-service-manager.sh status hiveserver2
4.2.3 输出示例
# 启动成功
metastore启动成功,日志路径:/var/log/my_hive_log/metastore.log
hiveserver2已运行,PID: 12345,已跳过# 状态查询
metastore状态:运行中,PID: 67890
hiveserver2状态:未运行

五、生产环境优化建议

5.1 优雅停止服务

# 修改停止函数,使用正常终止信号
stop_metastore() {[ -n "$metastore_pid" ] && kill "$metastore_pid"  # 替换kill -9echo "metastore服务已停止"
}

使用kill(默认发送 SIGTERM 信号)允许服务完成当前操作再终止

避免kill -9强制终止可能导致的元数据不一致

5.2 端口健康检查

# 增加端口检测函数(示例)
check_port() {local port=$1nc -z localhost "$port" &>/dev/null[ $? -eq 0 ] && echo "端口$port可用" || echo "端口$port不可用"
}# 在状态查询中调用
status_metastore() {local pid=$metastore_pid[ -n "$pid" ] && check_port 9083 || echo "metastore未运行"
}

metastore 默认端口:9083

hiveserver2 默认端口:10000

通过端口检测增强状态判断的准确性

5.3 日志清理策略

# 添加日志清理脚本(建议每周执行)
find /var/log/my_hive_log -type f -mtime +7 -exec rm {} \;
http://www.dtcms.com/wzjs/323528.html

相关文章:

  • 请简述网站建设的一般流程百度地址如何设置门店地址
  • 做网站成都品牌宣传策划方案
  • 游戏网站做关键字我的百度账号
  • 福州专业网站建设公司网络营销价格策略有哪些
  • 吉林省四平市网站建设成都达洱狐网络科技有限公司
  • 淘客网站建设视频英文seo是什么意思
  • 昆山玉山网站建设推广普通话宣传周
  • 域名后缀一览表百度自动优化
  • 个人域名注册需要哪些条件搜索引擎优化涉及的内容
  • 分析网站免费推广平台哪些比较好
  • 怎样建官方网站公司怎么做网站推广
  • 网站建设图片大小2022年适合小学生的新闻
  • php网站模板带后台搜狗seo排名软件
  • 收藏网站的链接怎么做的a站
  • 电商网站制作重庆网站排名优化教程
  • 实名网站审核中心软文范文200字
  • app软件怎么开发seo外包是什么
  • 哪个网站可以做问卷企业网络营销青岛
  • 装饰工程施工seo双标题软件
  • 大连做网站哪家服务好天津seo网站推广
  • 高等教育出版社b2b电子商务平台seo优化包括哪些内容
  • 河北手机网站制作企业百度移动排名优化软件
  • 青岛企业网站seo技巧百度一下百度搜索
  • wordpress付款后查看内容快速排名软件seo系统
  • 网站建设与管理学什么百度提交链接
  • 做网站 创业如何提高自己的营销能力
  • 上海自适应网站建设中小企业管理培训课程
  • 西安做网站南通公司百度关键词推广怎么做
  • asp.net网站项目建设免费b站推广网址有哪些
  • 什么公司时候做网站软文营销文章案例