O Lindorm Distributed Processing System (LDPS) executa jobs Spark em pools de recursos elásticos gerenciados pelo Kubernetes. Esta página lista todos os parâmetros configuráveis para jobs Spark do LDPS e explica como passá-los em cada método de envio.
Parâmetros do Spark
Parâmetro | Valor padrão | Descrição |
kyuubi.engine.share.level | USER | Nível de compartilhamento do mecanismo Spark SQL. Níveis disponíveis:
|
kyuubi.session.engine.initialize.timeout | 300000 (milissegundos) | Tempo limite para iniciar o mecanismo Spark SQL em segundo plano. |
kyuubi.session.engine.idle.timeout | 1800000 (milissegundos) | Tempo limite de ociosidade do mecanismo Spark SQL. Se não houver acesso ao mecanismo durante esse período, ele será encerrado automaticamente. |
kyuubi.session.engine.check.interval | 300000 (milissegundos) | Intervalo de verificação do tempo limite do mecanismo Spark SQL. O valor mínimo é 3000 milissegundos. |
kyuubi.session.idle.timeout | 21600000 (milissegundos) | Tempo limite de ociosidade das sessões. Caso nenhuma sessão seja acessada nesse intervalo, ela fechará automaticamente. |
kyuubi.session.check.interval | 300000 (milissegundos) | Intervalo de verificação dos tempos limite de sessão. O valor mínimo é 3000 milissegundos. |
kyuubi.engine.single.spark.session | false | Defina se o mecanismo Spark SQL opera no modo de sessão única. Nesse modo, todas as conexões JDBC ou ODBC compartilham visualizações temporárias, registros de funções, configurações SQL e o banco de dados atual.
|
kyuubi.operation.idle.timeout | 10800000 (milissegundos) | Tempo limite de ociosidade para operações. Se uma operação não for acessada durante esse período, ela fechará automaticamente. |
kyuubi.operation.interrupt.on.cancel | true | Defina se todas as tarefas em execução serão interrompidas ao cancele uma consulta.
|
kyuubi.operation.status.polling.timeout | 5000 (milissegundos) | Tempo limite para consultar o status de instruções SQL executadas de forma assíncrona. |
Parâmetros restritos
O sistema define os parâmetros a seguir, que não podem ser personalizados.
|
Parâmetro |
Descrição |
|
|
Endpoint do sistema de gerenciamento de cluster. |
|
|
Modo de implantação do driver Spark. |
Parâmetros de recursos
O LDPS opera em pools de recursos elásticos com faturamento baseado em pagamento conforme o uso. Por padrão, não há limite superior para os recursos que um job pode solicitar. Para defina um máximo, consulte Modifique as configurações do LDPS.
Os parâmetros de recursos aplicam-se a todos os jobs JDBC, JAR e Python enviados ao LDPS e dividem-se em parâmetros de especificação e parâmetros de capacidade.
Parâmetros de especificação
Parâmetros básicos de especificação
|
Parâmetro |
Descrição |
Padrão |
|
|
Memória heap do driver. Unidade: mebibytes. |
|
|
|
Memória off-heap do driver. Unidade: mebibytes. |
|
|
|
Tamanho do disco local do driver. Unidade: GB. |
|
|
|
Núcleos de CPU por executor. |
|
|
|
Memória heap por executor. Unidade: mebibytes. |
|
|
|
Memória off-heap por executor. Unidade: mebibytes. |
|
|
|
Tamanho do disco local por executor. Unidade: GB. |
|
Parâmetros avançados de especificação
| Parâmetro | Descrição | Padrão |
|---|---|---|
spark.{driver/executor}.resourceTag | Conjunto predefinido de especificações de recursos. Quando definido, o LDPS aplica automaticamente os valores correspondentes de CPU, memória e disco. Valores válidos: xlarge, 2xlarge, 4xlarge, 8xlarge, 16xlarge. | Nenhum |
spark.kubernetes.{driver/executor}.ecsModelPreference | Modelos preferenciais de nós de computação, listados em ordem de prioridade. O LDPS tenta cada modelo sequencialmente; se todos estiverem indisponíveis, seleciona um modelo disponível que corresponda à especificação de recursos. Especifique até quatro modelos, separados por vírgulas. Exemplo: hfg6,g6. | Nenhum |
spark.kubernetes.{driver/executor}.annotation.k8s.aliyun.com/eci-use-specs | Especificação de GPU da Elastic Container Instance (ECI). Para tipos de instância GPU suportados, consulte Especificar tipos de instância ECS para criar pods. | ecs.gn7i-c8g1.2xlarge |
spark.{driver/executor}.resource.gpu.vendor | Fabricante da GPU. Deve corresponder à especificação de GPU definida em eci-use-specs. | nvidia.com |
spark.{driver/executor}.resource.gpu.amount | Quantidade de GPUs. Defina como 1. | 1 |
spark.{driver/executor}.resource.gpu.discoveryScript | Caminho para o script de descoberta de GPU usado para identificar e vincular recursos de GPU na inicialização do driver ou executor. Defina como /opt/spark/examples/src/main/scripts/getGpusResources.sh. | /opt/spark/examples/src/main/scripts/getGpusResources.sh |
spark.kubernetes.executor.annotation.k8s.aliyun.com/eci-use-specs | Especificação de instância do executor com capacidade expandida de disco local. Consulte os valores suportados abaixo. | Nenhum |
O parâmetro spark.kubernetes.executor.annotation.k8s.aliyun.com/eci-use-specs suporta as seguintes especificações de executor:
|
Valor |
Núcleos de CPU |
Memória |
|
|
8 |
32 GB |
|
|
16 |
64 GB |
|
|
24 |
96 GB |
|
|
32 |
128 GB |
|
|
56 |
224 GB |
Ao usar spark.kubernetes.executor.annotation.k8s.aliyun.com/eci-use-specs, defina também os dois parâmetros a seguir:
spark.kubernetes.executor.volumes.emptyDir.spark-local-dir-1.mount.path=/varspark.kubernetes.executor.volumes.emptyDir.spark-local-dir-1.options.medium=LocalRaid0Se o tipo de instância do executor especificado estiver indisponível, entre em contato com o suporte técnico do Lindorm (ID do DingTalk: s0s3eg3).
Mapeamento de especificações resourceTag
|
Valor de resourceTag |
** |
** |
** |
** |
|
|
4 |
8192m |
8192m |
50 GB |
|
|
8 |
16384m |
16384m |
100 GB |
|
|
16 |
32768m |
32768m |
200 GB |
|
|
32 |
65536m |
65536m |
400 GB |
|
|
64 |
131072m |
131072m |
400 GB |
Parâmetros de capacidade
|
Parâmetro |
Descrição |
Padrão |
|
|
Número de executores alocados para o job. |
|
|
|
Ativa a alocação dinâmica de recursos. Quando ativado, o LDPS solicita e libera executores automaticamente com base na carga de trabalho do job em tempo real. Valores válidos: |
|
|
|
Número mínimo de executores quando a alocação dinâmica de recursos está ativada. |
|
|
|
Número máximo de executores quando a alocação dinâmica de recursos está ativada. Este valor equivale ao número de tarefas simultâneas. |
|
|
|
Tempo de retenção de um executor ocioso antes de ser liberado. Unidade: segundos. |
|
Parâmetros de execução
|
Parâmetro |
Descrição |
Padrão |
|
|
Ativa a execução especulativa. Quando ativado, o driver reenvia tarefas que estão sendo executadas significativamente mais devagar que outras no mesmo estágio (long tails), evitando atrasos no job. Valores válidos: |
|
|
|
Número máximo de falhas de tarefa permitidas antes que o job falhe. |
|
|
|
Armazena logs do executor no LindormDFS. Defina como |
|
|
|
Caminho para o pacote JAR necessário para o job. Aceita caminhos OSS ou Hadoop Distributed File System (HDFS). Se você usar JDBC, defina apenas um caminho HDFS. Caso utilize um caminho OSS, configure também os parâmetros OSS abaixo. |
Nenhum |
|
|
Endpoint do OSS. Para valores de endpoint por região, consulte Regiões e endpoints. |
Nenhum |
|
|
AccessKey ID da sua conta Alibaba Cloud ou usuário RAM. Consulte Obter um par de AccessKey. |
Nenhum |
|
|
AccessKey secret da sua conta Alibaba Cloud ou usuário RAM. Consulte Obter um par de AccessKey. |
Nenhum |
|
|
Classe de implementação do sistema de arquivos para OSS. Defina como |
Nenhum |
|
|
Paralelismo padrão para tarefas não SQL, incluindo leituras de fontes de dados e estágios de shuffle. |
Nenhum |
|
|
Número de partições de shuffle para tarefas SQL. |
|
Parâmetros de monitoramento
| Parâmetro | Descrição | Padrão |
|---|---|---|
spark.monitor.cmd | Comandos de monitoramento a serem executados em intervalos regulares. Separe múltiplos comandos com ponto e vírgula (;). Os resultados são gravados nos logs do job. Nota Este parâmetro não pode ser configurado ao envie jobs via Beeline ou JDBC. | Nenhum |
spark.monitor.interval | Intervalo entre execuções dos comandos de monitoramento. Unidade: segundos. | 60 |
spark.monitor.timeout | Tempo limite para cada comando de monitoramento. Se um comando exceder esse limite, ele é ignorado e o próximo comando é executado. Unidade: segundos. | 2 |
Exemplos de comandos de monitoramento:
# Single command
"spark.monitor.cmd": "top -b -n 1"
# Multiple commands
"spark.monitor.cmd": "top -b -n 1; vmstat; free -m; iostat -d -x -c -k; df -h; sar -n DEV 1 1; netstat"
Comandos comuns de monitoramento por categoria:
|
Categoria |
Comandos |
|
Status do sistema |
|
|
Memória |
|
|
E/S de disco |
|
|
Uso de disco |
|
|
Rede |
|
Parâmetros de log
|
Parâmetro |
Descrição |
Padrão |
|
|
Nível de saída de log para o job. |
|
Valores válidos para spark.log.level, do mais detalhado ao menos detalhado:
|
Nível |
Descrição |
|
|
Toda a saída de log, incluindo as informações de depuração mais granulares. |
|
|
Mais detalhado que DEBUG; registra etapas de execução refinadas. |
|
|
Logs de nível de depuração, incluindo status detalhado de tempo de execução. |
|
|
Logs informativos gerais para eventos normais de execução. |
|
|
Avisos sobre problemas potenciais que não interrompem a execução. |
|
|
Erros ocorridos durante a execução. |
|
|
Erros críticos que impedem a continuidade do programa. |
|
|
Desativa toda a saída de log. |
Parâmetros do Spark open-source
Para parâmetros herdados do Spark open-source, consulte Configuração do Spark.
Configure parâmetros por método de envio
O método utilizado para envie um job ao LDPS determina como os parâmetros são passados.
Beeline
Edite o arquivo conf/beeline.conf no diretório do pacote Spark onde a ferramenta de linha de comando Beeline está localizada.
# LDPS endpoint
# Format: jdbc:hive2://<host>:<port>/;?token=<token>
endpoint=jdbc:hive2://ld-bp13ez23egd123****-proxy-ldps-pub.lindorm.aliyuncs.com:10009/;?token=jfjwi2453-fe39-cmkfe-afc9-01eek2j5****
# Connection credentials (default: root/root)
user=root
password=root
# Set to false to use a dedicated Spark session for this connection
shareResource=false
# Spark parameters
spark.dynamicAllocation.enabled=true
spark.dynamicAllocation.minExecutors=3
Para a configuração completa do Beeline, consulte Primeiros passos.
JDBC
Anexe os parâmetros do Spark à string de conexão JDBC como pares chave-valor após o token.
jdbc:hive2://<host>:<port>/;?token=<token>;spark.executor.memory=8g;spark.sql.shuffle.partitions=2
Para o formato completo da URL JDBC, consulte Usar JDBC no desenvolvimento de aplicativos.
spark.jars não pode ser definido como um caminho OSS ao envie jobs via JDBC. Use um caminho HDFS em vez disso.
Jobs JAR
Configure os parâmetros no modelo de job ao envie um job Java:
Lindorm console: Configure no modelo de conteúdo do job. Consulte Gerencie jobs no Lindorm console.
Data Management Service (DMS): Configure na seção Job configuration da página do nó de job. Consulte Usar o DMS para gerencie jobs.
Jobs Python
Configure os parâmetros no modelo de job ao envie um job Python:
Lindorm console: Configure no modelo de conteúdo do job. Consulte Gerencie jobs no Lindorm console.
Data Management Service (DMS): Configure na seção Job configuration da página do nó de job. Consulte Usar o DMS para gerencie jobs.