1. 使用supervisor管理hive服务

1.1 需求说明

         在做通过hudi采集数据并落地到hive的过程中,因为经常有Hive的服务被杀死,所以想到用supervisor来管理hive的进程,
当hive的服务被意外杀死后,实现自动启动

1.2 supervisor

管理进程的工具。

1.2.1 安装

##1. 安装
## yum -y install epel-release
## yum -y install supervisor##2. 配置
## mv /etc/supervisord.conf /etc/supervisord.conf.bak

1.2.2 配置

##  vi /etc/supervisord.conf; filename:supervisord.conf
; author:zxy
; date:2021-07-18[unix_http_server]
file=/var/run/supervisor/supervisor.sock   ; (the path to the socket file)
;chmod=0700                 ; sockef file mode (default 0700)
;chown=nobody:nogroup       ; socket file uid:gid owner
;username=user              ; (default is no username (open server))
;password=123               ; (default is no password (open server))[inet_http_server]         ; inet (TCP) server disabled by default
port=0.0.0.0:9001        ; (ip_address:port specifier, *:port for all iface)
;username=user              ; (default is no username (open server))
;password=123               ; (default is no password (open server))[supervisord]
logfile=/var/log/supervisor/supervisord.log  ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10          ; (num of main logfile rotation backups;default 10)
loglevel=info               ; (log level;default info; others: debug,warn,trace)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false              ; (start in foreground if true;default false)
minfds=1024                 ; (min. avail startup file descriptors;default 1024)
minprocs=1024                ; (min. avail process descriptors;default 200)
user=root[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket
serverurl=http://0.0.0.0:9001 ; use an http:// url to specify an inet socket
;username=chris              ; should be same as http_username if set
;password=123                ; should be same as http_password if set[include]
files = /etc/supervisord.d/*.conf

1.2.3 启动supervisord

[root@hadoop /]# touch /var/run/supervisor/supervisord.pid
/etc/supervisord.d/ : 存放supervisor的配置文件
/var/run/supervisor/: 存放pid的进程
/var/log/supervisor/: 存放supervisor的日志文件##2. 设置开机自启动
[root@hadoop supervisor]# systemctl enable supervisord
##3. 开启服务器
[root@hadoop supervisor]# systemctl start supervisord
[root@hadoop supervisor]# systemctl status supervisord
● supervisord.service - Process Monitoring and Control DaemonLoaded: loaded (/usr/lib/systemd/system/supervisord.service; enabled; vendor preset: disabled)Active: active (running) since Thu 2021-05-27 14:50:01 CST; 12s agoProcess: 16460 ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf (code=exited, status=0/SUCCESS)Main PID: 16481 (supervisord)CGroup: /system.slice/supervisord.service└─16481 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.confMay 27 14:50:01 hadoop systemd[1]: Starting Process Monitoring and Control Daemon...
May 27 14:50:01 hadoop systemd[1]: Started Process Monitoring and Control Daemon.

1.3 supervisor管理进程

hive_metastore.conf

[root@hadoop supervisord.d]# vim hive_metastore.conf

; filename:hive_metastore.conf
; author:zxy
; date:2021-07-18
; desc:配置supervisor管理metastore[program:metastore]
directory=/opt/apps/hive-1.2.1   ;软件的前缀
command=/opt/apps/hive-1.2.1/bin/hive --service metastore &       ; 配置启动metastore的命令
stderr_logfile=/var/log/supervisor/hivemetastore.err       ; 错误日志存放路径
stdout_logfile=/var/log/supervisor/hivemetastore.log         ; 标准的日志存放路径
stdout_logfile_maxbytes=10MB   ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
user=root ; 只能root用户启动
autostart=true ; 自动启动
autorestart=true        ; 自动重启
startsecs=10                  ; 开机10s之后如果应用程序是running状态,supervisor就认为这个启动是成功
startretries=3                ; 重启3此之后还是没有成功,就标记为失败
redirect_stderr=false ;    如果是true,那么stderr日志就会写入到stdout中

hive_hiveserver2.conf

[root@hadoop supervisord.d]# vim hive_hiveserver2.conf

; filename:hive_hiveserver2.conf
; author:zxy
; date:2021-07-18
; desc:配置supervisor管理hiveserver2[program:hiveserver]
directory=/opt/apps/hive-1.2.1   ;软件的前缀
command=/opt/apps/hive-1.2.1/bin/hive --service hiveserver2 &       ; 配置启动hiveserver的命令
stderr_logfile=/var/log/supervisor/hiveserver.err       ; 错误日志存放路径
stdout_logfile=/var/log/supervisor/hiveserver.log         ; 标准的日志存放路径
stdout_logfile_maxbytes=10MB   ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
user=root ; 只能root用户启动
autostart=true ; 自动启动
autorestart=true        ; 自动重启
startsecs=10                  ; 开机10s之后如果应用程序是running状态,supervisor就认为这个启动是成功
startretries=3                ; 重启3此之后还是没有成功,就标记为失败
redirect_stderr=false ;    如果是true,那么stderr日志就会写入到stdout中

1.4通过supervisor开启/关闭/重启hive服务

##1. 查看supervisor下的所有的应用程序的状态
[root@hadoop azkaban-solo-server]# supervisorctl reread
metastore: available
hiveserver: available##2. 更新supervisor中的指定程序
[root@hadoop azkaban-solo-server]# supervisorctl update metastore
metastore: added process group
[root@hadoop azkaban-solo-server]# supervisorctl update hiveserver
hiveserver: added process group
##3. 查看指定程序的状态
[root@hadoop azkaban-solo-server]# supervisorctl status metastore
metastore                       RUNNING   pid 25360, uptime 0:01:05
...
##4. 关闭指定的程序
[root@hadoop azkaban-solo-server]# supervisorctl stop metastore
metastore: stopped
...
##5. 开启指定的程序
[root@hadoop azkaban-solo-server]# supervisorctl start metastore
metastore: stopped
...

1.4.1 supervisorctl 启动hive的进程

[root@hadoop supervisord.d]# supervisorctl start metastore
[root@hadoop supervisord.d]# supervisorctl start hiveserver
[root@hadoop supervisord.d]# jps
3361 NodeManager
2456 NameNode
2601 DataNode
48601 RunJar
3242 ResourceManager
48602 RunJar
2845 SecondaryNameNode
48831 Jps
[root@hadoop supervisord.d]# hiveLogging initialized using configuration in file:/data/apps/hive-1.2.1/conf/hive-log4j.properties
hive (default)>

2.使用脚本控制supervisord启动

#!/bin/bash
# filename:start-supervisord-hive.sh
# autho:zxy
# date:2021-07-19
# 接受参数
CMD=$1## 帮助函数
usage() {echo "usage:"echo "start-supervisord-hive.sh start/stop"echo "description:"echo "      start:start supervisord-hive"echo "      stop:stop supervisord-hive"exit 0
}if [ ${CMD} == "start" ];then# 启动supervisor管理的hive服务systemctl start supervisordsystemctl status supervisord
elif [ ${CMD} == "stop" ];then# 关闭supervisor管理的hive服务systemctl stop supervisordsystemctl status supervisord
elseusage
fi

Supervisor管理hive服务(metastore,hiveserver2),防止意外杀死Hive服务,导致任务中断相关推荐

  1. mysql服务无法启动进程意外终止_mysql服务无法启动 1067 错误,进程意外终止

    mysql服务无法启动 1067 错误,进程意外终止 2015年02月10号 发表于:评论 () 热度:1148 今天window服务器上的mysql 服务 无法启动 , 查看应用程序日志 提示 &q ...

  2. hive mysql5.7_安装并使用mysql5.7作为hive的metastore

    前言 hive的metastore默认是使用derby来作为metastore,但是derby有一个缺点是不能支持多用户链接,虽然你可以通过切换目录来支持,但是不同目录的metastore会不一致,所 ...

  3. 新的比较详细的hive安装教程,包含:hadoop的安装配置,hive安装详细教程,大数据下hive详细配置和简单使用和hive元数据迁移相关安装配置操作

    简介:这是大数据里安装hive比较详细的教程,包括安装hive时hadoop的相关配置,hive安装,hive 之后的mysql安装,hive的元素配置到mysql相关配置,hive常见属性的相关配置 ...

  4. Hive on Spark和Spark sql on Hive,你能分的清楚么

    摘要:结构上Hive On Spark和SparkSQL都是一个翻译层,把一个SQL翻译成分布式可执行的Spark程序. 本文分享自华为云社区<Hive on Spark和Spark sql o ...

  5. hive 结构metastone_基于MySQL元数据的Hive的安装和简单测试

    3.9 下载驱动,并将驱动复制到hive_home/lib类库 mysql-connector-Java-5.1.31-bin.jar 3.10 启动Hive 3.11 在Hive中创建表 3.12 ...

  6. Hive的Metastore服务和Hiveserver2服务的详细说明

    Hive的Metastore服务和Hiveserver2服务的详细说明 一.Metastore服务  1.什么时候需要开启和使用Metastore服务呢?   首先我们先来了解Hive获取Mysql元 ...

  7. Hive 元数据服务 MetaStore

    1. 概念 MetaSore 是 Hive 元数据存储的地方.Hive 数据库.表.函数等的定义都存储在 MetaStore 中.根据系统配置方式,统计信息和授权记录也可以存储在这.Hive 或者其他 ...

  8. php使用supervisor管理进程脚本

    supervisor是用python开发的一个在linux系统下的进程管理工具,可以方便的监听,启动,停止一个或多个进程.当一个进程被意外杀死后,supervisor监听到后,会自动重新拉起进程. 一 ...

  9. 详解:Hive的MetaStore和三种配置方式

    一:Metadata概念: 元数据包含用Hive创建的database.table等的元信息.元数据存储在关系型数据库中.如Derby.MySQL等. 二:Metastore作用: 客户端连接meta ...

  10. 使用supervisor管理laravel队列 - 配置文件supervisord.conf

    相关文章 上一篇:使用supervisor管理laravel队列 ,此篇重点性描述了我本地配置supervisor的全部过程:但是并未介绍为啥这么配置,这里,我就来记录一下配置supervisor的各 ...

最新文章

  1. Nginx主主负载均衡架构
  2. 用户画像-撸一部分代码啊
  3. JDK 1.4 主要新特性
  4. spring配置详解-三种对象创建方式_
  5. 学不动?Apache Member 教你评估实用技术的思路
  6. Java面试知识点手工笔记(推荐)(转)
  7. PMP项目管理培训课程
  8. 【概率论与数理统计】目录
  9. 深度学习优化算法-AdaDelta算法
  10. python3-关于GitHub的最基本操作
  11. Round 2—算法的复杂度
  12. 杨帅浙江大学计算机,诚邀校友见证杭州校友会注册成立(非活动帖)
  13. (学习笔记)JAVA开发需要掌握哪些技术?
  14. vue 项目, 父组件中每次点击按钮重新加载子组件,(重新生成dom 元素)
  15. RabbitMq高级惰性列队
  16. czl蒻蒟的OI之路10、11、12
  17. c语言60题,C语言复习60题
  18. linux系统安装hba驱动,RedHat Linux下的HBA驱动安装
  19. KUKA officelite8.5 “无法建立至KRC的连接”解决办法
  20. 回文判断 【问题描述】 回文是正读和倒读都一样的句子。读入一个最大长度不超过50个字符的句子,判断其是否是回文。 【输入形式】 输入一个最大长度不超过50个字符的句子 【输出形式】 Yes/No

热门文章

  1. 在线进位制计算机,2进制换算(十六进制计算器在线)
  2. 【Java 8 新特性】使用Collectors.toList()方法将Map转化成List的示例
  3. Java 嵌入 SPL 轻松实现 Excel 文件合并
  4. ACL(标准/扩展访问控制列表)
  5. matlab定义对角块矩阵,Matlab中的扩展块对角矩阵
  6. Adobe Experience Cloud落地中国,Adobe、微软与世纪互联共庆三方合作
  7. Java——课设——图书管理系统实现
  8. 区块链掀起的认知革命!|筱静观察
  9. 黑马程序员培训没兄弟会高级
  10. 【VBA研究】用VBA创建数据透视表