【经验分享】用Linux脚本管理虚拟机下的大数据服务

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: 【经验分享】用Linux脚本管理虚拟机下的大数据服务

用Linux脚本管理虚拟机中的大数据组件服务

启闭服务脚本

#!/bin/bash
if [ "$1" == "start" ];then
        # 自定义启动服务函数,传入两个字符串参数:参数1为启动命令,参数2为启动方式
    function startService(){
                # 定义两个局部遍历依次接收用户传入的两个参数
                # service 为启动命令
                local service=$1
                # exeType 为启动方式(daemon:后台启动(用于那些会占用窗口的服务),非daemon表示正常启动)
                local exeType=$2
                if [ "$exeType" == "daemon" ];then
                        # 后台启动
                        nohup $service 1>/dev/null 2>&1 &
                else
                        # 正常启动
                        $service 1>/dev/null 2>&1
                fi
                # 判断执行启动脚本后的状态
                if [ $? -ne 0 ];then
                        # 因为服务按从上到下有依赖关系,所以任何一个脚本执行出错,将退出整个脚本,所以选择exit而非return
                        # 函数按通用规则 return 0:正常,非0:表示异常;若函数中return缺省,则默认返回最后一条命名的状态即改命令执行后的$?
                        echo "ERROR : FAIL TO EXECUTE $service IN MODE OF $exeType ... EXIT ..."
                        # 退出脚本
                        exit 1
                else
                        # 成功则正常输出提示结果
                        echo "INFO : SUCCESS TO EXECUTE $service IN MODE OF $exeType"
                fi
    }

        # 依次按服务依赖顺序调用启动服务函数,并为每次调用传入启动命令和启动方式
        # 启动 hadoop hdfs
    startService "start-dfs.sh" "non-daemon"
        # 启动 hadoop yarn
    startService "start-yarn.sh" "non-daemon"
                # 启动 ZooKeeper
        startService "zkServer.sh start" "non-daemon"
                # 启动 HBase
        startService "start-hbase.sh" "non-daemon"
        # 启动 hadoop job history server
    #startService "mapred --daemon start historyserver" "self-daemon"
        # 启动 hive metastore
    #startService "hive --service metastore" "daemon"
        # 启动 hive server2(供idea,zeppelin等客户端通过jdbc远程连接使用)
    #startService "hive --service hiveserver2" "daemon"
        # 启动 zeppelin
    #startService "zeppelin-daemon.sh start" "non-daemon"
                # 启动 spark
        #startService "/opt/software/spark-3.1.2/sbin/start-all.sh" "non-daemon"
elif [ "$1" == "stop" ];then
        # 自定义启动服务函数,传入两个字符串参数:参数1为关闭命令,参数2为关闭方式
    function stopService(){
                # 服务名称或关闭命令
                local service=$1
                # 关闭方式(command:命令关闭,pid:根据服务查找进程编号(pid)在借助kill命令关闭)
                local exeType=$2
                if [ "$exeType" == "command" ];then
                        # 直接执行参数一命令关闭服务
                        $service 1>/dev/null 2>&1
                        # 根据关闭命令执行的状态展示结果
                        if [ $? -eq  0 ];then
                                        echo "INFO : SUCCESS TO EXECUTE $service"
                        else
                                        echo "ERROR : FAIL TO EXECUTE $service"
                        fi
                else
                        # 根据参数一传入的服务名称查看进程编号(pid)
                        local pid=$(jps -ml|grep $service|awk '{print $1}')
                        if [ "$pid" ];then
                                # 如果进程编号存在,则直接强制 kill
                                kill -9 $pid
                                # 根据kill的状态展示结果
                                if [ $? -eq  0 ];then
                                                        echo "INFO : SUCCESS TO KILL $service WITH PID $pid"
                                        else
                                                        echo "ERROR : FAIL TO KILL $service WITH PID $pid"
                                        fi
                        else
                                echo "INFO : NO SERVICE EXIST WITH NAME OF $service"
                        fi
                fi
    }

        # 根据服务的依赖关系,逆向逐个关闭服务
                # 首先关闭 spark
        # stopService "/opt/software/spark-3.1.2/sbin/stop-all.sh" "command"
        # 首先关闭 zeppelin
    stopService "zeppelin-daemon.sh stop" "command"
        # 再关闭可能存在的 beeline 客户端
    stopService "BeeLine" "pid"
        # 然后关闭可能存在的 hive 客户端
    stopService "CliDriver" "pid"
        # 确定无任何连接指向 hive 后,先关闭 hive server2
    stopService "HiveServer2" "pid"
        # 再关闭 hive metastore
    stopService "HiveMetaStore" "pid"
                # 再关闭 HBase
        stopService "stop-hbase.sh" "command"
                # 再关闭 ZooKeeper
        stopService "zkServer.sh stop" "command"
                # 然后关闭JobHistoryServer
    stopService "JobHistoryServer" "pid"
        # 最后关闭 yarn 和 hdfs
    stopService "stop-yarn.sh" "command"
    stopService "stop-dfs.sh" "command"
