Propiedades del clúster

Los componentes de código abierto instalados en los clústeres de Dataproc contienen muchos archivos de configuración. Por ejemplo, Apache Spark y Apache Hadoop tienen varios archivos de configuración XML y de texto sin formato. Puedes usar la marca ‑‑properties del comando gcloud dataproc clusters create para modificar muchos archivos de configuración comunes cuando creas un clúster.

Formato

La marca gcloud dataproc clusters create --properties acepta el siguiente formato de string:

file_prefix1:property1=value1,file_prefix2:property2=value2,...
  • file_prefix se mapea a un archivo de configuración predefinido, como se muestra en la siguiente tabla, y property se mapea a una propiedad dentro del archivo.

  • El delimitador predeterminado que se usa para separar varias propiedades del clúster es la coma (,). Sin embargo, si se incluye una coma en un valor de propiedad, debes cambiar el delimitador mediante la especificación de un signo "^"delimiter^" al comienzo de la lista de propiedades (consultaescape de tema de gcloud para obtener más información).

    • Ejemplo con un delimitador “#”:
      --properties ^#^file_prefix1:property1=part1,part2#file_prefix2:property2=value2
      

Ejemplos

Comando de gcloud

Para cambiar la configuración de spark.master en el archivo spark-defaults.conf, agrega la siguiente marca gcloud dataproc clusters create --properties:

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

Puedes cambiar varias propiedades a la vez, en uno o más archivos de configuración, si usas una coma como separador. Cada propiedad debe especificarse en el formato file_prefix:property=value completo. Por ejemplo, para cambiar la configuración spark.master en el archivo spark-defaults.conf y la configuración dfs.hosts en el archivo hdfs-site.xml, usa la siguiente marca --properties: Cuando se crea un clúster, sucede lo siguiente:

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

API de REST

Para configurar spark.executor.memory en 10g, inserta la siguiente configuración de properties en la sección SoftwareConfig de tus solicitudes clusters.create:

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

gcloudUna forma sencilla de ver cómo construir el cuerpo JSON de una solicitud REST de clústeres de la API de Dataproc es iniciar el comando de --log-http equivalente mediante la marca . A continuación, se muestra un comando gcloud dataproc clusters create de muestra, que configura las propiedades del clúster con la marca --properties spark:spark.executor.memory=10g. El registro stdout muestra el cuerpo de la solicitud REST resultante (el fragmento properties se muestra a continuación):

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

Resultado:

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

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

Asegúrate de cancelar el comando después de que el cuerpo JSON aparece en el resultado si no quieres que el comando se aplique.

Console

Para cambiar la configuración spark.master en el archivo spark-defaults.conf, haz lo siguiente:

  1. En Cloud Console, abre la página Create a cluster (Crear un clúster) de Dataproc. Haz clic en el panel Personalizar clúster y desplázate hasta la sección Propiedades del clúster.

  2. Haz clic en + AGREGAR PROPIEDADES. Selecciona spark en la lista de prefijos y, luego, agrega "spark.master" en el campo Clave y la configuración en el campo Valor.

Propiedades del clúster en comparación con propiedades del trabajo

Apache Hadoop YARN, HDFS, Spark y otras propiedades con prefijos de archivo se aplican a nivel de clúster cuando creas un clúster. Muchas de estas propiedades también se pueden aplicar a trabajos específicos. Cuando se aplica una propiedad a un trabajo, no se usa el prefijo del archivo.

Ejemplo:

A fin de establecer la memoria del ejecutor de Spark en 4g para un trabajo de Spark (se omite el prefijo spark:):

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

Tabla de propiedades con prefijo de archivo

