Apache Hadoop YARN, HDFS, Spark e propriedades relacionadas
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
- Exemplo com um delimitador "#":
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
:
- 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".
- 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 |
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 com um delimitador "#":
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.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 ) 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 |
Para clusters de imagem anteriores ao 2.0, RUN_ANTES_SERVICES não é definido, mas pode ser definido pelo usuário quando o cluster é criado. Para clusters de imagem 2.0 e posteriores, RUN_ANTES_SERVICES é definido e a propriedade não pode ser passada 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 ou hcfs |
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 . 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 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 |
Indica se a comunicação entre as instâncias do cluster e a instância do Cloud SQL precisa ser feita por um 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 o Kerberos ativado (o valor padrão é false ). |
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
.