2017-12-16 27 views
0

Die python-ambariclient Bibliothek verfügt über eine API für die host_components Abrufen:Wie wird der Name Knoten Host-Name mit Ambari abgerufen?

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

Wie kann ich die name_node für einen IBM Analytics-Engine-Cluster extrahieren?

Ich glaube, ich brauche den Anruf zu tätigen:

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

, die folgenden Informationen abruft:

{ 
    "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" 
     } 
    } 
    ] 
} 

Antwort

0

Ich habe eine Bibliothek erstellt, um diese Informationen zu extrahieren. Installieren Sie mit:

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

Dann laufen:

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

Installieren Sie zuerst die python-ambariclient Bibliothek:

! pip install --quiet python-ambariclient 

Als nächst Sie kann Folgendes verwenden, um den Hostnamen des Knotens name abzurufen:

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) 
Verwandte Themen