如何通过restapi(或ambari restapi)捕获活动namenodeip

gc0ot86w  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(579)

我们有版本为的hdp集群 2.6.5 ,带ambari平台
在集群中我们有两个namenodes,一个是active,另一个是standby
我们要捕获活动namenode ip或活动namenode主机名
我们尝试了以下api,但没有成功(此api不返回输出)

curl -sH "X-Requested-By: ambari" -u admin:admin  -H "X-Requested-By: ambari" -X GET http://master:8080/api/v1/clusters//services/HDFS

注意-主机器是ambari服务器机器
我错在哪里?

oug3syen

oug3syen1#

我今天碰到了同样的问题,我相信Ambari会成功的。
所以这里是我的方式与ambari api只。

CLUSTER_LOGIN="$CLUSTER_USER:$CLUSTER_PASSWD"
CLUSTER_NAME=$(curl -s -u "$CLUSTER_LOGIN" -H "X-Requested-By: ambari" -X GET "${CLUSTER_URL}/api/v1/clusters" | jq -r .items[0].Clusters.cluster_name)

NAME_NODES=$(curl -s -u "$CLUSTER_LOGIN" -H "X-Requested-By: ambari" -X GET "${CLUSTER_URL}/api/v1/clusters/${CLUSTER_NAME}/services/HDFS/components/NAMENODE" | jq -r '.host_components[].href')

for nn in $NAME_NODES
do
   href_hastate=$(curl -s -u "$CLUSTER_LOGIN" -H "X-Requested-By: ambari" -X GET $nn | jq -r '.host.href +" "+ .metrics.dfs.FSNamesystem.HAState')
   host_href=$(echo $href_hastate | tr -s ' ' | cut -f1 -d ' ')
   hastate=$(echo $href_hastate | tr -s ' ' | cut -f2 -d ' ')
   host_ip_name=$(curl -s -u "$CLUSTER_LOGIN" -H "X-Requested-By: ambari" -X GET $host_href | jq -r '.Hosts | .ip + " " +.host_name')
   ip=$(echo $host_ip_name | tr -s ' ' | cut -f1 -d ' ')
   node_name=$(echo $host_ip_name | tr -s ' ' | cut -f2 -d ' ')
   echo $node_name $ip $hastate
done

它在我的集群中给了我这个结果

hn0-ha004.o0gzzt3sfaaeri0tmljgqkvvdc.cx.internal.chinacloudapp.cn 10.236.111.17 active
hn1-ha004.o0gzzt3sfaaeri0tmljgqkvvdc.cx.internal.chinacloudapp.cn 10.236.111.18 standby

相关问题