Fonctions d'aide d'amorçage basées sur Python
Des fonctions d'aide au démarrage basées sur un script Python existent pour mettre à jour les configurations Ambari dans le service de mégadonnées.
- Mettre à jour la configuration d'un composant Hadoop dans la grappe
- Mettre à jour la configuration applicable à un hôte ou à un groupe d'hôtes particulier
- Obtenir la valeur de configuration et effectuer des actions en fonction de la valeur
- Exporter la configuration à partir d'un type de configuration (par exemple, HDFS
core-site.xml
) - Ajoutez des composants tels que Zookeeper, Namenode et Resource Manager aux noeuds principaux d'une grappe hautement disponible.
- Supprimez des composants tels que DataNode et NodeManager.
- Vous ne pouvez exécuter ces fonctions d'aide qu'à partir d'une méthode prédéfinie dans le script Python.
- Python 2.7 est la version python prise en charge dans le script Python.
- Vous devez gérer le script Python à vos propres risques, car il peut entraîner l'arrêt du microservice.
Pour exécuter un script d'amorçage, voir Exécution du script d'amorçage.
Pour plus d'informations sur les fonctions d'aide de script d'amorçage Python, voir :
Fonctions d'aide des scripts Python d'amorçage
Pour plus d'informations sur le script d'amorçage Python, voir Fonctions d'aide d'amorçage basées sur Python.
Pour des exemples de fonction d'aide d'amorçage basée sur Python, voir Exemples de script Python.
Pour exécuter un script d'amorçage, voir Exécution du script d'amorçage.
Catégorie | Fonction d'aide | Fonction |
---|---|---|
Groupes de configuration | createConfigGroup (service_name, hosts, config_group="Default") |
Cette fonction d'aide crée un groupe de configuration pour un service avec une liste d'hôtes. Vous devez indiquer service_name, la liste hosts et le nom config_group en tant qu'entrée. |
removeConfigGroup (service_name, config_group="Default") |
Cette fonction d'aide supprime le groupe de configuration d'un service. Vous devez fournir les noms service_name et config_group en tant qu'entrée. | |
addHostsInConfigGroup (service_name, hosts, config_group="Default" |
Cette fonction d'aide ajoute des hôtes au groupe de configuration dans un service avec une liste d'hôtes. Vous devez fournir service_name, la liste hosts et le nom config_group en tant qu'entrée. | |
removeHostsInConfigGroup (service_name, hosts, config_group="Default" |
Cette fonction d'aide supprime les hôtes du groupe de configuration d'un service avec une liste d'hôtes. Vous devez fournir service_name, la liste hosts et le nom config_group en tant qu'entrée. | |
listConfigGroups (service_name) |
Cette fonction d'aide affiche tous les groupes de configuration d'un service. Vous devez fournir service_name. | |
getHostsInConfigGroup (service_name, config_group="Default" |
Cette fonction d'aide affiche tous les hôtes dans config_group dans un service. Vous devez fournir config_group et service_name. | |
importConfigGroup (service_name, from_config_group, to_config_group) |
Cette fonction d'aide clone les configurations d'un groupe de configuration vers un autre groupe de configuration dans un service. Vous devez fournir from_config_group, to_config_group et service_name. | |
Configuration | updateConfig (service_name, config_type, config_properties, config_group="Default", config_meta={}) |
Cette fonction d'aide met à jour les propriétés de configuration au fichier config_type de config_group dans un service. Vous devez fournir un nom de service, config_type, config_properties, config_group et config_meta. Note : config_properties est un mappage de paires clé-valeur de configuration. config_meta est un mappage de clé de configuration et de métadonnées de configuration. Les valeurs de type possibles dans les métadonnées de configuration sont Par exemple : |
removeConfig (service_name, config_type, config_name, config_group="Default") |
Cette fonction d'aide supprime la configuration du fichier config_type de config_group dans un service. Vous devez fournir config_group, config_type, config_name et service_name. Par exemple : |
|
getConfig (service_name, config_type, config_name, config_group="Default") |
Cette fonction d'aide affiche la valeur de la propriété de configuration config_name dans le fichier config_type d'un config_group dans un service. Vous devez fournir config_group, config_type, config_name et service_name. | |
restartStaleConfig () |
Cette fonction d'aide redémarre les services où les configurations sont périmées. | |
exportConfig (service_name, config_type, config_group="Default") |
Cette fonction d'aide affiche toutes les configurations du fichier config_type de config_group dans un service. Vous devez fournir config_group, config_type et service_name. | |
Exécution de l'interpréteur de commandes | runShellCommandOnAllNodes (command) |
Cette fonction d'aide exécute la commande shell sur tous les noeuds du cluster. Vous devez fournir command. |
runShellCommandOnNode (command, host) |
Cette fonction d'aide exécute la commande shell sur l'hôte demandé. Vous devez fournir les valeurs command et host. | |
Services publics | getClusterName () |
Affiche le nom de la grappe. |
getMasterNodesIps () |
Affiche les noeuds principaux. | |
getWorkerNodesIps () |
Affiche les noeuds de travail. | |
getUtilityNodesIps () |
Affiche lps de noeud d'utilitaire. | |
getQueryServerNodesIps () |
Affiche lps des noeuds du serveur d'interrogation. | |
getComputeOnlyWorkerNodesIps () |
Affiche les noeuds de travail de calcul seulement. | |
getEdgeNodesIps () |
Affiche lps de noeud d'arête. | |
getAllNodesIps () |
Affiche lps de tous les noeuds. | |
getEventType () |
Affiche le type d'événement. Les valeurs de type d'événement possibles sont CreateBdsInstance , AddWorkerNodes , StartBdsInstance , ChangeShape , on-demand . |
|
getLogger () |
Cette fonction d'aide retourne l'instance de l'enregistreur automatique que vous pouvez utiliser pour journaliser les journaux d'informations et d'erreurs. Par exemple, |
|
get_last_added_host_names() |
Retourne la liste Python des noms d'hôte ajoutés lors de la dernière opération "Ajouter un noeud". Retourne Aucun, si aucun nouvel hôte n'est ajouté à la grappe. |
|
get_last_added_host_ips() |
Retourne la liste Python des adresses IP privées ajoutées dans les dernières opérations d'ajout de noeud. Retourne Aucun, si aucun nouvel hôte n'est ajouté à la grappe. |
|
executeAmbariFunc(method, path, payload=None, params=None, headers=None) |
Cette fonction d'aide exécute le type de méthode, le chemin et les données utiles basés sur l'API REST Ambari. Vous devez fournir method, path, payload(Si oui), params(Si oui) et headers. Paramètres :
|
|
JMX distant | updateRemoteJmx (service_names=None, component_names_mapping=None, enable=True) |
Cette fonction d'aide active ou désactive la mesure remoteJMX.
|
getRemoteJmxInfo () |
Cette fonction d'aide retourne :
|
|
Ajouter des composants | add_component_to_host(request_dict) |
Cette fonction prend un dictionnaire Python et ajoute des composants aux hôtes mentionnés dans le dictionnaire. Les composants pris en charge sont Exemple :
Attention : La prise en charge de NN et RM ne concerne que les grappes HA et les hôtes ayant des groupes de configuration par défaut. |
Supprimer des composants | remove_component_from_host(request_dict) |
Cette fonction utilise un dictionnaire Python et supprime les composants des hôtes mentionnés dans le dictionnaire avec des temporisations. Les composants pris en charge sont Exemple :
|
liste des noms de service pris en charge = [HDFS, YARN, MAPREDUCE2, TEZ, HIVE, OOZIE, ZOOKEEPER, AMBARI_METRICS, RANGER, HUE, KAFKA, KERBEROS, ODHUTILS, SPARK3, HBASE, TRINO, REGISTRY, FLINK, JUPYTERHUB]
liste des types d'événement pris en charge = ["CreateBdsInstance", "AddWorkerNodes", "StartBdsInstance", "ChangeShape"] type = ["PASSWORD", "TEXT"]
Exemples de scripts Python
Pour plus d'informations sur les fonctions d'aide de Python, voir Fonctions d'aide de script Python d'amorçage.
#!/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))