Envía un trabajo

Puedes enviar un trabajo a un clúster existente de Cloud Dataproc a través de una solicitud programática o HTTP a la API de jobs.submit de Cloud Dataproc con la herramienta de línea de comandos de gcloud del SDK de Cloud en una ventana de terminal local o en Cloud Shell, o bien desde Google Cloud Platform Console en un navegador local. También puedes establecer una conexión SSH con la instancia principal en tu clúster y luego ejecutar un trabajo de forma directa desde la instancia sin usar el servicio de Cloud Dataproc.

Envía un trabajo a Cloud Dataproc

Comando de gcloud

Para enviar un trabajo a un clúster de Cloud Dataproc, ejecuta el comando gcloud dataproc jobs submit del SDK de Cloud de forma local en una ventana de terminal o en Cloud Shell.
gcloud dataproc jobs submit job-command \
  --cluster cluster-name --region region \
  job-specific flags and args
Ejemplo de envío de un trabajo de PySpark
  1. Muestra el hello-world.py de acceso público, ubicado en Cloud Storage.
    gsutil cat gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py
    
    A continuación, se muestra la lista de archivos:
    #!/usr/bin/python
    import pyspark
    sc = pyspark.SparkContext()
    rdd = sc.parallelize(['Hello,', 'world!'])
    words = sorted(rdd.collect())
    print(words)
    
  2. Envía el trabajo de Pyspark a Cloud Dataproc.
    gcloud dataproc jobs submit pyspark \
        --cluster cluster-name --region region \
        gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py
    
    A continuación, se muestra el resultado de la terminal:
    Waiting for job output...
    …
    ['Hello,', 'world!']
    Job finished successfully.
    
Ejemplo de envío de un trabajo de Spark
  1. Ejecuta el ejemplo de SparkPi preinstalado en el nodo principal del clúster de Cloud Dataproc.
    gcloud dataproc jobs submit spark \
        --cluster cluster-name --region region \
        --class org.apache.spark.examples.SparkPi \
        --jars file:///usr/lib/spark/examples/jars/spark-examples.jar -- 1000
    
    A continuación, se muestra el resultado de la terminal:
    Job [54825071-ae28-4c5b-85a5-58fae6a597d6] submitted.
    Waiting for job output…
    …
    Pi is roughly 3.14177148
    …
    Job finished successfully.
    …
    

API de REST

Usa la API de jobs.submit de Cloud Dataproc para enviar un trabajo a un clúster. Aquí hay una solicitud HTTP POST para enviar un trabajo de Spark que calcule el valor aproximado de pi:
POST /v1/projects/vigilant-sunup-163401/regions/global/jobs:submit/
{
  "projectId": "vigilant-sunup-163401",
  "job": {
    "placement": {
      "clusterName": "cluster-1"
    },
    "reference": {
      "jobId": "d566957c-5bd1-464b-86a8-72a06907e493"
    },
    "sparkJob": {
      "args": [
        "1000"
      ],
      "mainClass": "org.apache.spark.examples.SparkPi",
      "jarFileUris": [
        "file:///usr/lib/spark/examples/jars/spark-examples.jar"
      ]
    }
  }
}

Console

Abre la página Submit a job de Cloud Dataproc en GCP Console en tu navegador.
Ejemplo de un trabajo de Spark

