2017-12-16 23 views
0

python-ambariclient 라이브러리는 host_components를 검색 API를 가지고 :Ambari를 사용하여 이름 노드 호스트 이름을 검색하는 방법은 무엇입니까?

ambari.services(service_name).components(component_name).host_components 

가 어떻게이 IBM 웹 로그 분석 엔진 클러스터에 대한 name_node을 추출 할 수 있습니다?

GET https://xxxx.bi.services.us-south.bluemix.net:9443/api/v1/clusters/AnalyticsEngine/services/HDFS/components/NAMENODE?fields=host_components 

다음과 같은 정보 검색 :

{ 
    "href" : "https://xxxx.bi.services.us-south.bluemix.net:9443/api/v1/clusters/AnalyticsEngine/services/HDFS/components/NAMENODE?fields=host_components", 
    "ServiceComponentInfo" : { 
    "cluster_name" : "AnalyticsEngine", 
    "component_name" : "NAMENODE", 
    "service_name" : "HDFS" 
    }, 
    "host_components" : [ 
    { 
     "href" : "https://xxxx.bi.services.us-south.bluemix.net:9443/api/v1/clusters/AnalyticsEngine/hosts/xxxx.bi.services.us-south.bluemix.net/host_components/NAMENODE", 
     "HostRoles" : { 
     "cluster_name" : "AnalyticsEngine", 
     "component_name" : "NAMENODE", 
     "host_name" : "xxxx.bi.services.us-south.bluemix.net" 
     } 
    } 
    ] 
} 

답변

0

이 정보를 추출하기위한 라이브러리를 만들었습니다. 하여 설치 : 다음

pip install --quiet --upgrade git+https://github.com/snowch/[email protected] 

것은 실행

from ibm_analytics_engine import AmbariOperations 
ambari_ops = AmbariOperations(vcap_filename='./vcap.json') 
ambari_ops.get_namenode_hostname() 
0

첫째, python-ambariclient 라이브러리 설치 :

는 내가 전화 할 필요가 있다고 생각

! pip install --quiet python-ambariclient 

다음, 당신 다음을 사용하여 이름 노드 호스트 이름을 검색 할 수 있습니다.

from future.standard_library import install_aliases 
install_aliases() 
from urllib.parse import urlparse 

import json 
vcap = json.load(open('./vcap.json')) 

USER   = vcap['cluster']['user'] 
PASSWORD  = vcap['cluster']['password'] 
AMBARI_URL = vcap['cluster']['service_endpoints']['ambari_console'] 
CLUSTER_ID = vcap['cluster']['cluster_id'] 

url = urlparse(AMBARI_URL) 

HOST = url.hostname 
PORT = url.port 
PROTOCOL = url.scheme 

from ambariclient.client import Ambari 
ambari = Ambari(HOST, port=PORT, username=USER, password=PASSWORD, protocol=PROTOCOL) 

CLUSTER_NAME = ambari.clusters.next().cluster_name # gets first cluster - there will only be one 

namenode_hc = ambari.clusters(CLUSTER_NAME).services('HDFS').components('NAMENODE').host_components 

namenode_host_name = [hc.host_name for hc in namenode_hc if hc.host_name][0] 

print(namenode_host_name)