Salida y registros de tareas de Dataproc

Cuando envías una tarea de Dataproc, Dataproc recoge automáticamente el resultado de la tarea y lo pone a tu disposición. Esto significa que puedes revisar rápidamente la salida de los trabajos sin tener que mantener una conexión con el clúster mientras se ejecutan los trabajos o consultar archivos de registro complicados.

Registros de Spark

Hay dos tipos de registros de Spark: los registros del controlador de Spark y los registros del ejecutor de Spark. Los registros del controlador de Spark contienen la salida de los trabajos, mientras que los registros del ejecutor de Spark contienen la salida del ejecutable o del lanzador de los trabajos, como el mensaje spark-submit "Submitted application xxx" (Se ha enviado la aplicación xxx). Estos registros pueden ser útiles para depurar errores de los trabajos.

El controlador de tareas de Dataproc, que es distinto del controlador de Spark, es un lanzador de muchos tipos de tareas. Al iniciar tareas de Spark, se ejecuta como un envoltorio en el ejecutable spark-submit subyacente, que inicia el controlador de Spark. El controlador de Spark ejecuta la tarea en el clúster de Dataproc en modo Spark client o cluster:

  • Modo client: el controlador de Spark ejecuta la tarea en el proceso spark-submit y los registros de Spark se envían al controlador de la tarea de Dataproc.

  • cluster: el controlador de Spark ejecuta el trabajo en un contenedor de YARN. Los registros del controlador de Spark no están disponibles para el controlador de la tarea de Dataproc.

Información general sobre las propiedades de las tareas de Dataproc y Spark

Propiedad Valor Predeterminado Descripción
dataproc:dataproc.logging.stackdriver.job.driver.enable verdadero o falso falso Debe definirse al crear el clúster. Cuando true, la salida del controlador de tareas está en Logging, asociada al recurso de la tarea; cuando false, la salida del controlador de tareas no está en Logging.
Nota: Los siguientes ajustes de propiedades de clúster también son necesarios para habilitar los registros de controladores de trabajos en Logging y se definen de forma predeterminada cuando se crea un clúster: dataproc:dataproc.logging.stackdriver.enable=true y dataproc:jobs.file-backed-output.enable=true.
dataproc:dataproc.logging.stackdriver.job.yarn.container.enable verdadero o falso falso Debe definirse al crear el clúster. Cuando true, los registros de contenedores de YARN de la tarea se asocian al recurso de la tarea. Cuando false, los registros de contenedores de YARN de la tarea se asocian al recurso del clúster.
spark:spark.submit.deployMode cliente o clúster client Controla el modo client o cluster de Spark.

Tareas de Spark enviadas mediante la API jobs de Dataproc

En las tablas de esta sección se indica el efecto de los distintos ajustes de propiedades en el destino de la salida del controlador de tareas de Dataproc cuando se envían tareas a través de la API jobs de Dataproc, lo que incluye el envío de tareas a través de la consolaGoogle Cloud , la CLI de gcloud y las bibliotecas de cliente de Cloud.

Las propiedades de Dataproc y Spark que se indican se pueden definir con la marca --properties al crear un clúster y se aplicarán a todas las tareas de Spark que se ejecuten en el clúster. Las propiedades de Spark también se pueden definir con la marca --properties (sin el prefijo "spark:") al enviar una tarea a la API jobs de Dataproc y se aplicarán solo a la tarea.

Salida del controlador de tareas de Dataproc

En las siguientes tablas se muestra el efecto de los diferentes ajustes de propiedad en el destino de la salida del controlador de trabajos de Dataproc.

dataproc:
dataproc.logging.stackdriver.job.driver.enable
Salida
false (valor predeterminado)
  • Transmitido al cliente
  • En Cloud Storage, en la ruta driverOutputResourceUri generada por Dataproc
  • No en el registro
true
  • Transmitido al cliente
  • En Cloud Storage, en la ruta driverOutputResourceUri generada por Dataproc
  • En Logging: dataproc.job.driver en el recurso de trabajo.

Registros del controlador de Spark

En las siguientes tablas se muestra el efecto de los diferentes ajustes de propiedad en el destino de los registros del controlador de Spark.