else
        # 附带查一下java进程
    jps -ml
fi

脚本解读及其使用方法

1.传参与脚本分支
脚本通过检查第一个参数来决定执行哪种操作。
如果参数是"start",启动服务。
如果参数是"stop",停止服务。
如果参数不是"start"或"stop",则默认执行jps -ml来显示Java进程。
启动和停止服务的分支采用的都是函数+调用的基本结构
涉及的服务有(可自行添加):

  • Hadoop
    • Hadoop HDFS
    • Hadoop YARN
    • Hadoop JobHistoryServer
  • Hive
    • HiveMetaStore
    • HiveServer2
  • ZooKeeper
  • HBase
  • spark
  • Zeppelin
    ...

2.启动服务(start分支)
定义了一个函数startService用于启动服务,它接受两个参数:要执行的启动命令和启动方式("daemon"和"non-daemon")

3.停止服务(stop分支)
定义了一个函数stopService用于停止服务,它接受两个参数:服务名称和关闭方式(通过命令"command"或查找并杀死进程"pid")

4.如何将新增服务纳入开启和关闭列表?

  • 确定新增服务的开启(daemon?non-daemon?)和关闭(command?pid?)方式
  • 查找新增服务的理想开启和关闭顺序(注意开启和关闭的顺序应该相反)
  • 若新增服务存在着客户端,应该补充可能的客户端关闭命令。

5.启动前的准备

  • 需要先确定该服务的关联服务是什么,将该服务及其关联服务同时开启(HBase的关联服务是Hadoop、ZooKeeper)
  • 只需注释掉无关服务的开启指令,无需注释关闭服务的指令
相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
2天前
|
Shell Linux
Linux Shell 脚本入门教程:开启你的自动化之旅
Shell是一种计算机程序,它充当了用户与操作系统之间的接口。在Linux系统中,Shell允许用户通过命令行界面(CLI)来控制计算机。Shell脚本则是一种使用Shell语言编写的脚本,它可以自动执行一系列的命令,帮助用户实现任务自动化,提高工作效率。
|
4天前
|
人工智能 自然语言处理 小程序
政务VR导航:跨界融合AI人工智能与大数据分析,打造全方位智能政务服务
政务大厅引入智能导航系统,解决寻路难、指引不足及咨询台压力大的问题。VR导视与AI助手提供在线预览、VR路线指引、智能客服和小程序服务,提高办事效率,减轻咨询台工作,优化群众体验,塑造智慧政务形象。通过线上线下结合,实现政务服务的高效便民。
18 0
政务VR导航:跨界融合AI人工智能与大数据分析,打造全方位智能政务服务
|
13天前
|
SQL 分布式计算 前端开发
MaxCompute操作报错合集之SQL脚本设置参数set odps.mapred.reduce.tasks=18;没有生效,是为什么
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
14天前
|
SQL 分布式计算 大数据
MaxCompute产品使用问题之建了一个python 的 UDF脚本,生成函数引用总是说类不存在,是什么导致的
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
2天前
|
网络协议 Linux 开发工具
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
|
2天前
|
Linux
部署09--虚拟机快照,我们无法避免损坏Linux操作系统 ,如果重新装一下就太过麻烦,推荐在关机下制作快照,关机制作效率好,机房要靠近地址,动不动崩溃
部署09--虚拟机快照,我们无法避免损坏Linux操作系统 ,如果重新装一下就太过麻烦,推荐在关机下制作快照,关机制作效率好,机房要靠近地址,动不动崩溃
|
2天前
|
运维 监控 大数据
部署-Linux01,后端开发,运维开发,大数据开发,测试开发,后端软件,大数据系统,运维监控,测试程序,网页服务都要在Linux中进行部署
部署-Linux01,后端开发,运维开发,大数据开发,测试开发,后端软件,大数据系统,运维监控,测试程序,网页服务都要在Linux中进行部署
|
3天前
|
负载均衡 Java Linux
黑马头条01,环境搭建,今日头条的介绍,今日头条的功能架构图,技术栈的说明,服务层,nacos(奶靠丝)安装,安装在Linux服务器上环境准备,
黑马头条01,环境搭建,今日头条的介绍,今日头条的功能架构图,技术栈的说明,服务层,nacos(奶靠丝)安装,安装在Linux服务器上环境准备,
|
4天前
|
监控 Linux
Linux脚本之监控系统内存使用情况并给予警告
Linux脚本之监控系统内存使用情况并给予警告
|
4天前
|
缓存 网络协议 Linux
Linux下脚本编写局域网扫描工具
Linux下脚本编写局域网扫描工具

相关产品

  • 云原生大数据计算服务 MaxCompute