Propriedades de cluster

Os componentes de código aberto instalados em clusters do Dataproc contêm muitos arquivos de configuração. Por exemplo, o Apache Spark e o Apache Hadoop têm vários arquivos de configuração XML e texto simples. Use a sinalização ‑‑properties do comando gcloud dataproc clusters create para modificar muitos arquivos de configuração comuns ao criar um cluster.

Formatação

A sinalização gcloud dataproc clusters create --properties aceita o seguinte formato de string:

file_prefix1:property1=value1,file_prefix2:property2=value2,...
  • O file_prefix é mapeado para um arquivo de configuração predefinido, conforme mostrado na tabela abaixo, e o property é mapeado para uma propriedade dentro do arquivo.

  • O delimitador padrão usado para separar várias propriedades do cluster é a vírgula (,). No entanto, se uma vírgula for incluída em um valor de propriedade, será necessário alterar o delimitador especificando um "^delimiter^" no início da lista de propriedades. Consulte Escape de tópico do gcloud para mais informações.

    • Exemplo com um delimitador "#":
      --properties ^#^file_prefix1:property1=part1,part2#file_prefix2:property2=value2
      

Exemplos

Comando gcloud

Para alterar a configuração spark.master no arquivo spark-defaults.conf, adicione a seguinte sinalização gcloud dataproc clusters create --properties:

--properties 'spark:spark.master=spark://example.com'

Altere várias propriedades ao mesmo tempo, em um ou mais arquivos de configuração, usando vírgula como separador. Cada propriedade precisa ser especificada no formato file_prefix:property=value completo. Por exemplo, para alterar a configuração spark.master no arquivo spark-defaults.conf e dfs.hosts no arquivo hdfs-site.xml, use a seguinte sinalização --properties ao criar um cluster:

--properties 'spark:spark.master=spark://example.com,hdfs:dfs.hosts=/foo/bar/baz'

API REST

Para definir spark.executor.memory como 10g, insira a seguinte configuração properties na seção SoftwareConfig da solicitação clusters.create:

"properties": {
  "spark:spark.executor.memory": "10g"
}

Uma forma fácil de ver como construir o corpo JSON de uma solicitação da API clusters REST do Dataproc é iniciar o comando gcloud equivalente usando a sinalização --log-http. Veja um exemplo de comando gcloud dataproc clusters create, que define as propriedades do cluster com a sinalização --properties spark:spark.executor.memory=10g. O registro de stdout mostra o corpo da solicitação REST resultante (o snippet properties é mostrado abaixo):

gcloud dataproc clusters create my-cluster \
    --region=region \
    --properties=spark:spark.executor.memory=10g \
    --log-http \
    other args ...

Saída:

...
== body start ==
{"clusterName": "my-cluster", "config": {"gceClusterConfig": ...
"masterConfig": {... "softwareConfig": {"properties": {"spark:spark.executor.memory": "10g"}},

... == body end == ...

Cancele o comando depois que o corpo JSON aparecer na saída se você não quiser que o comando seja efetivado.

Console

Para alterar a configuração spark.master no arquivo spark-defaults.conf:

  1. No Console do Cloud, abra a página Criar um cluster do Dataproc. Clique no painel "Personalizar cluster" e role até a seção "Propriedades do cluster".

  2. Clique em + ADICIONAR PROPRIEDADES. Selecione spark na lista Prefixos e, em seguida, adicione "spark.master" no campo "Chave" e a configuração no campo "Valor".

Cluster versus propriedades do job

O Apache Hadoop YARN, HDFS, Spark e outras propriedades com prefixo de arquivos são aplicadas no nível do cluster quando você cria um cluster. Muitas dessas propriedades também podem ser aplicadas a jobs específicos. Ao aplicar uma propriedade a um job, o prefixo de arquivo não é usado.

Exemplo:

Defina a memória do executor do Spark como 4g para um job do Spark (o prefixo spark: foi omitido).

gcloud dataproc jobs submit spark \
    --region=region \
    --properties=spark.executor.memory=4g \
    ... other args ...

Tabela de propriedades com prefixo de arquivo

Prefixo do arquivo File Finalidade do arquivo
capacity-scheduler capacity-scheduler.xml Configuração YARN Capacity Scheduler do Hadoop
core core-site.xml Configuração geral do Hadoop
distcp distcp-default.xml Configuração de cópia distribuída do Hadoop
flink-log4j log4j.properties Arquivo de configurações do Log4j
hadoop-env hadoop-env.sh Variáveis de ambiente específicas do Hadoop
hadoop-log4j log4j.properties Arquivo de configurações do Log4j
hbase hbase-site.xml Configuração do HBase
hbase-log4j log4j.properties Arquivo de configurações do Log4j
hdfs hdfs-site.xml Configuração HDFS do Hadoop
hive hive-site.xml Configuração do Hive
Hive-log4j2 hive-log4j2.properties Arquivo de configurações do Log4j
mapred mapred-site.xml Configuração MapReduce do Hadoop
mapred-env mapred-env.sh Variáveis de ambiente específicas do Hadoop MapReduce
pig pig.properties Configuração do Pig
pig-log4j log4j.properties Arquivo de configurações do Log4j
presto config.properties Configuração do Presto
presto-jvm jvm.config Configuração JVM específica do Presto
spark spark-defaults.conf Configuração do Spark
spark-env spark-env.sh Variáveis de ambiente específicas do Spark
spark-log4j log4j.properties Arquivo de configurações do Log4j
webcat-log4j webhcat-log4j2.properties Arquivo de configurações do Log4j
yarn yarn-site.xml Configuração YARN do Hadoop
yarn-env yarn-env.sh Variáveis de ambiente específicas YARN do Hadoop
zeppelin zeppelin-site.xml Configuração do Zeppelin
zeppelin-env zeppelin-env.sh Variáveis de ambiente específicas do Zeppelin (somente componente opcional)
zeppelin-log4j log4j.properties Arquivo de configurações do Log4j
zookeeper zoo.cfg Configuração do Zookeeper
zookeeper-log4j log4j.properties Arquivo de configurações do Log4j

Observações

  • Algumas propriedades são reservadas e não podem ser substituídas porque afetam a funcionalidade do cluster do Dataproc. Se tentar alterar uma propriedade reservada, você receberá uma mensagem de erro ao criar o cluster.
  • Especifique várias alterações separando cada uma com uma vírgula.
  • A sinalização --properties- não modifica arquivos de configuração não mostrados acima.
  • As alterações nas propriedades serão aplicadas antes da inicialização dos daemons no cluster.
  • Se já existir, a propriedade especificada será atualizada. Se não existir, ela será adicionada ao arquivo de configuração.

Propriedades do serviço do Dataproc

As propriedades listadas abaixo são específicas do Dataproc. Essas propriedades podem ser usadas para configurar ainda mais a funcionalidade do cluster do Dataproc. Essas propriedades de cluster são especificadas na criação do cluster. Elas não podem ser especificadas ou atualizadas após a criação do cluster.

Formatação

A sinalização gcloud dataproc clusters create --properties aceita o seguinte formato de string:

property_prefix1:property1=value1,property_prefix2:property2=value2,...
  • O delimitador padrão usado para separar várias propriedades do cluster é a vírgula (,). No entanto, se uma vírgula for incluída em um valor de propriedade, será necessário alterar o delimitador especificando "^delimiter^" no início da lista de propriedades. Consulte Escape de tópico do gcloud para mais informações.

    • Exemplo com um delimitador "#":
      --properties ^#^property_prefix1:property1=part1,part2#property_prefix2:property2=value2
      

Exemplo:

Crie um cluster e defina Modo de flexibilidade aprimorado como o embaralhamento de trabalho principal do Spark.

gcloud dataproc jobs submit spark \
    --region=region \
    --properties=dataproc:efm.spark.shuffle=primary-worker \
    ... other args ...

Tabela de propriedades do serviço do Dataproc

Prefixo da propriedade Property Valores Descrição
dataproc agent.process.threads.job.min number O Dataproc executa drivers de job de usuário simultaneamente em um pool de linhas de execução. Esta propriedade controla o número mínimo de linhas de execução no pool para uma inicialização rápida, mesmo quando nenhum job está em execução (padrão: 10).
dataproc agent.process.threads.job.max number O Dataproc executa drivers de job de usuário simultaneamente em um pool de linhas de execução. Essa propriedade controla o número máximo de linhas de execução no pool de linhas de execução, limitando, assim, a simultaneidade máxima de jobs de usuário. Aumente esse valor para maior simultaneidade (padrão: 100).
dataproc am.primary_only true ou false Defina esta propriedade como true para evitar que o mestre do aplicativo seja executado nos trabalhos preemptivos do cluster do Dataproc. Observação: este recurso só está disponível com o Dataproc 1.2 e posterior. O valor padrão é false.
dataproc conda.env.config.uri gs://<path> Local no Cloud Storage do arquivo de configuração do ambiente do Conda. Um novo ambiente do Conda será criado e ativado com base nesse arquivo. Para mais informações, consulte Como usar as propriedades de cluster relacionadas ao Conda. (padrão: empty).
dataproc conda.packages Pacotes de Conda Esta propriedade usa uma lista de pacotes Conda separados por vírgula com versões específicas a serem instaladas no ambiente Conda base. Para mais informações, consulte Como usar as propriedades de cluster relacionadas ao Conda. (padrão: empty).
dataproc dataproc.allow.zero.workers true ou false Defina esta propriedade SoftwareConfig como true em uma solicitação de API clusters.create do Dataproc para criar um cluster de nó único, que altera o número padrão de trabalhos de dois para zero, e coloca componentes de trabalho no host mestre. Um cluster de nó único também pode ser criado no Console do Cloud ou com a ferramenta de linha de comando gcloud definindo o número de workers como 0.
dataproc dataproc.alpha.master.nvdimm.size.gb 1500-6500 A definição de um valor cria um mestre do Dataproc com memória permanente Intel Optane DC. Observação: as VMs do Optane só podem ser criadas em zonas us-central1-f, apenas com o tipo de máquina n1-highmem-96-aep e em projetos permitidos.
dataproc: dataproc.alpha.worker.nvdimm.size.gb 1500-6500 A definição de um valor cria um worker do Dataproc com memória permanente do Intel Optane DC. Observação: as VMs do Optane só podem ser criadas em zonas us-central1-f, apenas com o tipo de máquina n1-highmem-96-aep e em projetos permitidos.
dataproc: dataproc.beta.secure.multi-tenancy.user.mapping user-to-service account mappings Essa propriedade recebe uma lista de mapeamentos de conta de usuário a serviço. Os usuários mapeados podem enviar cargas de trabalho interativas para o cluster com identidades de usuário isoladas. Consulte Multilocação segura com base na conta de serviço do Dataproc.
dataproc dataproc.conscrypt.provider.enable true ou false Ativa (true) ou desativa (false) Conscrypt como o fornecedor de segurança Java. Observação: Conscrypt permanece ativado por padrão no Dataproc 1.2 e superior, mas desativado no 1.0/1.1.
dataproc dataproc.cooperative.multi-tenancy.user.mapping user-to-service account mappings Essa propriedade usa uma lista de mapeamentos de contas de usuário para serviço separados por vírgula. Se um cluster for criado com essa propriedade definida, quando um usuário enviar um job, o cluster tentará personificar a conta de serviço correspondente ao acessar o Cloud Storage por meio do conector do Cloud Storage. Este recurso requer a versão 2.1.4 ou superior do conector do Cloud Storage. Para mais informações, consulte Multilocação cooperativa do Dataproc. (padrão: empty).
dataproc dataproc.localssd.mount.enable true ou false Define a necessidade de ativar SSDs locais como diretórios temporários do Hadoop/Spark e diretórios de dados do HDFS (padrão: true).
dataproc dataproc.logging.stackdriver.enable true ou false Ativa (true) ou desativa (false) o Cloud Logging (padrão: true). Consulte Preços do Cloud Logging para ver as cobranças associadas.
dataproc dataproc.logging.stackdriver.job.driver.enable true ou false Ativa (true) ou desativa (false) os registros do driver do job do Dataproc no Cloud Logging (padrão: false).
dataproc dataproc.logging.stackdriver.job.yarn.container.enable true ou false Ativa (true) ou desativa (false) os registros de contêiner YARN no Cloud Logging. (padrão: false).
dataproc dataproc.master.custom.init.actions.mode RUN_BEFORE_SERVICES ou RUN_AFTER_SERVICES Para clusters de imagem a partir de 2.0, quando definido como RUN_AFTER_SERVICES, as ações de inicialização no mestre serão executadas depois do HDFS e todos os serviços que dependem do HDFS serão inicializados. Exemplos de serviços dependentes de HDFS incluem: HBase, Hive Server2, Ranger, Solr e os servidores de histórico Spark e MapReduce. (padrão: RUN_BEFORE_SERVICES).
dataproc dataproc.monitoring.stackdriver.enable true ou false Ativa (true) ou desativa (false) o agente do Cloud Monitoring (padrão: false). O agente do Cloud Monitoring coleta métricas de VM da perspectiva do SO convidado para coletar métricas não padrão, como uso de memória e disco. Consulte Métricas do agente do Cloud Monitoring para ver a lista de métricas e Preços do Cloud Monitoring para ver as cobranças associadas.
dataproc dataproc.scheduler.driver-size-mb number O consumo médio de memória do driver que determina o número máximo de jobs simultâneos que um cluster executará. O valor padrão é 1 GB. Um valor menor, como 256, pode ser apropriado para jobs do Spark.
dataproc dataproc.snap.enabled true ou false Ativa ou desativa o daemon Snap do Ubuntu. O valor padrão é true. Se ela for definida como false, os pacotes Snap pré-instalados na imagem não serão afetados, mas a atualização automática será desativada. Aplica-se a imagens 1.4.71, 1.5.46, 2.0.20 e mais recentes do Ubuntu.
dataproc dataproc.worker.custom.init.actions.mode RUN_BEFORE_SERVICES Para clusters de imagem anteriores à versão 2.0, RUN_BEFORE_SERVICES não está definido, mas pode ser definido pelo usuário quando o cluster é criado. Nos clusters de imagem a partir do 2.0, o valor RUN_BEFORE_SERVICES está definido e a propriedade não pode ser transmitida para o cluster (não pode ser alterada pelo usuário). Para informações sobre o efeito dessa configuração, consulte Considerações e diretrizes importantes: processamento de inicialização.
dataproc efm.mapreduce.shuffle hcfs Se forem configurados como hcfs, os dados embaralhados do Spark serão preservados no HDFS. Consulte o Modo de flexibilidade aprimorado do Dataproc para mais informações. Observação: atualmente, esse recurso só está disponível com o Dataproc 1.4 e 1.5.
dataproc efm.spark.shuffle primary-worker (recomendado) ou hcfs (obsoleto) Se definido como primary-worker, os mapeamentos gravam dados nos workers principais (disponíveis para e recomendados para os jobs do Spark). Se forem configurados como hcfs, os dados embaralhados do Spark serão preservados no HDFS. Consulte o Modo de flexibilidade aprimorado do Dataproc para mais informações. Observação: atualmente, esse recurso só está disponível com o Dataproc 1.4 e 1.5.
dataproc job.history.to-gcs.enabled true ou false Permite arquivos de histórico MapReduce e Spark persistentes no bucket temporário do Dataproc (padrão: true para versões de imagem 1.5+). Os usuários podem substituir os locais de persistência do arquivo do histórico de jobs por meio das seguintes propriedades: mapreduce.jobhistory.done-dir, mapreduce.jobhistory.intermediate-done-dir, spark.eventLog.dir e spark.history.fs.logDirectory
dataproc jobs.file-backed-output.enable true ou false Configura jobs do Dataproc para direcionar a saída para arquivos temporários no diretório /var/log/google-dataproc-job. Defina como true para ativar a geração de registros do driver do job no Cloud Logging (padrão: true).
dataproc jupyter.listen.all.interfaces true ou false Para reduzir o risco de execução remota de código em APIs de servidor de notebook não seguras, a configuração padrão das versões de imagem 1.3 ou mais recente éfalse, que restringe as conexões alocalhost (127.0.0.1 ) quandoGateway de componente está ativado (a ativação do Gateway de Componentes não é necessária para imagens 2.0+). Essa configuração padrão pode ser modificada definindo esta propriedade como true para permitir todas as conexões.
dataproc jupyter.notebook.gcs.dir gs://<dir-path> Local no Cloud Storage para salvar os notebooks do Jupyter.
dataproc kerberos.beta.automatic-config.enable true ou false Quando definido como true, os usuários não precisarão especificar a senha do principal raiz do Kerberos com as sinalizações --kerberos-root-principal-password e --kerberos-kms-key-uri (padrão: false). Consulte Como ativar o modo seguro do Hadoop por meio do Kerberos para mais informações.
dataproc kerberos.cross-realm-trust.admin-server hostname/address hostname/endereço do servidor de administração remota (geralmente o mesmo que o servidor KDC).
dataproc kerberos.cross-realm-trust.kdc hostname/address nome do host/endereço do KDC remoto.
dataproc kerberos.cross-realm-trust.realm realm name Os nomes de domínios podem consistir em qualquer string ASCII MAIÚSCULA. Normalmente, o nome do domínio é igual ao nome de domínio DNS (em MAIÚSCULAS). Exemplo: se as máquinas forem chamadas de "machine-id.example.west-coast.mycompany.com", o domínio associado poderá ser designado como "EXAMPLE.WEST-COAST.MYCOMPANY.COM".
dataproc kerberos.cross-realm-trust.shared-password.uri gs://<dir-path> Local no Cloud Storage da senha compartilhada criptografada pelo KMS.
dataproc kerberos.kdc.db.key.uri gs://<dir-path> Local no Cloud Storage do arquivo criptografado pelo KMS que contém a chave mestra do banco de dados KDC.
dataproc kerberos.key.password.uri gs://<dir-path> Local no Cloud Storage do arquivo criptografado pelo KMS que contém a senha da chave no arquivo de armazenamento de chaves.
dataproc kerberos.keystore.password.uri gs://<dir-path> Local no Cloud Storage do arquivo criptografado pelo KMS que contém a senha do keystore.
dataproc kerberos.keystore.uri1 gs://<dir-path> Local no Cloud Storage do arquivo do keystore que contém o certificado curinga e a chave privada usada pelos nós do cluster.
dataproc kerberos.kms.key.uri KMS key URI O URI da chave KMS usada para descriptografar a senha raiz, por exemplo, projects/project-id/locations/region/keyRings/key-ring/cryptoKeys/key (consulte ID do recurso da chave).
dataproc kerberos.root.principal.password.uri gs://<dir-path> Local na senha criptografada pelo KMS para a principal raiz do Kerberos.
dataproc kerberos.tgt.lifetime.hours hours Tempo de vida útil máximo do tíquete de concessão.
dataproc kerberos.truststore.password.uri gs://<dir-path> Local no Cloud Storage do arquivo criptografado pelo KMS que contém a senha para o arquivo truststore.
dataproc kerberos.truststore.uri2 gs://<dir-path> Local no Cloud Storage do arquivo do Truststore criptografado pelo KMS que contém certificados confiáveis.
dataproc Pacotes pip. Pacotes pip Essa propriedade usa uma lista de pacotes Pip separados por vírgulas e com versões específicas. Eles serão instalados no ambiente base do Conda. Para mais informações, consulte Propriedades de cluster relacionadas ao Conda. (padrão: empty).
dataproc ranger.kms.key.uri KMS key URI O URI da chave KMS usada para descriptografar a senha do usuário administrador do Ranger, por exemplo, projects/project-id/locations/region/keyRings/key-ring/cryptoKeys/key (consulte ID do recurso da chave).
dataproc ranger.admin.password.uri gs://<dir-path> Local na senha criptografada pelo KMS para o usuário administrador do Ranger.
dataproc ranger.db.admin.password.uri gs://<dir-path> Local no Cloud Storage da senha criptografada pelo KMS para o usuário administrador do banco de dados do Ranger.
dataproc ranger.cloud-sql.instance.connection.name cloud sql instance connection name O nome da conexão da instância do Cloud SQL, por exemplo, project-id:region:name.
dataproc ranger.cloud-sql.root.password.uri gs://<dir-path> Local no Cloud Storage da senha criptografada pelo KMS para o usuário raiz da instância do Cloud SQL.
dataproc ranger.cloud-sql.use-private-ip true ou false Se a comunicação entre instâncias do cluster e a instância do Cloud SQL precisa ser feita por IP privado (o valor padrão é false).
dataproc solr.gcs.path gs://<dir-path> Caminho do Cloud Storage para atuar como diretório inicial do Solr.
dataproc startup.component.service-binding-timeout.hadoop-hdfs-namenode seconds A quantidade de tempo que o script de inicialização do Dataproc aguardará a vinculação do hadoop-hdfs-namenode às portas antes de decidir que a inicialização foi bem-sucedida. O valor máximo reconhecido é de 1800 segundos (30 minutos).
dataproc startup.component.service-binding-timeout.hive-metastore seconds A quantidade de tempo que o script de inicialização do Dataproc aguardará a vinculação do serviço do hive-metastore às portas antes de decidir que a inicialização foi bem-sucedida. O valor máximo reconhecido é de 1800 segundos (30 minutos).
dataproc startup.component.service-binding-timeout.hive-server2 seconds A quantidade de tempo que o script de inicialização do Dataproc aguardará a vinculação do hive-server2 às portas antes de decidir que a inicialização foi bem-sucedida. O valor máximo reconhecido é de 1800 segundos (30 minutos).
dataproc user-attribution.enabled true ou false Defina essa propriedade como true para atribuir um job do Dataproc à identidade do usuário que o enviou. Observação: esta propriedade não se aplica a clusters com Kerberos ativado (o valor padrão é false).
dataproc yarn.log-aggregation.enabled true ou false Permite (true) ativar a agregação de registros do YARN para o temp bucket do cluster. O nome do bucket tem o seguinte formato: dataproc-temp-<REGION>-<PROJECT_NUMBER>-<RANDOM_STRING>. padrão: true para versões de imagem 1.5+. Observação: o bucket temporário do cluster não é excluído quando ele é excluído. Os usuários também podem definir o local dos registros YARN agregados substituindo a propriedade YARN yarn.nodemanager.remote-app-log-dir.
knox gateway.host ip address Para reduzir o risco de execução remota de código em APIs de servidor de notebook não seguras, a configuração padrão para versões de imagem 1.3+ é 127.0.0.1, que restringe as conexões com localhost quando o Gateway de componentes está ativado. A configuração padrão pode ser modificada definindo, por exemplo, esta propriedade como 0.0.0.0 para permitir todas as conexões.
zeppelin zeppelin.notebook.gcs.dir gs://<dir-path> Local no Cloud Storage para salvar os notebooks do Zeppelin.
zeppelin zeppelin.server.addr ip address Para reduzir o risco de execução remota de código em APIs de servidor de notebook não seguras, a configuração padrão para as versões de imagem 1.3+ é 127.0.0.1, o que restringe as conexões com localhost quando o Gateway de componentes está ativado. Essa configuração padrão pode ser modificada definindo, por exemplo, esta propriedade como 0.0.0.0 para permitir todas as conexões.

1 Arquivo de keystore: o arquivo de keystore contém o certificado SSL. Ele deve estar no formato Java KeyStore (JKS). Quando copiado para VMs, ele é renomeado para keystore.jks. O certificado SSL precisa ser um certificado curinga que se aplica a cada nó no cluster.

2 Arquivo do Truststore: o arquivo do Truststore precisa estar no formato Java KeyStore (JKS). Quando copiado para as VMs, ele é renomeado como truststore.jks.