Para enviar un ejemplo de trabajo de Spark, llena los campos en la página Submit a job de la siguiente manera (como se muestra en la captura de pantalla anterior):

  1. En Cluster (Clúster), selecciona el nombre del clúster que quieres elegir de la lista.
  2. Establece Job type (Tipo de trabajo) como Spark.
  3. Establece Main class or jar (Archivo jar o clase principal) como org.apache.spark.examples.SparkPi.
  4. Establece Arguments (Argumentos) como el argumento único 1000.
  5. Agrega file:///usr/lib/spark/examples/jars/spark-examples.jar a Jar files (Archivos Jar):
    1. file:/// denota un esquema LocalFileSystem de Hadoop. Cloud Dataproc instaló /usr/lib/spark/examples/jars/spark-examples.jar en el nodo principal del clúster cuando este se creó.
    2. De manera alternativa, puedes especificar una ruta de Cloud Storage (gs://your-bucket/your-jarfile.jar) o una ruta de Hadoop Distributed File System (hdfs://path-to-jar.jar) a uno de tus archivos jar.

Haz clic en Submit (Enviar) para iniciar el trabajo. Una vez que se inicia el trabajo, se agrega a la lista Jobs (Trabajos).

Haz clic en el ID de trabajo para abrir la página Jobs, en la que podrás ver el resultado del controlador del trabajo (consulta Accede al resultado del controlador de trabajos–CONSOLE). Debido a que este trabajo produce líneas de resultados largas que exceden el ancho de la ventana del navegador, puedes verificar la casilla Line wrapping (Ajuste de línea) para ver el texto de resultado a fin de mostrar el resultado calculado de pi.

Puedes ver el resultado del controlador de trabajos desde la línea de comandos con gcloud dataproc jobs wait que se muestra a continuación (para obtener más información, consulta Accede al resultado del controlador de trabajos–GCLOUD COMMAND). Copia y pega tu ID del proyecto como el valor para la marca --project y tu ID de trabajo (que se muestra en la lista Jobs) como el argumento final.

gcloud dataproc --project=project-id jobs wait job-id

Aquí hay fragmentos del resultado del controlador para el ejemplo de trabajo de SparkPi enviado arriba:

gcloud dataproc --project=spark-pi-demo jobs wait \
  c556b47a-4b46-4a94-9ba2-2dcee31167b2

...

2015-06-25 23:27:23,810 INFO [dag-scheduler-event-loop]
scheduler.DAGScheduler (Logging.scala:logInfo(59)) - Stage 0 (reduce at
SparkPi.scala:35) finished in 21.169 s

2015-06-25 23:27:23,810 INFO [task-result-getter-3] cluster.YarnScheduler
(Logging.scala:logInfo(59)) - Removed TaskSet 0.0, whose tasks have all
completed, from pool

2015-06-25 23:27:23,819 INFO [main] scheduler.DAGScheduler
(Logging.scala:logInfo(59)) - Job 0 finished: reduce at SparkPi.scala:35,
took 21.674931 s

Pi is roughly 3.14189648

...

Job [c556b47a-4b46-4a94-9ba2-2dcee31167b2] finished successfully.

driverOutputUri:
gs://sample-staging-bucket/google-cloud-dataproc-metainfo/cfeaa033-749e-48b9-...
...

Envía un trabajo directamente en tu clúster

Si deseas ejecutar un trabajo directamente en tu clúster sin usar el servicio de Cloud Dataproc, establece una conexión SSH al nodo principal de tu clúster y luego ejecuta el trabajo en él.

Establece una conexión SSH a la instancia principal

Puedes conectarte a una instancia de VM de Compute Engine en tu clúster si usas una conexión SSH desde la línea de comandos o desde GCP Console.

Comando de gcloud

Ejecuta el comando gcloud compute ssh en una ventana de terminal local o desde Cloud Shell a fin de establecer una conexión SSH al nodo principal de tu clúster (el nombre predeterminado para el nodo principal es el nombre del clúster seguido de un sufijo -m).

gcloud compute ssh --project=project-id cluster-name-m

El siguiente fragmento usa gcloud compute ssh para establecer una conexión SSH al nodo principal de cluster-1.

gcloud compute ssh --project=my-project-id cluster-1-m
...
Linux cluster-1-m 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u6...
...
user@cluster-1-m:~$

Console

Usa GCP Console a fin de establecer una conexión SSH al nodo principal de tu clúster (el nombre predeterminado para el nodo principal es el nombre del clúster seguido de un sufijo -m).
  1. En GCP Console, dirígete a la página VM Instances (Instancias de VM).
  2. En la lista de instancias de máquinas virtuales, haz clic en SSH en la fila de la instancia principal (sufijo -m) a la que deseas conectarte.

Se abrirá una ventana del navegador en tu directorio principal del nodo.

Connected, host fingerprint: ssh-rsa ...
Linux cluster-1-m 3.16.0-0.bpo.4-amd64 ...
...
user@cluster-1-m:~$

Ejecuta un trabajo de Spark en el nodo principal

Luego de establecer una conexión SSH a la instancia principal de VM, ejecuta comandos en una ventana de terminal en el nodo principal del clúster para realizar las siguientes acciones:

  1. Abrir una shell de Spark
  2. Ejecutar un trabajo de Spark simple para contar la cantidad de líneas en un archivo “hello-world” de Python (de siete líneas) ubicado en un archivo accesible de manera pública en Cloud Storage
  3. Salir de la shell

    user@cluster-name-m:~$ spark-shell
    ...
    scala> sc.textFile("gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f"
    + "/src/pyspark/hello-world/hello-world.py").count
    ...
    res0: Long = 7
    scala> :quit
    
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud Dataproc
Si necesitas ayuda, visita nuestra página de asistencia.