Especificando configurações adicionais para Analytics Engine powered by Apache Spark

Um administrador de instância pode especificar configurações adicionais para Analytics Engine powered by Apache Spark.

Você pode definir configurações adicionais, além das padrão, como parte das etapas pós-instalação.

Configurações de nível de serviço

As seguintes especificações são opcionais e podem ser alteradas para modificar as configurações do nível de serviço:

serviceConfig:
  schedulerForQuotaAndQueuing: "ibm-cpd-scheduler"
  sparkAdvEnabled: true                  
  jobAutoDeleteEnabled: true             
  kernelCullTime: 30                     
  imagePullCompletions: 20               
  imagePullParallelism: "40"             
  kernelCleanupSchedule: "*/30 * * * *"  
  jobCleanupSchedule: "*/30 * * * *"     
  skipSELinuxRelabeling: false           
  mountCustomizationsFromCCHome: false   
  enableRemoteDataplane: false   
  enableRuntimeSslMode: true
Propriedade Descrição
schedulerForQuotaAndQueuing Defina o agendador para os recursos de cota de recursos e enfileiramento.
Valores válidos
ibm-cpd-scheduler
Este é o agendador compatível.
sparkAdvEnabled Especifique se deseja exibir a interface do usuário do trabalho.
Valor Padrão
true
Valores válidos
false
Não exiba a interface do usuário do trabalho.
true
Exiba a interface do usuário do trabalho.
jobAutoDeleteEnabled Especifique se deseja excluir automaticamente os trabalhos após eles atingirem um estado terminal, como FINISHED ou FAILED. O padrão é true.
Valor Padrão
true
Valores válidos
true
Exclua os trabalhos após eles atingirem um estado terminal.
false
Manter os trabalhos após atingirem um estado terminal.
kernelCullTime O tempo, em minutos, durante o qual os kernels ociosos são mantidos.
Valor Padrão
30
Valores válidos
Um número inteiro maior que 0.
imagePullCompletions O número de pods programados para extrair a Spark imagem em paralelo.

Por exemplo, se você tiver 100 nós no cluster, defina:

  • analyticsengine_image_pull_completions: "100"
  • analyticsengine_image_pull_parallelism: "150"

Neste exemplo, pelo menos 100 nós irão baixar a imagem com sucesso, com 150 pods baixando a imagem em paralelo.

Valor Padrão
"40"
Valores válidos
Um número inteiro maior ou igual a 1.

Aumente esse valor apenas se você tiver um cluster muito grande e largura de banda de rede e E/S de disco suficientes para suportar mais puxadas em paralelo.

kernelCleanupSchedule O número de pods que devem ser concluídos para que a tarefa de extração de imagem seja concluída.

Por exemplo, se você tiver 100 nós no cluster, defina:

  • analyticsengine_image_pull_completions: "100"
  • analyticsengine_image_pull_parallelism: "150"

Neste exemplo, pelo menos 100 nós irão baixar a imagem com sucesso, com 150 pods baixando a imagem em paralelo.

Valor Padrão
"20"
Valores válidos
Um número inteiro maior ou igual a 1.

Aumente esse valor apenas se você tiver um cluster muito grande e largura de banda de rede e E/S de disco suficientes para suportar mais puxadas em paralelo.

jobCleanupSchedule Substitua a analyticsengine_kernel_cull_time configuração para a limpeza do kernel CronJob.

Por padrão, a limpeza do kernel CronJob é executada a cada 30 minutos.

Valor Padrão
"*/30 * * * *"
Valores válidos
Uma string que usa a CronJob sintaxe de programação.
skipSELinuxRelabeling Especifique se deseja ignorar a SELinux reclassificação.

Para usar esse recurso, você deve criar as definições RuntimeClass necessárias MachineConfig . Para obter mais informações, consulte Ativação MachineConfig e RuntimeClass definições para determinadas propriedades.

Valor Padrão
false
Valores válidos
false
Não pule a SELinux etapa de reetiquetagem.
true
Ignore a SELinux reetiquetagem.
mountCustomizationsFromCCHome Especifique se deseja ativar drivers personalizados. Esses drivers precisam ser montados a partir do cc-home-pvc diretório.

