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.

Essas funções auxiliares ajudam você a:
  • 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.
Observação

  1. Você só pode executar essas funções helper a partir de um método predefinido no script Python.
  2. Python 2.7 é a versão python suportada no script Python.
  3. 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 PASSWORD e TEXT com o valor padrão como TEXT.

Por exemplo: helper.updateConfig(config_group="test", service_name="HDFS", config_type="core-site", config_properties={"fs.trash.interval": "400", "test.password":"XXXX"}, config_meta={"test.password": {"type":"PASSWORD"}})

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: helper.removeConfig(service_name="HDFS", config_type="core-site", config_name="fs.trash.interval")

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, getLogger().info("log info msg")

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:

  • método: Valores possíveis: GET, POST, PUT e DELETE.
  • caminho: Caminho relativo
  • payload: payload da solicitação Se houver
  • params: Solicitar parâmetros Se houver
  • cabeçalhos: Cabeçalhos de solicitação Se houver
JMX Remoto updateRemoteJmx(service_names=None, component_names_mapping=None, enable=True) Essa função auxiliar ativa ou desativa a métrica remoteJMX.
  • service_names: Lista opcional de serviços a serem ativados com remoteJMX, service_names mencionado em <remote-jmx-section>. Se nenhum valor for informado, a operação será aplicada a todos os serviços
  • service_to_components: Serviço Opcional para mapeamento de componentes. Se nenhum valor for informado, a operação será aplicada a todos os componentes dos serviços selecionados.
  • enable: Verdadeiro para ativar remoteJMX, Falso para desativar remoteJMX.
getRemoteJmxInfo() Esta função auxiliar retorna:
  • Mapa de serviço → componente → remoteJMX info
  • Esta função retorna apenas este mapeamento para serviços disponíveis na IU do Ambari.
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 Namenode(NN), ResourceM,anager(RM) e Zookeeper_Server.

Exemplo:

request_dict = {"NAMENODE": {
                "hosts": ["h1", "h2"]
                },
                "RESOURCEMANAGER": {
                "hosts": ["h1", "h2"]
                }}

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 Datanode e NodeManager.

Exemplo:

request_dict = {"DATANODE": {
                "hosts": ["h1", "h2"],
                "timeout_minutes": 30(default 30)
                },
                "NODEMANAGER": {
                "hosts": ["h1", "h2"]
                }}

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.

Exemplo: Script Python de bootstrap personalizado com funções auxiliares para atualizar configurações do Ambari no grupo de configuração Padrão
#!/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()
Exemplo: Script Python de bootstrap personalizado com funções helper para execução de comando shell
#!/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()
Exemplo: Configuração de script Python de bootstrap personalizado com tipo de senha na função helper updateConfig
#!/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() 
Exemplo: Script Python de bootstrap personalizado com funções auxiliares para adicionar novos componentes aos últimos hosts adicionados
#!/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)
Exemplo: Script Python de bootstrap personalizado com funções auxiliares para adicionar novos componentes à lista personalizada de hosts
#!/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)
Exemplo: Script Python de bootstrap personalizado com funções auxiliares para remover componentes da lista personalizada de hosts
#!/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)
Exemplo: Script Python de bootstrap personalizado com função helper para executar tipo de método, caminho e payload baseado na API REST do Ambari
#!/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))