Funzioni di supporto bootstrap basate su Python
Esistono funzioni di applicazione di supporto bootstrap basate su script Python per aggiornare le configurazioni Ambari nel servizio Big Data.
- Aggiornare la configurazione di un componente Hadoop nel cluster
- Aggiornare la configurazione applicabile a un determinato host o gruppo di host
- Ottenere il valore di configurazione ed eseguire azioni in base al valore
- Esporta la configurazione da un tipo di configurazione (ad esempio, HDFS
core-site.xml
) - Aggiungere componenti quali Zookeeper, Namenode e Resource Manager ai nodi principali in un cluster HA.
- Rimuovere componenti quali DataNode e NodeManager.
- È possibile eseguire queste funzioni di supporto solo da un metodo predefinito nello script Python.
- Python 2.7 è la versione python supportata nello script Python.
- È necessario gestire lo script Python a proprio rischio perché può portare all'arresto dei microservizi.
Per eseguire uno script di bootstrap, vedere Esecuzione dello script di bootstrap.
Per ulteriori informazioni sulle funzioni di supporto degli script di bootstrap Python, vedere:
Funzioni di supporto per script Python Bootstrap
Per ulteriori informazioni sullo script bootstrap Python, vedere Funzioni di supporto bootstrap basate su Python.
Per esempi di funzioni di supporto del bootstrap basate su Python, vedere Esempi di script Python.
Per eseguire uno script di bootstrap, vedere Esecuzione dello script di bootstrap.
Categoria | Funzione helper | Funzionalità |
---|---|---|
Gruppi di configurazione | createConfigGroup (service_name, hosts, config_group="Default") |
Questa funzione di supporto crea un gruppo di configurazione per un servizio con una lista di host. È necessario fornire come input il nome service_name, l'elenco hosts e il nome config_group. |
removeConfigGroup (service_name, config_group="Default") |
Questa funzione di supporto rimuove il gruppo di configurazione in un servizio. È necessario fornire come input il nome service_name e config_group. | |
addHostsInConfigGroup (service_name, hosts, config_group="Default" |
Questa funzione di supporto aggiunge host al gruppo di configurazione in un servizio con una lista di host. È necessario fornire come input service_name, l'elenco di hosts e il nome config_group. | |
removeHostsInConfigGroup (service_name, hosts, config_group="Default" |
Questa funzione di supporto rimuove gli host nel gruppo di configurazione in un servizio con una lista di host. È necessario fornire come input service_name, l'elenco di hosts e il nome config_group. | |
listConfigGroups (service_name) |
Questa funzione di supporto visualizza tutti i gruppi di configurazione in un servizio. Devi inserire service_name. | |
getHostsInConfigGroup (service_name, config_group="Default" |
Questa funzione di supporto visualizza tutti gli host in config_group in un servizio. Voi dovete fornire config_group e service_name. | |
importConfigGroup (service_name, from_config_group, to_config_group) |
Questa funzione di supporto clona le configurazioni da un gruppo di configurazione a un altro gruppo di configurazione in un servizio. Dovete fornire from_config_group, to_config_group e service_name. | |
Configura | updateConfig (service_name, config_type, config_properties, config_group="Default", config_meta={}) |
Questa funzione di supporto aggiorna le proprietà di configurazione nel file config_type di config_group in un servizio. Dovete fornire i nomi dei Servizi, config_type, config_properties, config_group e config_meta. Nota: config_properties è una mappa di coppie chiave e valore di configurazione. config_meta è la mappa della chiave di configurazione e dei metadati di configurazione. I possibili valori di tipo nel meta della configurazione sono Ad esempio: |
removeConfig (service_name, config_type, config_name, config_group="Default") |
Questa funzione di supporto rimuove la configurazione dal file config_type di config_group in un servizio. Dovete fornire config_group, config_type, config_name e service_name. Ad esempio: |
|
getConfig (service_name, config_type, config_name, config_group="Default") |
Questa funzione di supporto visualizza il valore della proprietà di configurazione config_name nel file config_type di un file config_group in un servizio. Dovete fornire config_group, config_type, config_name e service_name. | |
restartStaleConfig () |
Questa funzione dell'applicazione di supporto riavvia i servizi in cui le configurazioni non sono più valide. | |
exportConfig (service_name, config_type, config_group="Default") |
Questa funzione di supporto visualizza tutte le configurazioni nel file config_type di config_group in un servizio. Dovete fornire config_group, config_type e service_name. | |
Esecuzione shell | runShellCommandOnAllNodes (command) |
Questa funzione helper esegue il comando shell su tutti i nodi del cluster. È necessario specificare command. |
runShellCommandOnNode (command, host) |
Questa funzione helper esegue il comando shell sull'host richiesto. Dovete fornire i valori command e host. | |
Utility | getClusterName () |
Visualizza il nome del cluster. |
getMasterNodesIps () |
Visualizza i nodi master lps. | |
getWorkerNodesIps () |
Visualizza i nodi di lavoro lps. | |
getUtilityNodesIps () |
Visualizza lps del nodo utility. | |
getQueryServerNodesIps () |
Visualizza i nodi del server di query lps. | |
getComputeOnlyWorkerNodesIps () |
Visualizza i secondi dei nodi di lavoro solo di computazione. | |
getEdgeNodesIps () |
Visualizza ips del nodo perimetrale. | |
getAllNodesIps () |
Visualizza tutti i nodi lps. | |
getEventType () |
Visualizza il tipo di evento. I valori possibili per il tipo di evento sono CreateBdsInstance , AddWorkerNodes , StartBdsInstance , ChangeShape , on-demand . |
|
getLogger () |
Questa funzione di supporto restituisce l'istanza del logger che è possibile utilizzare per registrare le informazioni e i log degli errori. Ad esempio, |
|
get_last_added_host_names() |
Restituisce la lista Python dei nomi host aggiunti nell'ultima operazione "Aggiungi nodo". Restituisce Nessuno se non vengono aggiunti nuovi host al cluster. |
|
get_last_added_host_ips() |
Restituisce la lista Python degli IP privati aggiunti nelle ultime operazioni "Aggiungi nodo". Restituisce Nessuno se non vengono aggiunti nuovi host al cluster. |
|
executeAmbariFunc(method, path, payload=None, params=None, headers=None) |
Questa funzione di supporto esegue il tipo di metodo, il percorso e il payload basati sull'API REST Ambari. Dovete fornire method, path, payload(If Any), params(If Any) e headers. Parameters:
|
|
JMX remoto | updateRemoteJmx (service_names=None, component_names_mapping=None, enable=True) |
Questa funzione di supporto abilita o disabilita la metrica remoteJMX.
|
getRemoteJmxInfo () |
Questa funzione di supporto restituisce:
|
|
Aggiungere i componenti | add_component_to_host(request_dict) |
Questa funzione accetta un dizionario Python e aggiunge componenti agli host menzionati nel dizionario. I componenti supportati sono Esempio:
Attenzione: il supporto per NN e RM è riservato solo ai cluster HA e agli host con gruppi di configurazione predefiniti. |
Rimuovi componenti | remove_component_from_host(request_dict) |
Questa funzione accetta un dizionario Python e rimuove i componenti dagli host menzionati nel dizionario con timeout. I componenti supportati sono Esempio:
|
elenco dei nomi di servizio supportati = [HDFS, YARN, MAPREDUCE2, TEZ, HIVE, OOZIE, ZOOKEEPER, AMBARI_METRICS, RANGER, HUE, KAFKA, KERBEROS, ODHUTILS, SPARK3, HBASE, TRINO, REGISTRY, FLINK, JUPYTERHUB]
elenco dei tipi di evento supportati = ["CreateBdsInstance", "AddWorkerNodes", "StartBdsInstance", "ChangeShape"] tipo = ["PASSWORD", "TEXT"]
Esempi di script Python
Per ulteriori informazioni sulle funzioni dell'applicazione di supporto Python, vedere Funzioni dell'applicazione di supporto per gli script Python Bootstrap.
#!/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))