Python-basierte Bootstrap-Helper-Funktionen
Python-skriptbasierte Bootstrap-Helper-Funktionen sind zum Aktualisieren von Ambari-Konfigurationen in Big Data Service vorhanden.
- Konfiguration einer Hadoop-Komponente im Cluster aktualisieren
- Aktualisieren der Konfiguration für einen bestimmten Host oder eine bestimmte Hostgruppe
- Rufen Sie den Konfigurationswert ab, und ergreifen Sie Maßnahmen basierend auf dem Wert
- Konfiguration aus einem Konfigurationstyp exportieren (Beispiel: HDFS
core-site.xml
) - Fügen Sie den Masterknoten in einem HA-Cluster Komponenten wie Zookeeper, Namenode und Resource Manager hinzu.
- Entfernen Sie Komponenten wie DataNode und NodeManager.
- Sie können diese Helper-Funktionen nur mit einer vordefinierten Methode im Python-Skript ausführen.
- Python 2.7 ist die unterstützte python-Version im Python-Skript.
- Sie müssen das Python-Skript auf eigene Gefahr verwalten, da es zum Herunterfahren des Microservice führen kann.
Informationen zum Ausführen eines Bootstrap-Skripts finden Sie unter Running the Bootstrap Script.
Weitere Informationen zu Python-Bootstrap-Skript-Helper-Funktionen finden Sie unter:
Bootstrap Python-Skript - Helper-Funktionen
Weitere Informationen zum Python-Bootstrap-Skript finden Sie unter Python-basierte Bootstrap-Helper-Funktionen.
Beispiele für Python-basierte Bootstrap-Helper-Funktionen finden Sie unter Python-Skriptbeispiele.
Informationen zum Ausführen eines Bootstrap-Skripts finden Sie unter Running the Bootstrap Script.
Kategorie | Helper-Funktion | Funktionalität |
---|---|---|
Konfigurationsgruppen | createConfigGroup (service_name, hosts, config_group="Default") |
Diese Helper-Funktion erstellt eine Konfigurationsgruppe für einen Service mit einer Liste von Hosts. Sie müssen den Namen service_name, die Liste von hosts und config_group als Eingabe angeben. |
removeConfigGroup (service_name, config_group="Default") |
Diese Helper-Funktion entfernt die Konfigurationsgruppe in einem Service. Sie müssen den Namen service_name und config_group als Eingabe angeben. | |
addHostsInConfigGroup (service_name, hosts, config_group="Default" |
Diese Helper-Funktion fügt Hosts zur Konfigurationsgruppe in einem Service mit einer Liste von Hosts hinzu. Sie müssen service_name, eine Liste von hosts und einen config_group-Namen als Eingabe angeben. | |
removeHostsInConfigGroup (service_name, hosts, config_group="Default" |
Diese Helper-Funktion entfernt Hosts in der Konfigurationsgruppe in einem Service mit einer Liste von Hosts. Sie müssen service_name, eine Liste von hosts und einen config_group-Namen als Eingabe angeben. | |
listConfigGroups (service_name) |
Diese Helper-Funktion zeigt alle Konfigurationsgruppen in einem Service an. Sie müssen service_name angeben. | |
getHostsInConfigGroup (service_name, config_group="Default" |
Diese Helper-Funktion zeigt alle Hosts in der config_group in einem Service an. Sie müssen config_group und service_name angeben. | |
importConfigGroup (service_name, from_config_group, to_config_group) |
Diese Helper-Funktion klont die Konfigurationen von einer Konfigurationsgruppe in eine andere Konfigurationsgruppe in einem Service. Sie müssen from_config_group, to_config_group und service_name angeben. | |
Konfiguration | updateConfig (service_name, config_type, config_properties, config_group="Default", config_meta={}) |
Diese Helper-Funktion aktualisiert die Konfigurationseigenschaften in der Datei config_type von config_group in einem Service. Sie müssen den Servicenamen config_type, config_properties, config_group und config_meta angeben. Hinweis: config_properties ist eine Zuordnung von Konfigurationsschlüssel- und Wertpaaren. config_meta ist eine Zuordnung von Konfigurationsschlüssel- und Konfigurationsmetadaten. Mögliche Typwerte in Konfigurationsmeta sind Beispiel: |
removeConfig (service_name, config_type, config_name, config_group="Default") |
Diese Helper-Funktion entfernt die Konfiguration aus der Datei config_type von config_group in einem Service. Sie müssen config_group, config_type, config_name und service_name angeben. Beispiel: |
|
getConfig (service_name, config_type, config_name, config_group="Default") |
Diese Helper-Funktion zeigt den Wert der Konfigurationseigenschaft config_name in der Datei config_type eines config_group in einem Service an. Sie müssen config_group, config_type, config_name und service_name angeben. | |
restartStaleConfig () |
Diese Helper-Funktion startet die Services neu, bei denen Konfigurationen veraltet sind. | |
exportConfig (service_name, config_type, config_group="Default") |
Diese Helper-Funktion zeigt alle Konfigurationen in der Datei config_type von config_group in einem Service an. Sie müssen config_group, config_type und service_name angeben. | |
Shellausführung | runShellCommandOnAllNodes (command) |
Diese Helper-Funktion führt den Shell-Befehl auf allen Clusterknoten aus. Sie müssen das command angeben. |
runShellCommandOnNode (command, host) |
Diese Helper-Funktion führt den Shell-Befehl auf dem angeforderten Host aus. Sie müssen command und host angeben. | |
Utility | getClusterName () |
Zeigt den Clusternamen an. |
getMasterNodesIps () |
Zeigt Masterknoten-LPS an. | |
getWorkerNodesIps () |
Zeigt Worker-Knoten-LPS an. | |
getUtilityNodesIps () |
Zeigt Utilityknoten-LPS an. | |
getQueryServerNodesIps () |
Zeigt Abfrageserverknoten-LPS an. | |
getComputeOnlyWorkerNodesIps () |
Zeigt reine Compute-Worker-Knoten-LPS an. | |
getEdgeNodesIps () |
Zeigt Edge-Knoten-LPS an. | |
getAllNodesIps () |
Zeigt alle Knoten-LPS an. | |
getEventType () |
Zeigt den Ereignistyp an. Mögliche Ereignistypwerte sind CreateBdsInstance , AddWorkerNodes , StartBdsInstance , ChangeShape , on-demand . |
|
getLogger () |
Diese Helper-Funktion gibt die Logger-Instanz zurück, mit der Sie Informationen und Fehlerlogs protokollieren können. Beispiel: |
|
get_last_added_host_names() |
Gibt die Python-Liste der Hostnamen zurück, die beim letzten Vorgang "Knoten hinzufügen" hinzugefügt wurden. Gibt "Keine" zurück, wenn dem Cluster keine neuen Hosts hinzugefügt werden. |
|
get_last_added_host_ips() |
Gibt die Python-Liste der privaten IPs zurück, die in den letzten "Knoten hinzufügen"-Vorgängen hinzugefügt wurden. Gibt "Keine" zurück, wenn dem Cluster keine neuen Hosts hinzugefügt werden. |
|
executeAmbariFunc(method, path, payload=None, params=None, headers=None) |
Mit dieser Helper-Funktion werden Typ, Pfad und Payload der Ambari-REST-API-basierten Methode ausgeführt. Sie müssen method, path, payload(sofern vorhanden), params(sofern vorhanden) und headers angeben. Parameter:
|
|
Remote-JMX | updateRemoteJmx (service_names=None, component_names_mapping=None, enable=True) |
Diese Helper-Funktion aktiviert oder deaktiviert die Metrik remoteJMX.
|
getRemoteJmxInfo () |
Diese Helper-Funktion gibt Folgendes zurück:
|
|
Komponenten hinzufügen | add_component_to_host(request_dict) |
Diese Funktion verwendet ein Python-Dictionary und fügt Komponenten zu den im Dictionary genannten Hosts hinzu. Unterstützte Komponenten sind Beispiel:
Achtung: Die Unterstützung für NN und RM gilt nur für HA-Cluster und für die Hosts mit Standardkonfigurationsgruppen. |
Komponenten entfernen | remove_component_from_host(request_dict) |
Diese Funktion verwendet ein Python-Wörterbuch und entfernt Komponenten aus den im Dictionary genannten Hosts mit Timeouts. Unterstützte Komponenten sind Beispiel:
|
Liste der unterstützten Servicenamen = [HDFS, YARN, MAPREDUCE2, TEZ, HIVE, OOZIE, ZOOKEEPER, AMBARI_METRICS, RANGER, HUE, KAFKA, KERBEROS, ODHUTILS, SPARK3, HBASE, TRINO, REGISTRY, FLINK, JUPYTERHUB]
Liste der unterstützten Ereignistypen = ["CreateBdsInstance", "AddWorkerNodes", "StartBdsInstance", "ChangeShape"] Typ = ["PASSWORD", "TEXT"]
Python-Skriptbeispiele
Weitere Informationen zu den Python-Helper-Funktionen finden Sie unter Bootstrap-Python-Skript-Helper-Funktionen.
#!/usr/bin/env python2.7
def execute(helper):
# custom logger
logger = helper.getLogger()
logger.info('Testing Config Helper functions')
# Update config_properties in the Default config group of config_type file core-site in service HDFS
helper.updateConfig(service_name="HDFS", config_type="core-site", config_properties={"fs.trash.interval": "400"})
# Remove config property from Default config group of config_type core-site
helper.removeConfig(service_name="HDFS", config_type="core-site", config_name="fs.trash.interval")
# Get config value from Default config group of config_type file core-site in service HDFS
config_value = helper.getConfig(service_name="HDFS", config_type="core-site", config_name="fs.trash.interval")
# Export configs from Default config group of config_type file core-site in service HDFS
helper.exportConfig(service_name="HDFS", config_type="core-site")
# Restart stale config
helper.restartStaleConfig()
#!/usr/bin/env python2.7
def execute(helper):
logger = helper.getLogger()
logger.info("Custom logger logs are available in '/var/logs/oracle/bds/bootstrap/' directory of mn0 node")
logger.info("Execute get utility nodes ips")
utility_node_ips = helper.getUtilityNodesIps()
logger.info("Execute shell command on utility node")
helper.runShellCommandOnNode(command='pwd', host=utility_node_ips[0])
logger.info("Execute shell command for on-demand event type")
event_type = helper.getEventType()
if event_type == "on-demand":
helper.runShellCommandOnNode(command='ls', host=utility_node_ips[0])
logger.info("Create config group test in service HDFS")
helper.createConfigGroup(config_group="test", service_name="HDFS", hosts=[])
logger.info("Add Worker nodes as hosts to above created config group test in service HDFS")
worker_node_ips = helper.getWorkerNodesIps()
helper.addHostsInConfigGroup(service_name="HDFS", hosts=worker_node_ips, config_group="test")
logger.info("Update config_properties in the config group test of config_type file core-site in service HDFS")
helper.updateConfig(config_group="test", service_name="HDFS", config_type="core-site",
config_properties={"fs.trash.interval": "400"})
logger.info("Restart stale configs")
helper.restartStaleConfig()
#!/usr/bin/env python2.7
def execute(helper):
logger = helper.getLogger()
logger.info("Executing getWorkerNodesIps")
worker_node_ips = helper.getWorkerNodesIps()
logger.info("Executing createConfigGroup")
helper.createConfigGroup(service_name="HDFS", config_group="testConfigGroup",
hosts=worker_node_ips)
logger.info("Executing updateConfigGroup")
helper.updateConfig(config_group="test", service_name="HDFS", config_type="core-site",
config_properties={"fs.trash.interval": "1000"})
logger.info("Executing updateConfig")
helper.updateConfig(service_name="HDFS", config_type="core-site", config_properties=
{"fs.trash.interval": "1000", "test.password": "TestPassword"}, config_meta={"test.password":
{"type":"PASSWORD"}})
logger.info("Executing restartStaleConfig")
helper.restartStaleConfig()
#!/usr/bin/env python2.7
def execute(helper):
# custom logger
logger = helper.getLogger()
logger.info('Testing Config Helper functions')
# Update config_properties in the Default config group of config_type file core-site in service HDFS
hosts = helper.get_last_added_host_names()
request_dict = {
"NAMENODE": {
"hosts": hosts
},
"RESOURCEMANAGER": {
"hosts": hosts
}
}
helper.add_component_to_host(request_dict)
#!/usr/bin/env python2.7
def execute(helper):
# custom logger
logger = helper.getLogger()
logger.info('Testing Config Helper functions')
# Update config_properties in the Default config group of config_type file core-site in service HDFS
request_dict = {
"NAMENODE": {
"hosts": ["hostname1", "hostname2"]
},
"RESOURCEMANAGER": {
"hosts": ["hostname2", "hostname3"]
}
}
helper.add_component_to_host(request_dict)
#!/usr/bin/env python2.7
def execute(helper):
# custom logger
logger = helper.getLogger()
logger.info('Testing Config Helper functions')
# Update config_properties in the Default config group of config_type file core-site in service HDFS
request_dict = {
"DATANODE": {
"hosts": ["hostname1", "hostname2"],
"timeout_minutes": 40#(in minutes)
},
"NODEMANAGER": {
"hosts": ["hostname2", "hostname3"],
"timeout_minutes": 40#(in minutes)
}
}
helper.remove_component_from_host(request_dict)
#!/usr/bin/env python2.7
def execute(helper):
logger = helper.getLogger()
logger.info("Executing executeAmbariFunc")
response = helper.executeAmbariFunc(method='GET', path='clusters/<cluster_name>/services/')
logger.info("response : " + str(response))