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 en el SDK de Cloud para modificar muchos archivos de configuración comunes cuando creas un clúster.

Propiedades de clúster y de trabajo. Las Apache Hadoop YARN, HDFS, Spark, y otras propiedades con prefijo que se enumeran a continuación se aplican al nivel del clúster cuando creas un clúster. Muchas de estas propiedades se pueden aplicar a trabajos específicos con la marca --properties con el comando gcloud dataproc jobs submit. Cuando se aplica una propiedad a un trabajo, no se usa el prefijo de archivo relacionado que se muestra a continuación.

Ejemplo:

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

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 ...

Cómo funciona la marca properties

Para facilitar la actualización de archivos y propiedades, la marca gcloud dataproc clusters create --properties usa un formato especial para especificar el archivo de configuración y la propiedad y el valor dentro del archivo que se debe actualizar.

Formato

La marca --properties requiere una string de texto en el siguiente formato:

file_prefix1:property1=value1,file_prefix2:property2=value2,...

Notas:

  • La marca --properties se usa para modificar un conjunto específico de archivos de configuración de uso común. El file_prefix se asigna a un conjunto predefinido de archivos de configuración.

  • El delimitador predeterminado que se usa para separar varias propiedades es la coma (,). Sin embargo, si se incluye una coma en un valor de propiedad, debes cambiar el delimitador mediante la especificación de “^DELIMITER^” al principio de la lista de propiedades.

    Ejemplo para usar un delimitador "#":

    --properties ^#^file_prefix1:property1=part1,part2#file_prefix2:property2=value2
    
    Consulta el tema de escape de gcloud para obtener más información.

file_prefix 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
hadoop-env hadoop-env.sh Variables de entorno específicas de Hadoop
hbase hbase-site.xml Configuración de HBase
hdfs hdfs-site.xml Configuración de Hadoop HDFS
hive hive-site.xml Configuración de Hive
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
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
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)
zookeeper zoo.cfg Configuración de Zookeeper

Notas importantes

  • 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

Estas son propiedades adicionales específicas de Dataproc que no se incluyen en los archivos enumerados antes. Estas propiedades se pueden usar para configurar aún más la funcionalidad de tu clúster de Dataproc. Nota: Las siguientes propiedades de clúster se especifican durante la creación del clúster. No se pueden especificar ni actualizar después de la creación del clúster.

Property Valores Función
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:dataproc.allow.zero.workers true o false Configura esta propiedad SoftwareConfig en true en una solicitud de la API de Dataproc clusters.create para crear un clúster de un solo nodo, 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 un solo nodo desde Cloud Console o con la herramienta de línea de comandos de gcloud si configuras el número 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.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.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) Logging (predeterminado: true).
dataproc:dataproc.logging.stackdriver.job.driver.enable true o false Habilita (true) o inhabilita (false) los registros del controlador de trabajo de Dataproc en Logging (predeterminado: false).
dataproc:dataproc.logging.stackdriver.job.yarn.container.enable true o false Habilita (true) o inhabilita (false) registros de contenedor YARN en Logging. (predeterminado: false).
dataproc:dataproc.monitoring.stackdriver.enable true o false Habilita (true) o inhabilita (false) el agente de supervisión.
dataproc:dataproc.scheduler.driver-size-mb number La huella 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 menor, como 256, puede ser adecuado para los trabajos de Spark.
dataproc:dataproc.worker.custom.init.actions.mode RUN_BEFORE_SERVICES (predeterminado: no habilitado). Si se especifica, durante la creación del clúster, cuando se inicia una VM de trabajador principal, sus acciones de inicialización se ejecutarán antes de que se inicien el administrador de nodos y los daemons de nodo de datos. Consulta Usa acciones de inicialización.
dataproc:efm.mapreduce.shuffle hcfs Configura esta propiedad del modo de flexibilidad mejorada de Dataproc en hcfs para preservar los datos de la redistribución de MapReduce en HDFS cuando se quita un nodo de Dataproc. Nota: Esta característica solo está disponible con Dataproc 1.4 y superior.
dataproc:efm.spark.shuffle hcfs Configura esta propiedad del modo de flexibilidad mejorada de Dataproc en hcfs para preservar los datos de la redistribución de Spark en HDFS cuando se quita un nodo de Dataproc. Nota: Por el momento, esta característica solo está disponible con Dataproc 1.4.
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 como true para habilitar el registro del controlador de trabajos en Logging (valor predeterminado: true).
dataproc:jupyter.listen.all.interfaces true o false 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 de imagen 1.3 y posteriores es false, que restringe las conexiones a localhost (127.0.0.1) cuando la puerta de enlace del componente está habilitada. 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.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 del 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.persuelo.miempresa.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 de almacenamiento de confianza encriptado con KMS que contiene certificados confiables.
dataproc:ranger.kms.key.uri KMS key URI El URI de la clave de 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 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 con KMS para el usuario administrador de la base de datos Ranger.
dataproc:ranger.cloud-sql.instance.connection.name cloud sql instance connection time El tiempo de 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 por 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 las instancias del clúster y la instancia de Cloud SQL debe realizarse mediante 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:yarn.log-aggregation.enabled true o false Permite (true) activar la agregación de registros YARN en un depósito temporal de Dataproc. El nombre del depósito tiene el siguiente formato: dataproc-temp-<REGION>-<PROJECT_NUMBER>-<RANDOM_STRING>. (predeterminado: true para las versiones de imagen 1.5 o posteriores). Los usuarios también pueden establecer la ubicación de los registros YARN agregados mediante la reemplazo de 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 de imagen 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, si se configura 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 de código remoto en las API de servidor de notebook no seguro, la configuración predeterminada para las versiones de imagen 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, si estableces esta propiedad en 0.0.0.0, para permitir todas las conexiones.

1Archivo de Keystore: el archivo de almacén de claves contiene el certificado SSL. Debe estar en formato Java KeyStore (JKS). Cuando se copia en las VM, se le cambia el nombre a keystore.jks. El certificado SSL debe ser un certificado comodín que se aplique 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.

Ejemplos

Comando de gcloud

Para cambiar la configuración spark.master en el archivo spark-defaults.conf, puedes agregar la marca properties que se muestra cuando creas un clúster nuevo en la línea de comandos:
--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. Se debe especificar cada propiedad 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, puedes usar la marca siguiente cuando crees un clúster:
--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"
}

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 Advanced options (Opciones avanzadas) en la parte inferior de la página para ver la sección Cluster properties (Propiedades del clúster).

  2. Haz clic en + Add cluster property (+ Agregar propiedad del clúster), selecciona spark en la lista desplegable de la izquierda y agrega "spark.master" en el campo de propiedad y la configuración en el campo de valor.