HADOOP HA集群一键启动脚本

本文介绍了一套自定义脚本,用于简化Hadoop集群的管理,包括一键启动、关闭、状态检查及文件传输等操作,有效提升运维效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

鉴于配置与启动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  (注意:只能查看进程是否开启)

转载于:https://www.cnblogs.com/hjm0928/p/9641885.html

Hadoop集群一键启动是指通过简单的操作实现整个Hadoop集群的同时启动Hadoop是一个开源框架,用于处理大数据集的分布式计算,它可以在多个服务器上运行并协同工作。在传统的方式中,需要手动在每个服务器上分别启动集群中的各个组件,这样操作比较繁琐且容易出错。 为了解决这个问题,开发者开发了一些工具,可以通过一键启动命令来方便地启动整个Hadoop集群。这些工具通常会在启动时自动检测所有服务器上的配置,并依次启动各个组件。一键启动的好处是能够节省管理员的时间和精力,同时减少人为操作失误的几率。 要实现Hadoop集群一键启动,可以使用一些现成的工具或脚本。这些工具通常会提供一个配置文件,包含了集群中每台服务器的IP地址、角色和配置信息。通过修改配置文件,管理员可以指定集群中每个组件的运行规则。然后,一键启动命令会读取配置文件,并在每个服务器上启动相应的组件。 此外,还有一些集成的平台或云服务,如Ambari、Cloudera等,提供了更多的功能,使得Hadoop集群一键启动更加简便。这些平台可以通过图形界面来配置和管理Hadoop集群,而不需要手动编辑配置文件。管理员只需在图形界面上完成相关设置,点击一键启动按钮,整个集群将会自动启动起来。 总之,Hadoop集群一键启动通过使用工具、脚本或集成的平台,简化了管理员的操作,提高了启动效率,使得Hadoop集群的管理更加方便和快捷。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值