通过http端口获取hadoop集群的active node

最近部门合并,两个部门的集群需要同步到一起,自然用的是【distcp】,因为两个集群的版本不一致,用hdfs可能会有问题,所以通过http端口来传输。因为两个集群都配置了HA,无法确定什么时候哪个name node处于active状态,所以需要先每次传输前先获取active node。

方式是通过JMX来获取集群信息。
解析返回的json,获取到active node后退出,开始传输数据。

#!/bin/sh
    
namenodes="
192.168.2.103
192.168.2.101
"

for nn in $namenodes
do
        echo "node: $nn"
        status=`curl "http://${nn}:50070/jmx?qry=Hadoop:service=NameNode,name=NameNodeStatus"`
        if [[ $? -eq 0  ]]
        then
                state=`echo $status | jq '.beans'[0] | jq '.State' | sed 's/"//g'`
                echo "state: ${state}"
                if [[ "active" == ${state} ]]
                then
                        activeNode=$nn
                        break
                fi
        elif [[ $? -eq 1  ]]
        then
                echo "Error: can not conncet to host"
        else
                echo "Error $?"
        fi
done

echo "active: ${activeNode}"

返回的json格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值