Common core servicesEste recurso está disponível apenas quando os Cloud Pak for Data common core services são instalados.

Valor Padrão
false
Valores válidos
false
Você não deseja usar drivers personalizados.
true
Você deseja habilitar drivers personalizados.
enableRemoteDataplane

Especifique se deseja habilitar o plano de dados remoto. Para usar esse recurso, defina enableRemoteDataplane como verdadeiro.

Valor Padrão
false
Valores válidos
false
O recurso de plano de dados remoto será desativado.
true
O recurso de plano de dados remoto será ativado.
enableRuntimeSslMode

Especifique se deseja ativar o modo SSL. Para desativar esse recurso, defina enableRuntimeSslMode como falso.

Valor Padrão
true
Valores válidos
false
O recurso SSL será desativado.
true
O recurso SSL será ativado.

Para obter mais informações sobre como configurar as propriedades, consulte Administração.

Configurações no nível do tempo de execução

As seguintes especificações são opcionais e podem ser alteradas para modificar as configurações Analytics Engine powered by Apache Spark do nível de tempo de execução:

sparkRuntimeConfig:                   
  maxDriverCpuCores: 5                         # If you want to create Spark jobs with drive CPUs more than 5, set this value accordingly 
  maxExecutorCpuCores: 5                       # If you want to create Spark jobs with more than 5 CPU per Executor, set this value accordingly
  maxDriverMemory: "50g"                       # If you want to create Spark jobs with Drive Memory more than 50g, set this value accordingly 
  maxExecutorMemory: "50g"                     # If you want to create Spark jobs with more than 50g Memory per Executor, set this value accordingly
  maxNumWorkers: 50                            # If you want to create Spark jobs with more than 50 workers/executors, set this value accordingly
  localDirScaleFactor: 10                      # If you want to increase local disk space for your Spark jobs, set this value accordingly.

Configurações no nível da instância do serviço

As especificações a seguir são opcionais e podem ser alteradas para mudar as configurações de nível de instância de serviços. Cada instância Analytics Engine powered by Apache Spark de serviço possui uma cota de recursos (CPU/memória) definida por padrão. Isso pode ser mudado por meio da API para uma instância, mas para mudar os valores padrão para a criação de qualquer nova instância, atualize os valores a seguir.

serviceInstanceConfig:                   
  defaultCpuQuota: 20                       # defaultCpuQuota is the accumulative CPU consumption of Spark jobs created under an instance. It can be no more than 20 
  defaultMemoryQuota: 80                    # defaultMemoryQuota is the accumulative memory consumption of Spark jobs created under an instance. It can be no more than 80 gigabytes.
As configurações a seguir são para tarefas e kernels no nível Analytics Engine powered by Apache Spark do serviço. O administrador do serviço pode especificar determinadas configurações no nível Analytics Engine do serviço, que serão aplicadas a todos os trabalhos e kernels Spark enviados para ele. Para isso, você pode especificar as configurações, em sparkDefaults na spec seção do recurso Analytics Engine powered by Apache Spark personalizado (CR):

    sparkDefaults:
      mutableConfigs:
        spark.ui.requestheadersize: 12k
      immutableConfigs:
        ae.kernel.idle_timeout: 1000
mutableConfigs
Os parâmetros de configuração nesta seção são especificados por um administrador e podem ser substituídos para uma tarefa ou kernel específico.
immutableConfigs
Os parâmetros de configuração nesta seção são especificados por um administrador e não podem ser substituídos para uma tarefa ou kernel específico.
Como alternativa, você também pode corrigir o CR após sua criação, executando:
oc patch ae/analyticsengine-sample -p '{"spec": {"sparkDefaults":{"mutableConfigs":{"spark.ui.requestheadersize": "12k"}, "immutableConfigs":{"ae.kernel.idle_timeout":"1000"}}}}' --type=merge -n <cpd_instance_ns>
Tabela 1. Analytics Engine powered by Apache Spark Descrição do recurso personalizado
Propriedade Descrição Tipo Especificação para arquivos.yml
spec.scaleConfig Valores possíveis: Pequeno, Médio ou Grande.

