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 strings:

file_prefix1:property1=value1,file_prefix2:property2=value2,...
  • file_prefix se asigna a un archivo de configuración predefinido, como se muestra en la siguiente tabla, y property se asigna 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 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:

--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, luego, desplázate a 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

Las propiedades de Apache Hadoop YARN, HDFS, Spark y otras propiedades con prefijo de archivo se aplican al nivel del 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
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

  • 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 durante 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 strings:

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 como la redistribución aleatoria de trabajadores.

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 la propiedad Property Valores Descripció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 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.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 usuario a servicio 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 la versión del conector de Cloud Storage 2.1.4 o una versión posterior (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) 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 (valor 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 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.worker.custom.init.actions.mode RUN_BEFORE_SERVICES (predeterminado: sin habilitar). Si se especifica, durante la creación del clúster, cuando se inicia por primera vez 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 datanode. Consulta Acciones de inicalización: consideraciones y lineamientos importantes.
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.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 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 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 si reemplazan 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 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.