Funções Auxiliares de Bootstrap Baseadas em Python
Existem funções auxiliares de bootstrap baseadas em script Python para atualizar configurações Ambari no Big Data Service.
- Atualizar a configuração de um componente do Hadoop no cluster
- Atualizar a configuração aplicável a um host ou grupo de hosts específico
- Obter o valor de configuração e executar ações com base no valor
- Exportar configuração de um tipo de configuração (por exemplo, HDFS
core-site.xml
) - Adicione componentes como Zookeeper, Namenode e Resource Manager aos nós mestres em um cluster HA.
- Remova componentes como DataNode e NodeManager.
- Você só pode executar essas funções helper a partir de um método predefinido no script Python.
- Python 2.7 é a versão python suportada no script Python.
- Você deve gerenciar o script Python por sua conta e risco, pois ele pode fazer com que o microsserviço seja encerrado.
Para executar um script de inicialização, consulte Running the Bootstrap Script.
Para obter mais informações sobre funções auxiliares de script de inicialização Python, consulte:
Funções do Auxiliar de Script Python de Inicialização
Para obter mais informações sobre o script de bootstrap do Python, consulte Funções Auxiliares de Bootstrap Baseado em Python.
Para obter exemplos de funções helper bootstrap baseadas em Python, consulte Exemplos de Scripts Python.
Para executar um script de inicialização, consulte Running the Bootstrap Script.
Categoria | Função Auxiliar | Funcionalidade |
---|---|---|
Grupos de Configuração | createConfigGroup (service_name, hosts, config_group="Default") |
Esta função auxiliar cria um grupo de configurações para um serviço com uma lista de hosts. Você deve fornecer o nome service_name, a lista de hosts e config_group como entrada. |
removeConfigGroup (service_name, config_group="Default") |
Esta função auxiliar remove o grupo de configuração em um serviço. Você deve fornecer o nome service_name e config_group como entrada. | |
addHostsInConfigGroup (service_name, hosts, config_group="Default" |
Esta função auxiliar adiciona hosts ao grupo de configuração em um serviço com uma lista de hosts. Você deve fornecer service_name, lista de hosts e nome config_group como entrada. | |
removeHostsInConfigGroup (service_name, hosts, config_group="Default" |
Esta função auxiliar remove hosts para o grupo de configuração em um serviço com uma lista de hosts. Você deve fornecer service_name, lista de hosts e nome config_group como entrada. | |
listConfigGroups (service_name) |
Esta função auxiliar exibe todos os grupos de configuração em um serviço. Você deve fornecer service_name. | |
getHostsInConfigGroup (service_name, config_group="Default" |
Essa função auxiliar exibe todos os hosts no config_group em um serviço. Você deve fornecer config_group e service_name. | |
importConfigGroup (service_name, from_config_group, to_config_group) |
Esta função auxiliar clona as configurações de um grupo de configuração para outro grupo de configuração em um serviço. Você deve fornecer from_config_group, to_config_group e service_name. | |
Configuração | updateConfig (service_name, config_type, config_properties, config_group="Default", config_meta={}) |
Essa função auxiliar atualiza as propriedades de configuração para o arquivo config_type do config_group em um serviço. Você deve fornecer o nome do serviço, config_type, config_properties, config_group e config_meta. Observação: config_properties é um mapa de pares de chave e valor de configuração. config_meta é o mapa da chave de configuração e dos metadados de configuração. Os valores de tipo possíveis no meta de configuração são Por exemplo: |
removeConfig (service_name, config_type, config_name, config_group="Default") |
Essa função auxiliar remove a configuração do arquivo config_type do config_group em um serviço. Você deve fornecer config_group, config_type, config_name e service_name. Por exemplo: |
|
getConfig (service_name, config_type, config_name, config_group="Default") |
Essa função auxiliar exibe o valor da propriedade de configuração config_name no arquivo config_type de uma config_group em um serviço. Você deve fornecer config_group, config_type, config_name e service_name. | |
restartStaleConfig () |
Essa função auxiliar reinicia os serviços em que as configurações estão desatualizadas. | |
exportConfig (service_name, config_type, config_group="Default") |
Essa função auxiliar exibe todas as configurações no arquivo config_type do config_group em um serviço. Você deve fornecer config_group, config_type e service_name. | |
Execução do shell | runShellCommandOnAllNodes (command) |
Esta função auxiliar executa o comando shell em todos os nós do cluster. Você deve fornecer o command. |
runShellCommandOnNode (command, host) |
Esta função auxiliar executa o comando shell no host solicitado. Você deve fornecer command e host. | |
Utilitário | getClusterName () |
Exibe o nome do cluster. |
getMasterNodesIps () |
Exibe os nós principais lps. | |
getWorkerNodesIps () |
Exibe os nós de trabalho lps. | |
getUtilityNodesIps () |
Exibe lps do nó do utilitário. | |
getQueryServerNodesIps () |
Exibe lps de nós do servidor de consulta. | |
getComputeOnlyWorkerNodesIps () |
Exibe somente lps do nó de trabalho de computação. | |
getEdgeNodesIps () |
Exibe lps do nó de Borda. | |
getAllNodesIps () |
Exibe todos os nós lps. | |
getEventType () |
Exibe o tipo de evento. Os valores possíveis do tipo de evento são CreateBdsInstance , AddWorkerNodes , StartBdsInstance , ChangeShape , on-demand . |
|
getLogger () |
Essa função auxiliar retorna a instância do logger que você pode usar para registrar informações e logs de erro. Por exemplo, |
|
get_last_added_host_names() |
Retorna a lista Python de nomes de host adicionados na última operação "Adicionar Nó". Retorna Nenhum, se nenhum novo host for adicionado ao cluster. |
|
get_last_added_host_ips() |
Retorna a lista Python de IPs privados adicionados nas últimas operações "Adicionar Nó". Retorna Nenhum, se nenhum novo host for adicionado ao cluster. |
|
executeAmbariFunc(method, path, payload=None, params=None, headers=None) |
Esta função auxiliar executa o tipo de método, o caminho e a carga útil baseados na API REST do Ambari. Você deve fornecer method, path, payload(Se Houver), params(Se Houver) e headers. Parâmetros:
|
|
JMX Remoto | updateRemoteJmx (service_names=None, component_names_mapping=None, enable=True) |
Essa função auxiliar ativa ou desativa a métrica remoteJMX.
|
getRemoteJmxInfo () |
Esta função auxiliar retorna:
|
|
Adicionar componentes | add_component_to_host(request_dict) |
Esta função usa um dicionário Python e adiciona componentes aos hosts mencionados no dicionário. Os componentes suportados são Exemplo:
Cuidado: O suporte para NN e RM é apenas para clusters HA e para os hosts que têm grupos de configuração padrão. |
Remover componentes | remove_component_from_host(request_dict) |
Essa função usa um dicionário Python e remove componentes dos hosts mencionados no dicionário com timeouts. Os componentes suportados são Exemplo:
|
lista de nomes de serviço suportados = [HDFS, YARN, MAPREDUCE2, TEZ, HIVE, OOZIE, ZOOKEEPER, AMBARI_METRICS, RANGER, HUE, KAFKA, KERBEROS, ODHUTILS, SPARK3, HBASE, TRINO, REGISTRY, FLINK, JUPYTERHUB]
lista de tipos de evento suportados = ["CreateBdsInstance", "AddWorkerNodes", "StartBdsInstance", "ChangeShape"] tipo = ["PASSWORD", "TEXT"]
Exemplos de Script Python
Para obter mais informações sobre as funções helper do Python, consulte Funções Helper do Script Python do 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))