Padrão: Pequeno

Sequência (parâmetro Choice) N/D
spec.serviceConfig Para mudar configurações de nível de serviço. Objeto N/D
spec.serviceConfig.schedulerForQuotaAndQueuing Defina o programador para as funcionalidades de quota de recursos e enfileiramento. O agendador compatível é ibm-cpd-scheduler. Sequência N/D
spec.serviceConfig.sparkAdvEnabled Esta bandeira ativará ou desativará os recursos da interface do usuário Analytics Engine powered by Apache Spark do trabalho.

Padrão: false

Booleano mecanismo de análise_spark_avançado_ativado
spec.serviceConfig.jobAutoDeleteEnabled Configure como false se não desejar remover tarefas quando elas tiverem atingido estados terminais. Por exemplo, FINISHED/FAILED.

Padrão: Verdadeiro

Booleano analyticsengine_job_auto_delete_enabled
spec.serviceConfig.kernelCullTime Mude o valor para minutos se desejar remover o kernel inativo após X minutos.

Padrão: 30

Número Inteiro analyticsengine_kernel_cull_time
spec.serviceConfig.imagePullCompletions Se você tiver um grande cluster Openshift, poderá atualizar imagePullCompletions e imagePullParallelism de forma apropriada.

Padrão: 20

Número Inteiro mecanismo_de_análise_imagem_conclusões
spec.serviceConfig.imagePullParallelism Se você tiver 100 nós no cluster, configure imagePullCompletions: "100" e imagePullParallelism: "150".

Padrão: 40

Número Inteiro motor_de_análise_imagem_puxar_paralelismo
spec.serviceConfig.kernelCleanupSchedule Por padrão, as tarefas cron de limpeza de kernel e de tarefas procuram kernels/tarefas inativos do Spark com base no parâmetro kernelCullTime. Se quiser uma limpeza menos ou mais agressiva, mude o valor de forma apropriada. Por exemplo, para 1 hora "* */1 * * *", formato k8s.

Padrão: “*/30 * * * *”

Sequência agendamento de limpeza do kernel do mecanismo de análise
spec.serviceConfig.jobCleanupSchedule Por padrão, as tarefas cron de limpeza de kernel e de tarefas procuram kernels/tarefas inativos do Spark com base no parâmetro kernelCullTime. Se quiser uma limpeza menos ou mais agressiva, mude o valor de forma apropriada. Por exemplo, para 1 hora "* */1 * * *", formato k8s.

Padrão: “*/30 * * * *”

Sequência agendamento_limpeza_tarefa_mecanismo_análise
spec.serviceConfig.skipSELinuxRelabeling Defina o valor como verdadeiro para ignorar a reclassificação do SELinux.

Padrão: false

Pré-requisito:
Booleano mecanismo_de_análise_ignorar_relabeling_selinux
spec.serviceConfig.mountCustomizationsFromCCHome Defina o valor como verdadeiro para montar personalizações do CCHome.

Padrão: false

Pré-requisito:
  • Os serviços Common-Core-Services devem ser instalados.
Booleano analyticsengine_mount_customizations_from_cchome
spec.sparkRuntimeConfig Mude as configurações de nível de tempo de execução do Spark. Objeto N/D
spec.sparkRuntimeConfig.maxDriverCpuCores Número máximo de CPUs do driver.

Padrão: 5

Número Inteiro número_máximo_de_núcleos_de_CPU_do_driver_do_motor_de_análise
spec.sparkRuntimeConfig.maxExecutorCpuCore Número máximo de CPUs do executor.

Padrão: 5

Número Inteiro núcleos_de_CPU_máximos_do_executor_do_motor_de_análise
spec.sparkRuntimeConfig.maxDriverMemory Máximo de memória do driver em gigabytes.

Padrão: 50g

Sequência memória máxima do driver do mecanismo de análise
spec.sparkRuntimeConfig.maxExecutorMemory Máximo de memória do executor em gigabytes.

Padrão: 50g

