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â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 do cluster. |
|
|
Modo de implantação do driver Spark. |
Parâmetros de recursos
O LDPS opera em pools de recursos elásticos com faturamento baseado no pagamento conforme o uso. Por padrão, não há limite superior para os recursos que um job pode solicitar. Para definir um máximo, consulte Modify the configurations of 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 recurso. 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 Specify ECS instance types to create 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 da instância 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 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 executando 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 utilizar 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 Regions and endpoints. |
Nenhum |
|
|
AccessKey ID da sua conta Alibaba Cloud ou usuário RAM. Consulte Obtain an AccessKey pair. |
Nenhum |
|
|
AccessKey secret da sua conta Alibaba Cloud ou usuário RAM. Consulte Obtain an AccessKey pair. |
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 enviar jobs via Beeline ou JDBC. |
Nenhum |
spark.monitor.interval |
Intervalo entre as 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 será ignorado e o próximo comando será 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 do 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
Ao enviar um job ao LDPS, o método utilizado 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 Getting started.
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 Use JDBC in application development.
spark.jars não pode ser definido como um caminho OSS ao enviar jobs via JDBC. Utilize um caminho HDFS.
Jobs JAR
Configure os parâmetros no modelo de job ao enviar um job Java:
Lindorm console: Configure no modelo de conteúdo do job. Consulte Manage jobs in the Lindorm console.
Data Management Service (DMS): Configure na seção Job configuration da página do nó do job. Consulte Use DMS to manage jobs.
Jobs Python
Configure os parâmetros no modelo de job ao enviar um job Python:
Lindorm console: Configure no modelo de conteúdo do job. Consulte Manage jobs in the Lindorm console.
Data Management Service (DMS): Configure na seção Job configuration da página do nó do job. Consulte Use DMS to manage jobs.