zoukankan      html  css  js  c++  java
  • HADOOP HA集群一键启动脚本

    鉴于配置与启动hadoop操作过于繁琐, so 自己写了几个脚本, 减少操作

    多台主机同时操作脚本

    操作实例

      --查看hadoop用户 node1 node2 node3主机的jps进程

      

      结果

      

    #/bin/bash
    if [ "$1" = "--help" -o $# -lt 3 ]; then
            echo "Usage: opts <user> <opt> <mechine1> [<mechine2>...]"
            echo "    please user "_" instead of "\""
            echo "    please user "__" instead of "_""
            echo "    please user "%" instead of "double quotation marks""
            exit
    fi
    args=(${*//$2/opt})
    user=$1
    unset args[0]
    opt=${2//_//}
    opt=${opt//%/"}
    unset args[1]
    for s in ${args[@]}
    do
            echo "[INFO] invoke($s): $opt"
            ssh ${user}@$s "source /etc/profile; ${opt//'//'/_}"
    done

    操作实例

      --传输/etc/文件夹到hadoop用户 node1 node2 node3主机的 /tmp 文件夹下

      scps /etc/ /tmp hadoop node1 node2 node3

    文件传输到多台主机

    #/bin/bash
    opt=$1
    if [ "$opt" = "--help" -o $# -lt 4 ] ; then
       echo "Usage: scps <sourcePath> <destinationPath> <user>  <mechine1> [<mechine2> <mechine3>...]"
       exit
    fi
    mechines=($*)
    soucePath=$1
    destinationPath=$2
    user=$3
    unset mechines[0]
    unset mechines[1]
    unset mechines[2]
    for i in ${mechines[@]}
    do
            echo "(INFO) invoke: scp -r $soucePath $user@${i}:$destinationPath"
            scp -r $soucePath $user@${i}:$destinationPath
    done

    一键启动/关闭hadoop集群命令(注:hadoop为用户, 可自己更换)

    #!/bin/bash
    #启动hadoop ha集群
    start(){
            md hadoop "zkServer.sh start" node1 node2 node3
            md hadoop "start-dfs.sh" master1
            md hadoop "start-yarn.sh" master1
            md hadoop "yarn-daemon.sh start resourcemanager" master2
    }
    #启动hadoop ha集群
    stop(){
            md hadoop "yarn-daemon.sh stop resourcemanager" master2
            md hadoop "stop-yarn.sh" master1
            md hadoop "stop-dfs.sh" master1
            md hadoop "zkServer.sh stop" node1 node2 node3
    }
    
    #验证hadoop NameNode状态
    statusNN(){
            success=0
            nn=$1
            echo "[INFO] check hadoop in $nn status..."
            rm1=`ssh hadoop@$nn "source /etc/profile; jps | grep ResourceManager"`
            nn1=`ssh hadoop@$nn "source /etc/profile; jps | grep NameNode"`
            zkfc1=`ssh hadoop@$nn "source /etc/profile; jps |grep DFSZKFailoverController"`
            len_rm1=${#rm1}
            len_nn1=${#nn1}
            len_zkfc1=${#zkfc1}
            if [ $len_rm1 == 0 ]
            then
                    echo -e "[WARING] ResourceManager in $nn do not running"
                    let success=1
            fi
            if [ $len_nn1 == 0 ]
            then
                    echo -e "[WARING] NameNode in $nn do not running"
                    let success=1
            fi
            if [ $len_zkfc1 == 0 ]
            then
                    echo -e "[WARING] DFSZKFailoverController in $nn do not running"
                    let success=1
            fi
            if [ $success != 1 ]
            then
                    echo -e "[INFO] hadoop in $nn is running well"
            fi
    }
    
    #验证Hadoop DataNode状态
    statusDN(){
            success=0
            dn=$1
    echo "[INFO] check hadoop in $dn status..."
            qpm1=`ssh hadoop@$dn "source /etc/profile; jps | grep QuorumPeerMain"`
            jn1=`ssh hadoop@$dn "source /etc/profile; jps | grep JournalNode"`
            nm1=`ssh hadoop@$dn "source /etc/profile; jps | grep NodeManager"`
            dn1=`ssh hadoop@$dn "source /etc/profile; jps | grep DataNode"`
            len_qpm1=${#qpm1}
            len_jn1=${#jn1}
            len_nm1=${#nm1}
            len_dn1=${#dn1}
            if [ $len_qpm1 == 0 ]; then
                    echo -e "[WARING] QuorumPeerMain in $dn is not running"
                    let success=1
            fi
            if [ $len_jn1 == 0 ]; then
                    echo -e "[WARING] JournalNode in $dn is not running"
                    let success=1
            fi
            if [ $len_nm1 == 0 ]; then
                    echo -e "[WARING] NodeManager in $dn is not running"
                    let success=1
            fi
            if [ $len_dn1 == 0 ]; then
                    echo -e "[WARING] DataNode in $dn is not running"
                    let success=1
            fi
            if [ $success != 1 ]; then
                   echo -e "[INFO] hadoop in $dn is running well"
            fi
    }
    
    status(){
            statusNN master1
            statusNN master2
            statusDN node1
            statusDN node2
            statusDN node3
    }
    
    opt=$1
    if [ "$opt" == "start" ]
    then
            echo "[INFO] start hadoop..."
            start
    elif [ "$opt" == "stop" ]
    then
            echo "[INFO] stop hadoop..."
            stop
    elif [ "$opt" == "restart" ]
    then
            echo "[INFO] restart hadoop..."
            stop
            start
    elif [ "$opt" == "status" ]
    then
            echo "checking hadoop status...."
            status
    else
            echo "Usage: hadoop-admin <start|stop|restart>"
    fi

     操作实例

      --启动hadoop ha集群: hadoop-admin start

      --关闭hadoop ha集群: hadoop-admin stop

      --查看hadoop状态: hadoop-admin status  (注意:只能查看进程是否开启)

  • 相关阅读:
    SharedPreferences
    Handler
    Gallery 和ImageSwitcher
    poj 1077 Eight (BFS)
    HDU 1208 Pascal's Travels( 记忆化搜索)
    HDU 1619 Unidirectional TSP (dp,dfs)
    HDU 3683 Gomoku (枚举+BFS)
    HDU 3647 Tetris (暴力DFS)
    poj 1020 Anniversary Cake (DFS)
    poj 1375 Intervals(解析几何 过圆外一点求与圆的切线)
  • 原文地址:https://www.cnblogs.com/hjm0928/p/9641885.html
Copyright © 2011-2022 走看看