美文网首页
hive的脚本

hive的脚本

作者: 程序员的交流电 | 来源:发表于2020-09-10 15:37 被阅读0次

本脚本主要有三个功能:
1.启动metasore和hiveserver2
2.关闭metastore和hiveserver2
3.查看metatore和hiveserver2进程情况

#!/bin/bash

# 使用case语句进行不同功能的判断
case $1 in
"start"){
        # metastoe和hiveserver2都是前台启动的,这里改成后台启动,并且将日志输出到/dev/null
        nohup /opt/module/hive/bin/hive  --service metastore > /dev/null 2>&1 &
        # 这里sleep 10S 因为如果hive配置里面配置了metasote.url的话
        # hiveserver2不会启动内部的连接元数据的metatsote,先启动的话,会报错
        sleep 10s
        nohup /opt/module/hive/bin/hive  --service hiveserver2 > /dev/null 2>&1 &
};;
"stop"){
        # hive,没有自己的关闭命令,一般都是使用kill
        # metastore和hivesever2在jps里面都是RunJar,获取他们的PID,然后kill -9
        jps | grep RunJar  | awk '{print \$1}'  | xargs kill -9
};;
"status"){
        # status功能主要是因为metastore和hiveServer2在jps里面都是只会显示RunJar,不好区分,所以添加这个功能
        #首先查询是否存在两个进程
        meta=`jps -m | grep metastore`
        server=`jps -m | grep HiveServer2`

        # 判断是否存在
        if [ -n "$meta" ]
        then
                # 如果存在进程的话,使用下面的这句命令输出 PID metastore格式,方便观察
                jps -m | grep metastore | awk '{print $1}' | xargs echo metastore | awk '{print $2,$1}'
        else
                # 如果没有启动的话,输出metastore stopped
                echo "metastore stopped"
        fi
        if [ -n "$server" ]
        then
                jps -m | grep HiveServer2 | awk '{print $1}' | xargs echo hiveserver2 | awk '{print $2,$1}'
        else
                echo "hiveserver2 stopped"
        fi
};;
"help"){
        echo "args:hive.sh  start|stop|status|"
};;
# 注意case语句一定要这个esac的结尾,我就经常忘记加,esac其实就是case的倒序
esac

本脚本知识点总结

1. case的语句格式
case $1 in
"start"){
    echo "start"
};;
"stop"){
    echo "stop"
};;
esac
2.nohup后台运行进程 并丢弃日志
nohup commond > /dev/null 2>&1 &
3.关闭没有关闭命令的进程

这里分为两种情况,一种是jsp,另外一种是ps -ef
首先是ps -ef命令,jps只能看到java进程,ps -ef可以看到所有进程,包括grep进程,这个是我们不想要的
假如现在我们找一个abc的进程,注意这里的abc必须是唯一的,一般打印出来的有两个进程,一个是abc进程一个是grep进程

ps -ef | grep abc

这个时候我们需要排除grep,这的-v参数就是排除的意思,剩下的就只有abc进程了

ps -ef | grep abc | grep -v grep

然后我们使用awk,获取进程的PID,awk默认的分隔符是逗号,并且PID是在第一列,
这里有一个注意点,当脚本远程执行的时候,需要转义 \

ps -ef | grep abc | grep -v grep | awk '{print $1}'

最后就是xargs,这个是把上一个输出,作为后面命令的参数的
kill -9 将xargs传过来的PID作为参数杀掉

ps -ef | grep file-flume-kafka | grep -v grep |awk  '{print \$2}' | xargs kill -9

jps的话就不用使用grep -v grep了

jps | grep RunJar  | awk '{print \$1}'  | xargs kill -9
4.将命令执行结果赋值给一个变量,反双引号里面的命令是可以执行的

注意赋值给变量等号两边不可以有空格

mate=`jps -m | grep metastore`
5.判断变量是否为空那个
if [ -n $mate ]
6.使用jps,打印的hive相关进程现实Runjar的,这里将他变成对应hive进程名

awk将PID获取,然后通过xargs传值到后面的echo里面,这里打印是metastore PID
我希望将PID放到前面,使用awk,交互答应的位置,注意awk默认的间隔是空格awk '{print $2,$1}'

jps -m | grep metastore | awk '{print $1}' | xargs echo metastore | awk '{print $2,$1}'

相关文章

  • Azkaban实战-Hive脚本任务

    1.创建job描述文件和hive脚本 (1)Hive脚本:student.sql 添加内容: (2)Job描述文件...

  • Hive自动map join优化而引发MapJoinMemory

    问题描述 在Hive on Spark上运行一个hive查询脚本,spark将其划分为3个stage。发现脚本在执...

  • hive 日志报错汇总

    异常1: java.lang.InterruptedException 描述 在集群执行hive脚本时,hive....

  • 个人总结-Hive

    1、HQL脚本的三种执行方式: Hive –e ‘hql执行一行脚本 Hive –f ‘hql.file’执行一个...

  • Hive源码解读(2)shell脚本解读

    在上文中我们得知,Hive的入口脚本都在bin/etc目录下,启动hive客户端的过程就是通过这些脚本启动的。细心...

  • hive的脚本

    本脚本主要有三个功能:1.启动metasore和hiveserver22.关闭metastore和hiveserv...

  • Hive的transform使用

    创建Hive表 添加测试数据 添加transform的python脚本 4.在Hive中添加python文件 运行...

  • crontab 定时写法整理

    前言 目前 Hadoop 、Hive 及 Spark 脚本需要用定时脚本,任务调度使用的是 crontab 的任务...

  • Hive运行方式

    1.最基本的hive命令行; Linux命令行直接hive 进入hive 命令行; 2.脚本运行方式(适用于生产环...

  • Hive-Transform-Python:快捷的Map/Red

    Hive 提供了 Transform 这一关键字,使用 python 脚本处理hive 的数据,实现 Map/Re...

网友评论

      本文标题:hive的脚本

      本文链接:https://www.haomeiwen.com/subject/qzueektx.html