Prefijo de archivo Archivo Propósito del archivo
capacity-scheduler capacity-scheduler.xml Configuración de Hadoop YARN Capacity Scheduler
core core-site.xml Configuración general de Hadoop
distcp distcp-default.xml Configuración de Hadoop Distributed Copy
flink-log4j log4j.properties Archivo de configuración de Log4j
hadoop-env hadoop-env.sh Variables de entorno específicas de Hadoop
hadoop-log4j log4j.properties Archivo de configuración de Log4j
hbase hbase-site.xml Configuración de HBase
hbase-log4j log4j.properties Archivo de configuración de Log4j
hdfs hdfs-site.xml Configuración de Hadoop HDFS
hive hive-site.xml Configuración de Hive
hive-log4j2 hive-log4j2.properties Archivo de configuración de Log4j
mapred mapred-site.xml Configuración de Hadoop MapReduce
mapred-env mapred-env.sh Variables de entorno específicas de Hadoop MapReduce
pig pig.properties Configuración de Pig
pig-log4j log4j.properties Archivo de configuración de Log4j
presto config.properties Configuración de Presto
presto-jvm jvm.config Configuración de JVM específica de Presto
spark spark-defaults.conf Configuración de Spark
spark-env spark-env.sh Variables de entorno específicas de Spark
spark-log4j log4j.properties Archivo de configuración de Log4j
webcat-log4j webhcat-log4j2.properties Archivo de configuración de Log4j
yarn yarn-site.xml Configuración de Hadoop YARN
yarn-env yarn-env.sh Variables de entorno específicas de Hadoop YARN
zeppelin zeppelin-site.xml Configuración de Zeppelin
zeppelin-env zeppelin-env.sh Variables de entorno específicas de Zeppelin (solo componente opcional)
zeppelin-log4j log4j.properties Archivo de configuración de Log4j
zookeeper zoo.cfg Configuración de Zookeeper
zookeeper-log4j log4j.properties Archivo de configuración de Log4j

Notas

  • Algunas propiedades están reservadas y no se pueden anular porque afectan la funcionalidad del clúster de Dataproc. Si intentas cambiar una propiedad reservada, recibirás un mensaje de error cuando crees tu clúster.
  • Puedes especificar varios cambios si los separas con una coma.
  • La marca --properties no puede modificar los archivos de configuración que no se muestran anteriormente.
  • Los cambios en las propiedades se aplicarán antes de que comiencen los daemons en tu clúster.
  • Si existe la propiedad especificada, se actualizará. Si no existe la propiedad especificada, se agregará al archivo de configuración.

Propiedades del servicio de Dataproc

Las propiedades que se mencionan a continuación son específicas de Dataproc. Estas propiedades se pueden usar para configurar aún más la funcionalidad de tu clúster de Dataproc. Estas propiedades del clúster se especifican en la creación del clúster. No se pueden especificar ni actualizar después de la creación del clúster.

Formato

La marca gcloud dataproc clusters create --properties acepta el siguiente formato de string:

property_prefix1:property1=value1,property_prefix2:property2=value2,...
  • El delimitador predeterminado que se usa para separar varias propiedades del clúster es la coma (,). Sin embargo, si se incluye una coma en un valor de propiedad, debes cambiar el delimitador mediante la especificación de un signo "^"delimiter^" al comienzo de la lista de propiedades (consultaescape de tema de gcloud para obtener más información).

    • Ejemplo con un delimitador “#”:
      --properties ^#^property_prefix1:property1=part1,part2#property_prefix2:property2=value2
      

Ejemplo:

Crea un clúster y configura el Modo de flexibilidad mejorada en Shuffle de trabajador principal de Spark.

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

Tabla de propiedades del servicio de Dataproc

