Funciones auxiliares de inicialización de datos basadas en Python
Existen funciones de ayuda de inicialización de datos basadas en script Python para actualizar las configuraciones de Ambari en Big Data Service.
- Actualizar la configuración de un componente de Hadoop en el cluster
- Actualizar la configuración aplicable a un host o grupo de hosts determinado
- Obtener el valor de configuración y realizar acciones basadas en el valor
- Exportar configuración de un tipo de configuración (por ejemplo, HDFS
core-site.xml
) - Agregue componentes como Zookeeper, Namenode y Resource Manager a los nodos maestros de un cluster de HA.
- Elimine componentes como DataNode y NodeManager.
- Puede ejecutar estas funciones auxiliares solo desde un método predefinido en el script de Python.
- Python 2.7 es la versión de python soportada en el script de Python.
- Debe gestionar el script de Python bajo su propio riesgo porque puede provocar el cierre del microservicio.
Para ejecutar una secuencia de comandos de inicialización de datos, consulte Running the Bootstrap Script.
Para obtener más información sobre las funciones auxiliares del script de inicialización de datos de Python, consulte:
Funciones del asistente de script de Python de inicialización de datos
Para obtener más información sobre el script de inicialización de datos de Python, consulte Funciones de ayuda de inicialización de datos basadas en Python.
Para ver ejemplos de funciones de ayuda de inicialización de datos basadas en Python, consulte Ejemplos de scripts de Python.
Para ejecutar una secuencia de comandos de inicialización de datos, consulte Running the Bootstrap Script.
categoría | Función Helper | Funcionalidad |
---|---|---|
Grupos de configuración | createConfigGroup (service_name, hosts, config_group="Default") |
Esta función auxiliar crea un grupo de configuración para un servicio con una lista de hosts. Debe proporcionar el nombre service_name, la lista de hosts y config_group como entrada. |
removeConfigGroup (service_name, config_group="Default") |
Esta función auxiliar elimina el grupo de configuración en un servicio. Debe proporcionar el nombre service_name y config_group como entrada. | |
addHostsInConfigGroup (service_name, hosts, config_group="Default" |
Esta función auxiliar agrega hosts al grupo de configuración de un servicio con una lista de hosts. Debe proporcionar service_name, una lista de hosts y un nombre de config_group como entrada. | |
removeHostsInConfigGroup (service_name, hosts, config_group="Default" |
Esta función auxiliar elimina los hosts del grupo de configuración en un servicio con una lista de hosts. Debe proporcionar service_name, una lista de hosts y un nombre de config_group como entrada. | |
listConfigGroups (service_name) |
Esta función auxiliar muestra todos los grupos de configuración de un servicio. Debe proporcionar service_name. | |
getHostsInConfigGroup (service_name, config_group="Default" |
Esta función auxiliar muestra todos los hosts de config_group en un servicio. Vd. debe proporcionar config_group y service_name. | |
importConfigGroup (service_name, from_config_group, to_config_group) |
Esta función auxiliar clona las configuraciones de un grupo de configuración a otro grupo de configuración en un servicio. Vd. debe proporcionar from_config_group, to_config_group y service_name. | |
Configuración | updateConfig (service_name, config_type, config_properties, config_group="Default", config_meta={}) |
Esta función auxiliar actualiza las propiedades de configuración al archivo config_type de config_group en un servicio. Vd. debe proporcionar el nombre del Servicio, config_type, config_properties, config_group y config_meta. Nota: config_properties es una asignación de pares de clave y valor de configuración. config_meta es una asignación de la clave de configuración y los metadatos de configuración. Los valores de tipo posibles en el meta de configuración son Por ejemplo: |
removeConfig (service_name, config_type, config_name, config_group="Default") |
Esta función auxiliar elimina la configuración del archivo config_type de config_group en un servicio. Vd. debe proporcionar config_group, config_type, config_name y service_name. Por ejemplo: |
|
getConfig (service_name, config_type, config_name, config_group="Default") |
Esta función auxiliar muestra el valor de la propiedad de configuración config_name en el archivo config_type de un config_group en un servicio. Vd. debe proporcionar config_group, config_type, config_name y service_name. | |
restartStaleConfig () |
Esta función auxiliar reinicia los servicios en los que las configuraciones están anticuadas. | |
exportConfig (service_name, config_type, config_group="Default") |
Esta función auxiliar muestra todas las configuraciones en el archivo config_type de config_group en un servicio. Vd. debe proporcionar config_group, config_type y service_name. | |
Ejecución de shell | runShellCommandOnAllNodes (command) |
Esta función auxiliar ejecuta el comando de shell en todos los nodos del cluster. Debe proporcionar command. |
runShellCommandOnNode (command, host) |
Esta función auxiliar ejecuta el comando shell en el host solicitado. Vd. debe proporcionar command y host. | |
Servicios públicos | getClusterName () |
Muestra el nombre del cluster. |
getMasterNodesIps () |
Muestra los nodos maestros lps. | |
getWorkerNodesIps () |
Muestra los nodos de trabajador lps. | |
getUtilityNodesIps () |
Muestra lps de nodo de utilidad. | |
getQueryServerNodesIps () |
Muestra los nodos del servidor de consultas lps. | |
getComputeOnlyWorkerNodesIps () |
Muestra lps de nodo de trabajador solo de cálculo. | |
getEdgeNodesIps () |
Muestra lps de nodo de borde. | |
getAllNodesIps () |
Muestra todos los lps de los nodos. | |
getEventType () |
Muestra el tipo de evento. Los posibles valores de tipo de evento son CreateBdsInstance , AddWorkerNodes , StartBdsInstance , ChangeShape , on-demand . |
|
getLogger () |
Esta función auxiliar devuelve la instancia del registrador que puede utilizar para registrar la información y los logs de errores. Por ejemplo, |
|
get_last_added_host_names() |
Devuelve la lista de Python de nombres de host agregados en la última operación "Add Node". Devuelve None (Ninguno), si no se agrega ningún host nuevo al cluster. |
|
get_last_added_host_ips() |
Devuelve la lista de Python de IP privadas agregadas en las últimas operaciones "Add Node". Devuelve None (Ninguno), si no se agrega ningún host nuevo al cluster. |
|
executeAmbariFunc(method, path, payload=None, params=None, headers=None) |
Esta función auxiliar ejecuta el tipo de método, la ruta y la carga útil basados en la API de REST de Ambari. Vd. deberá proporcionar method, path, payload(Si corresponde), params(Si corresponde) y headers. Parámetros:
|
|
JMX remoto | updateRemoteJmx (service_names=None, component_names_mapping=None, enable=True) |
Esta función auxiliar activa o desactiva la métrica remoteJMX.
|
getRemoteJmxInfo () |
Esta función auxiliar devuelve:
|
|
Agregar Componentes | add_component_to_host(request_dict) |
Esta función toma un diccionario de Python y agrega componentes a los hosts mencionados en el diccionario. Los componentes soportados son Ejemplo:
Precaución: la compatibilidad con NN y RM solo es para clusters de alta disponibilidad y para los hosts que tienen grupos de configuración predeterminados. |
Eliminar componentes | remove_component_from_host(request_dict) |
Esta función toma un diccionario de Python y elimina los componentes de los hosts mencionados en el diccionario con timeouts. Los componentes soportados son Ejemplo:
|
lista de nombres de servicio admitidos = [HDFS, YARN, MAPREDUCE2, TEZ, HIVE, OOZIE, ZOOKEEPER, AMBARI_METRICS, RANGER, HUE, KAFKA, KERBEROS, ODHUTILS, SPARK3, HBASE, TRINO, REGISTRY, FLINK, JUPYTERHUB]
lista de tipos de eventos admitidos = ["CreateBdsInstance", "AddWorkerNodes", "StartBdsInstance", "ChangeShape"] tipo = ["PASSWORD", "TEXT"]
Ejemplos de scripts de Python
Para obtener más información sobre las funciones auxiliares de Python, consulte Funciones auxiliares de script de Python de inicialización de datos.
#!/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))