IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 2021-07-08 -> 正文阅读

[大数据]2021-07-08

hadoop一键启动关闭脚本(hadoop,hive,zeppelin,zookeeper,hbase)

一 新建文件

	一键启动:
			    新建.sh文件:touch start.sh
			    修改文件权限:chmod u+x start.sh
			    新建.cnf文件:start.cnf
	一键关闭:
		        新建.sh文件:touch stop.sh
			    修改文件权限:chmod u+x stopsh
			    新建.cnf文件:stop.cnf 

二编写启动脚本

	start.sh文件编写:最好添加 source/etc/profile,不添加也不要紧
在这里插入代码片#!/bin/bash

source /etc/profile

# 一键启动配置文件
CNF_FILE='start.cnf'

# 验证配置文件(必须存在且为文件)
if [ ! -e $CNF_FILE -o -d $CNF_FILE ]
then
    echo $CNF_FILE" unavailable or directory, script will exit"
    exit 0
fi        
         
# 将配置文件内容读入变量并转为列表
CNF_LINES=(`cat start.cnf`)
             
# 循环按行输出配置信息,将第一项作为内容提示供用户选择
count=0
for item in ${CNF_LINES[@]}
do  
    ((count++))
    arr=(${item/->/ })
    echo $count"、"${arr[0]}
done
    
# 用户选择启动服务编号(向前启动所有服务)
read -p 'please input you choice : ' choice

# 验证用户输入(必须为小于等于配置文件行数的整数)
if [[ $choice =~ ^[0-9]+$ ]]
then
    if [ $choice -gt $count -o $choice -lt 1 ]
    then
        echo "choice must be between 1 and $count,script will exit"
        exit 0
    fi
else
    echo 'choice must be a num, script will exit'
    exit 0
fi

# 自定义函数检查指定参数的服务是否完好,若有残留杀死进程
function killOnLeft(){
    SIGN=$1
    SERS=$2
    SERS=(${SERS//_/ })
    PIDS=()
    count=0
    for item in ${SERS[@]}
    do
        # jps配合管道检查指定服务项是否存在
        RST=`jps -ml|grep $item`
        if [[ $RST ]]
        then
            RST=($RST)
            PIDS[$count]=${RST[0]}
            ((count++))
        fi
    done
    if [ $count -lt ${#SERS[@]} ]
    then
        # 若存在不完整的残留kill进程
        if [ $count -gt 0 ]
        then
            for pid in ${PIDS[@]}
            do
                RST=`kill -9 $pid`
            done
            echo "$SIGN has service left and killed"
        else
            echo "$SIGN has no service left"
        fi
        echo 'no'
    else
        echo "$SIGN is running"
        echo "ok"           
    fi
}

# 自定义函数调用参数命令集启动相应服务
function startSers(){
    SIGN=$1
    SERS=$2
    SERS=${SERS//_/ }
    for cmd in $SERS
    do
        RST=`eval ${cmd//#/ }`
    done
    echo $SIGN" has been started"
}

# 循环执行用户选择的配置文件中命令行
count=0
while (( $count<$choice ))
do
    LINE=${CNF_LINES[$count]}
    LINE=(${LINE//->/ })
    SIGN=${LINE[0]}
    LINE=${LINE[1]}
    LINE=(${LINE//;/ })
    SERS=${LINE[0]}
    CMDS=${LINE[1]}
    RST=`killOnLeft $SIGN $SERS`
    echo $RST
    if [[ $RST =~ no$ ]]
    then
        RST=`startSers $SIGN $CMDS`
        echo $RST
    fi
    ((count++))
done
start.cnf文件编写,后续需要添加别的一键启动,直接在里面添加即可;如果只要写其中之一的启动脚本,只要在start..cnf里面删除其对应行的启动命令,start.sh里面一切照旧
hadoop->NameNode_SecondaryNameNode_DataNode_ResourceManager_NodeManager;start-dfs.sh_start-yarn.sh
hive->HiveMetaStore_HiveServer2;nohup#hive#--service#metastore>hive.log#2>&1#&_nohup#hive#--service#hiveserver2>hive.log#2>&1#&
zeppelin->ZeppelinServer;zeppelin-daemon.sh#start
zookeeper->QuorumPeerMain;zkServer.sh#start
hbase->HMaster_HRegionServer;start-hbase.sh

关闭脚本

stop.sh文件编写
LINE=(${LINE//@/ })
    SERS=${LINE[0]}
    SERS=${SERS//,/ }
    COUNT=0
    for item in $SERS
    do
        RST=`jps -ml|grep -w $item`
        if [[ $RST ]]
        then
            COUNT=1
            break
        fi
    done
    if [ $COUNT -eq 1 ]
    then
        RST=`${LINE[1]//_/ }`
        echo "STOPPED"
    else
        echo "NONE"
    fi
}

# 自定义函数通过系统通用函数kill关闭服务
function killSers(){
    LINE=$1
    LINE=${LINE//,/ }
    COUNT=0
    for item in $LINE
    do
        PID=`jps -ml|grep -w $item|awk {'print $1'}`
        if [[ $PID ]]
        then
            PID=`kill -9 $PID`
            ((COUNT++))
        fi
    done
    if [ $COUNT -gt 0 ]
    then
        echo "STOPPED"
    else
        echo "NONE"
    fi
}

# 自定义函数根据参数类型和操作字符串关闭服务
function stopByLine(){
    SIGN=$1
    TYPE=$2
    LINE=$3
    case $TYPE in
    "STOP")
        LINE=${LINE//;/ }
        for item in $LINE
        do
            RST=`stopSers $item`
            item=(${item//@/ })
            item=${item[0]}
            case $RST in
            "STOPPED")
                echo 'services_[_'$item'_]_stopped'
            ;;
            "NONE")
                echo 'no_services_[_'$item'_]_existed'  
            ;;
            esac
        done
    ;;
    "KILL")
        RST=`killSers $LINE`
        case $RST in
        "STOPPED")
            echo 'services_[_'$LINE'_]_stopped'
        ;;
        "NONE")
            echo 'no_services_[_'$LINE'_]_existed'  
        ;;
        esac
    ;;
    esac
}

# 根据用户的选择向后关闭服务
COUNT=0
while (( $COUNT<$choice ))
do
    LINE=${CNF_LINES[$COUNT]}
    LINE=(${LINE//->/ })
    SIGN=${LINE[0]}
    TYPE=${LINE[1]}
    LINE=${LINE[2]}
    RST=`stopByLine $SIGN $TYPE $LINE`
    for item in $RST
    do
        echo ${item//_/ }
    done
    ((COUNT++))
done

stop.cnf文件编写,添加删除关闭命令,跟启动是一样的,看start.cnf介绍即可
hbase->STOP->HMaster,HRegionServer@stop-hbase.sh
zookeeper->STOP->QuorumPeerMain@zkServer.sh_stop
zeppelin->STOP->ZeppelinServer@zeppelin-daemon.sh_stop
hive->KILL->HiveMetaStore,HiveServer2
hadoop->STOP->NameNode,SecondaryNameNode,DataNode@stop-dfs.sh;ResourceManager,NodeManager@stop-yarn.sh

运行脚本

启动命令:./start.sh
关闭命令:./stop.sh
注:必须在同一目录执行命令
然后根据提示选择对应选项
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-09 17:33:49  更:2021-07-09 17:35:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 19:24:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码