Prefijo de propiedad Property Valores Descripción
dataproc agente.process.threads.job.min number Dataproc ejecuta controladores de trabajos de usuario de forma simultánea en un conjunto de subprocesos. Esta propiedad controla la cantidad mínima de subprocesos en el grupo de subprocesos para un inicio rápido, incluso cuando no se ejecutan trabajos (valor predeterminado: 10).
dataproc agente.process.threads.job.max number Dataproc ejecuta controladores de trabajos de usuario de forma simultánea en un conjunto de subprocesos. Esta propiedad controla la cantidad máxima de subprocesos en el conjunto de subprocesos y, por lo tanto, limita la simultaneidad máxima de trabajos de usuario. Aumenta este valor para una simultaneidad más alta (valor predeterminado: 100).
dataproc am.primary_only true o false Configura esta propiedad en true para evitar que la aplicación principal se ejecuta en los trabajadores interrumpibles del clúster de Dataproc. Nota: Esta característica solo está disponible con Dataproc 1.2 y superior. El valor predeterminado es false.
dataproc conda.env.config.uri gs://<path> Ubicación en Cloud Storage del archivo de configuración del entorno de Conda. Se creará un nuevo entorno de Conda y se activará en función de este archivo. Para obtener más información, consulta Usa propiedades de clúster relacionadas con Conda. (valor predeterminado: empty).
dataproc paquetes.conda. Paquetes de Conda Esta propiedad toma una lista de paquetes Conda separados por comas con versiones específicas para instalar en el entorno Conda base. Para obtener más información, consulta Usa propiedades de clúster relacionadas con Conda. (valor predeterminado: empty).
dataproc dataproc.allow.zero.workers true o false Configura esta propiedad SoftwareConfig como true en una solicitud a la API de Dataproc clusters.create para crear un clúster de nodo único, que cambia el número predeterminado de trabajadores de 2 a 0, y coloca los componentes del trabajador en el host principal. También se puede crear un clúster de nodo único desde Cloud Console o con la herramienta de línea de comandos de gcloud si estableces la cantidad de trabajadores en 0.
dataproc dataproc.alpha.master.nvdimm.size.gb 1500-6500 Si configuras un valor, se crea una instancia principal de Dataproc con memoria persistente Intel Optane DC. Nota: Las VM de Optane solo se pueden crear en zonas us-central1-f, solo con el tipo de máquina n1-highmem-96-aep y solo en proyectos incluidos en la lista blanca.
dataproc: dataproc.alpha.worker.nvdimm.size.gb 1500-6500 La configuración de un valor crea un trabajador de Dataproc con memoria persistente de Intel Optane DC. Nota: Las VM de Optane solo se pueden crear en zonas us-central1-f, solo con el tipo de máquina n1-highmem-96-aep y solo en proyectos incluidos en la lista blanca.
dataproc: dataproc.beta.secure.multi-tenancy.user.mapping user-to-service account mappings Esta propiedad toma una lista de mapeos de cuentas de usuario a servicio. Los usuarios asignados pueden enviar cargas de trabajo interactivas al clúster con identidades de usuario aisladas (consulta Multiusuario seguro basado en cuentas de servicio de Dataproc).
dataproc dataproc.conscrypt.provider.enable true o false Habilita (true) o inhabilita (false) Conscrypt como el proveedor de seguridad de Java principal. Nota: Se habilita Conscrypt de manera predeterminada en Dataproc 1.2 y superior, pero se inhabilita en 1.0/1.1.
dataproc dataproc.cooperative.multi-tenancy.user.mapping user-to-service account mappings Esta propiedad toma una lista de asignaciones de cuenta de servicio a usuario separadas por comas. Si se crea un clúster con este conjunto de propiedades, cuando un usuario envía un trabajo, el clúster intentará simular la cuenta de servicio correspondiente cuando accede a Cloud Storage a través del conector de Cloud Storage. Esta función requiere que la versión del conector de Cloud Storage sea 2.1.4 o superior. Para obtener más información, consulta Dataproc cooperative multiusuario. (valor predeterminado: empty).
dataproc dataproc.localssd.mount.enable true o false Ya sea para activar SSD locales como los directorios temporales de Hadoop/Spark y directorios de datos de HDFS (predeterminado: true).
dataproc dataproc.logging.stackdriver.enable true o false Habilita (true) o inhabilita (false) Cloud Logging (valor predeterminado: true). Consulta Precios de Cloud Logging para conocer los cargos asociados.
dataproc dataproc.logging.stackdriver.job.driver.enable true o false Habilita (true) o inhabilita (false) los registros del controlador del trabajo de Dataproc en Cloud Logging (valor predeterminado: false).
dataproc dataproc.logging.stackdriver.job.yarn.container.enable true o false Habilita (true) o inhabilita (false) los registros de contenedor de YARN en Cloud Logging. (predeterminado: false)
dataproc dataproc.master.custom.init.actions.mode. RUN_BEFORE_SERVICES o RUN_AFTER_SERVICES En los clústeres de imagen versión 2.0 o posteriores, cuando se configura en RUN_AFTER_SERVICES, las acciones de inicialización en la instancia principal se ejecutan después de HDFS y cualquier servicio que dependa de HDFS se inicialice. Algunos ejemplos de servicios dependientes de HDFS incluyen HBase, Hive Server2, Ranger, Solr y los servidores de historial Spark y MapReduce. (valor predeterminado: RUN_BEFORE_SERVICES).
dataproc dataproc.monitoring.stackdriver.enable true o false Habilita (true) o inhabilita (false) el agente de Cloud Monitoring (valor predeterminado: false). El agente de Cloud Monitoring recopila métricas de VM desde la perspectiva del SO invitado para recopilar métricas no predeterminadas, como la memoria y el uso del disco. Consulta las métricas del agente de Cloud Monitoring para ver la lista de métricas y los precios de Cloud Monitoring para conocer los cargos asociados.
dataproc dataproc.scheduler.driver-size-mb number El alcance de memoria promedio del controlador, que determina la cantidad máxima de trabajos simultáneos que ejecutará un clúster El valor predeterminado es 1 GB. Un valor más pequeño, como 256, puede ser adecuado para los trabajos de Spark.
dataproc dataproc.snap.enabled true o false Habilita o inhabilita el daemon de Snap Snap. El valor predeterminado es true. Si se configura como false, los paquetes de Snap preinstalados en la imagen no se verán afectados, pero la actualización automática estará inhabilitada. Se aplica a las imágenes de Ubuntu 1.4.71, 1.5.46, 2.0.20 y posteriores.
dataproc dataproc.worker.custom.init.actions.mode RUN_BEFORE_SERVICES Para clústeres de imágenes anteriores a 2.0, RUN_ANTE_SERVICESno es Configurar, pero el usuario puede configurarla cuando se crea el clúster. En el caso de los clústeres de imágenes de más de 2.0, RUN_before_SERVICES es configurado y la propiedad no se puede pasar al clúster (el usuario no puede cambiarla). Para obtener información sobre los efectos de esta configuración, consulta Lineamientos y consideraciones importantes: procesamiento de inicialización.
dataproc efm.mapreduce.shuffle hcfs Si se configura como hcfs, los datos de redistribución de Spark se conservan en HDFS. Consulta Modo de flexibilidad mejorada de Dataproc para obtener más información. Nota: Por el momento, esta función solo está disponible en Dataproc 1.4 y 1.5.
dataproc efm.spark.shuffle primary-worker (recomendado) o hcfs (obsoleto) Si se configura como primary-worker, los asignadores escriben datos en trabajadores principales (disponibles y recomendados para los trabajos de Spark). Si se configura como hcfs, los datos de redistribución de Spark se conservan en HDFS. Consulta Modo de flexibilidad mejorada de Dataproc para obtener más información. Nota: Por el momento, esta función solo está disponible en Dataproc 1.4 y 1.5.
dataproc job.history.to-gcs.enabled true o false Permite conservar los archivos de historial de MapReduce y Spark en el depósito temporal de Dataproc (predeterminado: true para las versiones de imagen 1.5 o superior). Los usuarios pueden reemplazar las ubicaciones de la persistencia de los archivos del historial de trabajos mediante las siguientes propiedades: mapreduce.jobhistory.done-dir, mapreduce.jobhistory.intermediate-done-dir, spark.eventLog.dir y spark.history.fs.logDirectory.
dataproc jobs.file-backed-output.enable true o false Configura los trabajos de Dataproc para canalizar su resultado en archivos temporales en el directorio /var/log/google-dataproc-job. Se debe configurar en true para habilitar el registro del controlador de trabajos en Cloud Logging (valor predeterminado: true).
dataproc jupyter.listen.all.interfaces true o false Para reducir el riesgo de ejecución de código remoto mediante API de servidor de notebook no seguro, la configuración predeterminada para las versiones de imagen 1.3 y posteriores es la siguiente:false, que restringe las conexiones alocalhost (127.0.0.1 ) cuandoPuerta de enlace del componente Está habilitada (la activación de Puerta de enlace de componentes no es necesaria para imágenes 2.0+). Esta configuración predeterminada se puede anular. Para hacerlo, establece esta propiedad en true para permitir todas las conexiones.
dataproc jupyter.notebook.gcs.dir gs://<dir-path> Ubicación en Cloud Storage para guardar notebooks de Jupyter.
dataproc kerberos.beta.automatic-config.enable true o false Cuando se establece como true, los usuarios no necesitan especificar la contraseña principal de Kerberos con las marcas --kerberos-root-principal-password y --kerberos-kms-key-uri (predeterminado: false). Consulta Habilita el modo seguro de Hadoop mediante Kerberos para obtener más información.
dataproc kerberos.cross-realm-trust.admin-server hostname/address nombre de host/dirección del servidor de administrador remoto (a menudo, igual que el servidor KDC).
dataproc kerberos.cross-realm-trust.kdc hostname/address nombre de host/dirección de KDC remoto.
dataproc kerberos.cross-realm-trust.realm realm name Los nombres reales pueden consistir en cualquier string ASCII en MAYÚSCULAS. Por lo general, el nombre de dominio es el mismo que el nombre de dominio DNS (en MAYÚSCULAS). Ejemplo: Si las máquinas se denominan "machine-id.example.west-coast.mycompany.com", el dominio asociado puede designarse como "EXAMPLE.WEST-COAST.MYCOMPANY.COM".
dataproc kerberos.cross-realm-trust.shared-password.uri gs://<dir-path> Ubicación en Cloud Storage de la contraseña compartida encriptada en KMS.
dataproc kerberos.kdc.db.key.uri gs://<dir-path> Ubicación en Cloud Storage del archivo encriptado de KMS que contiene la clave de instancia principal de la base de datos de KDC.
dataproc kerberos.key.password.uri gs://<dir-path> Ubicación en Cloud Storage del archivo encriptado por KMS que contiene la contraseña de la clave en el archivo del almacén de claves.
dataproc kerberos.keystore.password.uri gs://<dir-path> Ubicación en Cloud Storage del archivo encriptado por KMS que contiene la contraseña del almacén de claves.
dataproc kerberos.keystore.uri1 gs://<dir-path> Ubicación en Cloud Storage del archivo de almacén de claves que contiene el certificado comodín y la clave privada que usan los nodos del clúster.
dataproc kerberos.kms.key.uri KMS key URI El URI de la clave de KMS que se usa para desencriptar la contraseña raíz, por ejemplo projects/project-id/locations/region/keyRings/key-ring/cryptoKeys/key (consulta ID de recurso de la clave).
dataproc kerberos.root.principal.password.uri gs://<dir-path> Ubicación en Cloud Storage de la contraseña encriptada por KMS para la cuenta principal raíz de Kerberos.
dataproc kerberos.tgt.lifetime.hours hours Duración máxima del ticket comprobante.
dataproc kerberos.truststore.password.uri gs://<dir-path> Ubicación en Cloud Storage del archivo encriptado por KMS que contiene la contraseña del archivo de Truststore.
dataproc kerberos.truststore.uri2 gs://<dir-path> Ubicación en Cloud Storage del archivo del almacén de confianza encriptado mediante KMS que contiene certificados de confianza.
dataproc pip.packages Paquetes pip Esta propiedad incluye una lista de paquetes Pip separados por comas con versiones específicas para instalar en el entorno Conda base. Para obtener más información, consulta Propiedades de clúster relacionadas con Conda. (valor predeterminado: empty).
dataproc ranger.kms.key.uri KMS key URI El URI de la clave KMS que se usa para desencriptar la contraseña del usuario administrador de Ranger, por ejemplo projects/project-id/locations/region/keyRings/key-ring/cryptoKeys/key (consulta ID de recurso de la clave).
dataproc ranger.admin.password.uri gs://<dir-path> Ubicación en Cloud Storage de la contraseña encriptada mediante KMS para el usuario administrador Ranger.
dataproc ranger.db.admin.password.uri gs://<dir-path> Ubicación en Cloud Storage de la contraseña encriptada mediante KMS para el usuario administrador de la base de datos Ranger.
dataproc ranger.cloud-sql.instance.connection.name cloud sql instance connection name El nombre de la conexión de la instancia de Cloud SQL, por ejemplo, project-id:region:name.
dataproc ranger.cloud-sql.root.password.uri gs://<dir-path> Ubicación en Cloud Storage de la contraseña encriptada mediante KMS para el usuario raíz de la instancia de Cloud SQL.
dataproc ranger.cloud-sql.use-private-ip true o false Si la comunicación entre instancias de clústeres y la instancia de Cloud SQL debe ser a través de una IP privada (el valor predeterminado es false).
dataproc solr.gcs.path gs://<dir-path> Ruta de acceso de Cloud Storage para que actúe como el directorio principal de Solr.
dataproc startup.component.service-binding-timeout.hadoop-hdfs-namenode seconds La cantidad de tiempo que esperará la secuencia de comandos de inicio de Dataproc a fin de que hadoop-hdfs-namenode se vincule a los puertos antes de decidir que su inicio se realizó correctamente. El valor máximo reconocido es de 1800 segundos (30 minutos).
dataproc startup.component.service-binding-timeout.hive-metastore seconds La cantidad de tiempo que esperará la secuencia de comandos de inicio de Dataproc a fin de que el servicio hive-metastore se vincule a los puertos antes de decidir que su inicio se realizó correctamente. El valor máximo reconocido es de 1800 segundos (30 minutos).
dataproc startup.component.service-binding-timeout.hive-server2 seconds La cantidad de tiempo que esperará la secuencia de comandos de inicio de Dataproc a fin de que hive-server2 se vincule a los puertos antes de decidir que su inicio se realizó correctamente. El valor máximo reconocido es de 1800 segundos (30 minutos).
dataproc user-Attribution.enabled true o false Configura esta propiedad en true para atribuir un trabajo de Dataproc a la identidad del usuario que lo envió. Nota: Esta propiedad no se aplica a los clústeres con Kerberos habilitado (el valor predeterminado es false).
dataproc yarn.log-aggregation.enabled true o false Permite (true) activar la agregación de registros de YARN al temp bucket del clúster. El nombre del bucket tiene el siguiente formato: dataproc-temp-<REGION>-<PROJECT_NUMBER>-<RANDOM_STRING>. (Predeterminado: true para las versiones de imagen 1.5 y posteriores). Nota: El bucket temporal del clúster no se borra cuando se borra el clúster. Además, pueden establecer la ubicación de los registros de YARN agregados reemplazando la propiedad yarn.nodemanager.remote-app-log-dir de YARN.
knox gateway.host ip address Para reducir el riesgo de ejecución de código remoto en las API de servidor de notebook no seguro, la configuración predeterminada para las versiones con imágenes 1.3 y posteriores es 127.0.0.1, que restringe las conexiones a localhost cuando la puerta de enlace del componente está habilitada. La configuración predeterminada se puede anular, por ejemplo, mediante la configuración de esta propiedad en 0.0.0.0 para permitir todas las conexiones.
zeppelin zeppelin.notebook.gcs.dir gs://<dir-path> Ubicación en Cloud Storage para guardar notebooks de Zeppelin.
zeppelin zeppelin.server.addr ip address Para reducir el riesgo de ejecución del código remoto en las API de servidor de notebook no seguro, la configuración predeterminada para las versiones con imágenes 1.3 y posteriores es 127.0.0.1, que restringe las conexiones a localhost cuando la puerta de enlace del componente está habilitada. Esta configuración predeterminada se puede anular, por ejemplo, mediante la configuración de esta propiedad en 0.0.0.0, para permitir todas las conexiones.

1Archivo de almacén de claves: El archivo de almacén de claves contiene el certificado SSL. Debe estar en formato Java KeyStore (JKS). Cuando se copia en VM, se le cambia el nombre a keystore.jks. El certificado SSL debe ser un certificado comodín que se aplica a cada nodo en el clúster.

2Archivo de almacén de confianza: El archivo de almacén de confianza debe estar en formato Java Keystore (JKS). Cuando se copia en VM, se le cambia el nombre a truststore.jks.