Sequência memória máxima do executor do mecanismo de análise
spec.sparkRuntimeConfig.maxNumWorkers Número máximo de trabalhadores/executores.

Padrão: 50

Número Inteiro número_máximo_de_trabalhadores_do_mecanismo_de_análise
spec.sparkRuntimeConfig.localDirScaleFactor

O tamanho do disco temporário no em Spark principal/trabalhador é um fator do número de CPU.

temp_disk_space = numCpu * localDirScaleFactor

Padrão: 10

Número Inteiro fator_de_escala_do_diretório_local_do_mecanismo_de_análise
spec.serviceInstanceConfig Configurações de nível de instância de serviço. Cada instância Analytics Engine powered by Apache Spark de serviço possui uma cota de recursos (CPU/memória) definida por padrão. Isso pode ser mudado usando a API para uma instância, mas para mudar os valores padrão para qualquer nova instância, atualize serviceInstanceConfig. Objeto N/D
spec.serviceInstanceConfig.defaultCpuQuota defaultCpuQuota é o consumo acumulativo de CPU de tarefas do Spark criadas. Em uma instância, o consumo de CPU não pode ser maior que 20.

Padrão: 20

Número Inteiro quota_padrão_da_CPU_do_mecanismo_de_análise
spec.serviceInstanceConfig.defaultMemoryQuota defaultCpuQuota é o consumo acumulativo de memória de tarefas do Spark criadas. Sob uma instância, o consumo de CPU não pode ser maior que 80.

Padrão: 80

Sequência quota_de_memória_padrão_do_motor_de_análise
spec.sparkDefaults.mutableConfigs Altere as configurações personalizadas para tempos de execução do Spark que podem ser substituídas por uma tarefa ou kernel específico. Objeto N/D
spec.sparkDefaults.immutableConfigs Altere as configurações personalizadas para tempos de execução do Spark que não podem ser substituídas por uma tarefa ou kernel específico. Objeto N/D
spec.autoScaleConfig Especifique se deseja habilitar o Horizontal Pod Autoscaling (HPA) com o serviço. Para usar esse recurso, defina autoScaleConfig como verdadeiro. Booleano N/D
spec.dbRestore Especifique o carimbo de data/hora de um instantâneo específico do banco de dados Metastore de Analytics Engine powered by Apache Spark Sequência N/D
spec.retention_period

Especifique a duração (em dias) durante a qual registros ou dados específicos serão preservados antes de serem automaticamente excluídos. Na configuração de Recursos personalizados:

engine_duration: Número de dias para reter os registros de aplicação do motor.

instance_duration: Número de dias para reter os registros de aplicativos da instância.

Número Inteiro N/D

Configurações imutáveis no nível da instância

Essas configurações podem ser definidas por administradores no nível da instância e não podem ser substituídas por uma tarefa ou kernel específico.

No entanto, as configurações no nível do serviço podem substituir as configurações no nível da instância.

Os seguintes cURL comandos podem ser usados para GETe PUT configurações PATCH imutáveis no nível da instância:
PUT API do
curl -k -X PUT <cpd-route>/v4/analytics_engines/<instance_id>/immutable_configs  -H "Authorization: Bearer $TOKEN" --data-raw '{"ae.kubernetes.spec.nodeSelector":"bXlub2RlOiBzcGFyawo="}'
GET API do
curl -k -X GET <cpd-route>/v4/analytics_engines/<instance_id>/immutable_configs  -H "Authorization: Bearer $TOKEN"
Resposta:
{
  ae.kubernetes.spec.nodeSelector: "bXlub2RlOiBzcGFyawo="
}
PATCH API do
curl -k -X PATCH <cpd-route>/v4/analytics_engines/<instance_id>/immutable_configs  -H "Authorization: Bearer $TOKEN" --data-raw '{"ae.kubernetes.spec.nodeSelector":"bXlub2RlOiBzcGFyawo="}'

Ativação MachineConfig e RuntimeClass definições para determinadas propriedades