spark:
spark.submit.deployMode
dataproc:
dataproc.logging.stackdriver.job.driver.enable
dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
Salida del controlador
client false (valor predeterminado) verdadero o falso
  • Transmitido al cliente
  • En Cloud Storage, en la ruta driverOutputResourceUri generada por Dataproc
  • No en el registro
client true verdadero o falso
  • Transmitido al cliente
  • En Cloud Storage, en la ruta driverOutputResourceUri generada por Dataproc
  • En Registro: dataproc.job.driver en el recurso de trabajo
clúster false (valor predeterminado) falso
  • No se transmite al cliente
  • No está en Cloud Storage
  • En Logging yarn-userlogs, en el recurso de clúster
clúster true true
  • No se transmite al cliente
  • No está en Cloud Storage
  • En Registro: dataproc.job.yarn.container en el recurso de trabajo

Registros del ejecutor de Spark

En las siguientes tablas se muestra el efecto de las diferentes configuraciones de propiedades en el destino de los registros del ejecutor de Spark.

dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
Registro del ejecutor
false (valor predeterminado) En Registro: yarn-userlogs en el recurso de clúster
true En Logging dataproc.job.yarn.container, en el recurso de trabajo

Tareas de Spark enviadas sin usar la API jobs de Dataproc

En esta sección se indica el efecto de los diferentes ajustes de propiedades en el destino de los registros de trabajos de Spark cuando se envían trabajos sin usar la API jobs de Dataproc. Por ejemplo, cuando se envía un trabajo directamente en un nodo de clúster mediante spark-submit o cuando se usa un cuaderno de Jupyter o Zeppelin. Estos trabajos no tienen IDs de trabajo ni controladores de Dataproc.

Registros del controlador de Spark

En las siguientes tablas se muestra el efecto de los diferentes ajustes de propiedades en el destino de los registros del controlador de Spark de los trabajos que no se envían a través de la API de Dataproc jobs.

spark:
spark.submit.deployMode
Salida del controlador
client
  • Transmitido al cliente
  • No está en Cloud Storage
  • No en el registro
clúster
  • No se transmite al cliente
  • No está en Cloud Storage
  • En Logging yarn-userlogs, en el recurso de clúster

Registros del ejecutor de Spark

Cuando las tareas de Spark no se envían a través de la API de jobs de Dataproc, los registros del ejecutor se encuentran en Logging yarn-userlogs en el recurso de clúster.

Ver la salida de una tarea

Puedes acceder a la salida de las tareas de Dataproc en la Google Cloud consola, la CLI de gcloud, Cloud Storage o Logging.

Consola

Para ver el resultado de un trabajo, vaya a la sección Trabajos de Dataproc de su proyecto y, a continuación, haga clic en el ID del trabajo para ver el resultado.

Si el trabajo está en curso, el resultado se actualiza periódicamente con contenido nuevo.

Comando gcloud

Cuando envías una tarea con el comando gcloud dataproc jobs submit, el resultado de la tarea se muestra en la consola. Puedes volver a unirte a la salida más adelante, en otro ordenador o en una ventana nueva, pasando el ID de tu trabajo al comando gcloud dataproc jobs wait. El ID de trabajo es un GUID, como 5c1754a5-34f7-4553-b667-8a1199cb9cab. Aquí tienes un ejemplo.

gcloud dataproc jobs wait 5c1754a5-34f7-4553-b667-8a1199cb9cab \
    --project my-project-id --region my-cluster-region
Waiting for job output...
... INFO gcs.GoogleHadoopFileSystemBase: GHFS version: 1.4.2-hadoop2
... 16:47:45 INFO client.RMProxy: Connecting to ResourceManager at my-test-cluster-m/
...

Cloud Storage

La salida de los trabajos se almacena en Cloud Storage, ya sea en el segmento de almacenamiento provisional o en el segmento que especificaste al crear el clúster. Se proporciona un enlace a los resultados de la tarea en Cloud Storage en el campo Job.driverOutputResourceUri devuelto por:

  • una solicitud a la API jobs.get.
  • un comando gcloud dataproc jobs describe job-id.
    $ gcloud dataproc jobs describe spark-pi
    ...
    driverOutputResourceUri: gs://dataproc-nnn/jobs/spark-pi/driveroutput
    ...
    

Almacenamiento de registros

Consulta Registros de Dataproc para obtener información sobre cómo ver la salida de las tareas de Dataproc en Logging.