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 em Opções avançadas na parte inferior da página para visualizar a seção Propriedades do cluster.

  2. Clique em + Adicionar propriedade de cluster, selecione Spark na lista suspensa à esquerda, adicione "spark.master" no campo de propriedade e a configuração no campo de 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
hadoop-env hadoop-env.sh Variáveis de ambiente específicas do Hadoop
hbase hbase-site.xml Configuração do HBase
hdfs hdfs-site.xml Configuração HDFS do Hadoop
hive hive-site.xml Configuração do Hive
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
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
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)
zookeeper zoo.cfg Configuração do Zookeeper

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 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 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.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.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) Logging (padrão: true).
dataproc dataproc.logging.stackdriver.job.driver.enable true ou false Ativa (true) ou desativa (false) registros de driver do job do Dataproc no 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 Logging. (padrão: false).
dataproc dataproc.monitoring.stackdriver.enable true ou false Ativa (true) ou desativa (false) o Agente do Monitoring.
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.worker.custom.init.actions.mode RUN_BEFORE_SERVICES (padrão: não ativado). Se especificado, durante a criação do cluster, quando uma VM de worker principal for inicializada pela primeira vez, as ações de inicialização serão executadas antes do gerenciador de nós e os datanode do daemons serem iniciados. Consulte Ações de inicialização: considerações e diretrizes importantes.
dataproc efm.mapreduce.shuffle hcfs Defina essa propriedade do Modo de flexibilidade aprimorada do Dataproc como hcfs para preservar os dados do MapReduce em ordem aleatória no HDFS quando um nó do Dataproc for removido. Observação: este recurso só está disponível com o Dataproc 1.4 e posterior.
dataproc efm.spark.shuffle hcfs Defina essa propriedade do Modo de flexibilidade aprimorada do Dataproc como hcfs para preservar os dados do Spark em ordem aleatória no HDFS quando um nó do Dataproc for removido. Observação: este recurso é disponível apenas com o Dataproc 1.4.
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. Precisa ser definido como true para ativar a geração de registros do driver do job em 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 para versões de imagem 1.3+ é false, que restringe as conexões com localhost (127.0.0.1) quando o Gateway de componentes está ativado. 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 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 time O tempo de 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 as instâncias do cluster e a instância do Cloud SQL precisarem estar acima do IP privado (o valor padrão será 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 yarn.log-aggregation.enabled true ou false Permite (true) ativar a agregação de registro YARN para um bucket temporário do Dataproc. 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+). Os usuários também podem definir o local dos registros YARN agregados substituindo a propriedade yarn.nodemanager.remote-app-log-dir do YARN.
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.