Para algumas das propriedades na tabela 1, você terá que habilitar o SELinux com a MachineConfig definição no cluster e criar RuntimeClass.
  1. Execute o comando a seguir:
    cat << EOF | oc apply -f -
    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: |
          {"apiVersion":"machineconfiguration.openshift.io/v1","kind":"MachineConfig","metadata":{"annotations":{},"labels":{"machineconfiguration.openshift.io/role":"worker"},"name":"99-worker-selinux-configuration"},"spec":{"config":{"ignition":{"version":"3.2.0"},"storage":{"files":[{"contents":{"source":"data:text/plain;charset=utf-8;base64,W2NyaW8ucnVudGltZS5ydW50aW1lcy5zZWxpbnV4XQpydW50aW1lX3BhdGggPSAiL3Vzci9iaW4vcnVuYyIKcnVudGltZV9yb290ID0gIi9ydW4vcnVuYyIKcnVudGltZV90eXBlID0gIm9jaSIKYWxsb3dlZF9hbm5vdGF0aW9ucyA9IFsiaW8ua3ViZXJuZXRlcy5jcmktby5UcnlTa2lwVm9sdW1lU0VMaW51eExhYmVsIl0K"},"mode":416,"overwrite":true,"path":"/etc/crio/crio.conf.d/01-selinux.conf"}]}},"osImageURL":""}}
      generation: 1
      labels:
        machineconfiguration.openshift.io/role: worker
      name: 99-worker-selinux-configuration
    spec:
      config:
        ignition:
          version: 3.2.0
        storage:
          files:
          - contents:
              source: data:text/plain;charset=utf-8;base64,W2NyaW8ucnVudGltZS5ydW50aW1lcy5zZWxpbnV4XQpydW50aW1lX3BhdGggPSAiL3Vzci9iaW4vcnVuYyIKcnVudGltZV9yb290ID0gIi9ydW4vcnVuYyIKcnVudGltZV90eXBlID0gIm9jaSIKYWxsb3dlZF9hbm5vdGF0aW9ucyA9IFsiaW8ua3ViZXJuZXRlcy5jcmktby5UcnlTa2lwVm9sdW1lU0VMaW51eExhYmVsIl0K
            mode: 416
            overwrite: true
            path: /etc/crio/crio.conf.d/01-selinux.conf
      osImageURL: ""
    EOF
  2. A RuntimeClass definição:
    cat << EOF | oc apply -f -
    apiVersion: node.k8s.io/v1
    kind: RuntimeClass
    metadata:
      name: selinux
    handler: selinux
    EOF

Backup e restauração automatizados

Analytics Engine powered by Apache Spark suporta backup e restauração automáticos do banco de dados Metastore. O backup do banco de dados é um processo CronJob que ocorre a cada 24 horas. O backup é compactado e armazenado no volume de armazenamento (spark-hb-database-backup padrão: 5Gi storage) com um carimbo de data/hora do instantâneo como nome do arquivo compactado. Quando o volume de armazenamento atinge 80% de sua capacidade, os arquivos compactados são alternados.

O comando a seguir é usado para restaurar o banco de dados usando o carimbo de data/hora do backup instantâneo necessário:
Observação: atualize o campo de carimbo de data/hora no comando abaixo. Exemplo: YYYY-MM-DD_hh-mm-ss. O carimbo de data/hora do instantâneo é o nome do arquivo compactado. Após a aplicação do comando patch, a reconciliação CR do mecanismo de análise ocorre duas vezes: primeiro para restaurar o banco de dados e, em seguida, para concluir a reconciliação CR do mecanismo de análise.
oc patch AnalyticsEngine analyticsengine-sample -n ${PROJECT_CPD_INSTANCE} --type merge --patch '{"spec": {"dbRestore":"<time_stamp>"}}'

O quê fazer em seguida

Conclua as tarefas a seguir em ordem antes que os usuários possam acessar o serviço:

  1. Um administrador de instância pode definir a escala do serviço e ajustar o número de pods disponíveis. Consulte Serviços de dimensionamento.
  2. Para que seja possível enviar as tarefas do Spark usando a API de tarefas do Spark, é necessário provisionar uma instância de serviço. Consulte Provisionamento da instância do serviço.
  3. O serviço está pronto para o uso. Consulte Ambientes Spark.