Skip to content

Commit fa49288

Browse files
committed
Dataproc tutorial for cloud-shell
1 parent 3c34452 commit fa49288

1 file changed

Lines changed: 163 additions & 0 deletions

File tree

infra/dataproc.md

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
# Tutorial Dataproc (Spark)
2+
3+
Datapro es la versión gestionada de Spark en Google Cloud. En este tutorial vamos a cubrir como subir archivos a Cloud Storage (S3) y lanzar un trabajo de Spark para procesarlo.
4+
5+
Duración estimada: <walkthrough-tutorial-duration duration="45"></walkthrough-tutorial-duration>
6+
7+
## Preparación
8+
9+
### 1. Habilita las APIs necesarias
10+
11+
Antes de continuar es necesario habilitar las APIs de Cloud Storage y Dataproc.
12+
13+
<walkthrough-enable-apis apis="dataproc.googleapis.com,storage.googleapis.com ">Habilitar APIs</walkthrough-enable-apis>
14+
15+
### 2. Selecciona un proyecto
16+
17+
<walkthrough-project-setup></walkthrough-project-setup>
18+
19+
### 3. Abre una terminal
20+
21+
La mayoría de los comandos pueden ejecutarse desde la interfaz de usuario, pero en el tutorial utilizaremos la consola de cloudshell.
22+
23+
Si no esta abierta ya en la parte inferior puedes abrirla mediante el icono <walkthrough-cloud-shell-icon></walkthrough-cloud-shell-icon>
24+
arriba a la derecha, o utilizando el siguiente enlace:
25+
26+
<walkthrough-open-cloud-shell-button></walkthrough-open-cloud-shell-button>
27+
28+
### 3. Materiales de clase
29+
30+
Asegurate de que la carpeta `cloudshell_open/data_processing_course` se ha creado. Sino, puedes abrir de nuevo el proyecto desde [bigdata.luisbelloch.es](http://bigdata.luisbelloch.es) y seleccionando [Open in Cloud Shell](https://console.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https://github.com/luisbelloch/data_processing_course.git).
31+
32+
Alternativamente puedes clonar el repositorio mediante `git`:
33+
34+
```sh
35+
git clone https://github.com/luisbelloch/data_processing_course.git && cd data_processing_course
36+
```
37+
38+
## Paso 1: Crear un bucket en cloud storage
39+
40+
EL bucket se puede también crear desde [la UI de Google Cloud Storage](https://cloud.google.com/storage/docs/creating-buckets).
41+
42+
En nuestro caso podemos usar la terminal para crearlo:
43+
44+
```sh
45+
gsutil mb -c regional -l europe-west1 gs://NOMBRE_BUCKET
46+
```
47+
48+
Para copiar datos puede utilizarse tambien `gsutil` con `cp`:
49+
50+
```sh
51+
gsutil cp data/compras_tiny.csv gs://NOMBRE_BUCKET
52+
```
53+
54+
En el caso de que queramos sincronizar un directorio entero, podemos utilizar `rsync`:
55+
56+
```sh
57+
gsutil -m rsync data/ gs://NOMBRE_BUCKET
58+
```
59+
60+
## Paso 2: Crear un cluster en Dataproc
61+
62+
Lo primero que debemos hacer es crear un cluster de Spark. Para las pruebas usaremos un único nodo, pero es posible crear varios también. En nuestro caso, vamos a crear un cluster llamado `dataproc1`.
63+
64+
```sh
65+
gcloud dataproc clusters create dataproc1 --region europe-west1 --single-node --enable-component-gateway
66+
```
67+
68+
Una vez esté creado, podemos ver el estado del cluster en la [interfaz de usuario de Dataproc](https://console.cloud.google.com/dataproc/clusters).
69+
70+
Es interesante ver que Dataproc ha creado distintas máquinas virtuales [en Compute Engine](https://console.cloud.google.com/compute/instances).
71+
72+
<walkthrough-footnote>Recuerda eliminar el cluster al finalizar el tutorial.</walkthrough-footnote>
73+
74+
## Paso 3: Crear un trabajo de ejemplo de Spark
75+
76+
Como ejemplo, vamos a crear un script que cuente las lineas de el archivo `compras_tiny.csv`, llamado `prueba_dataproc.py`.
77+
78+
```python
79+
from os import path
80+
from pyspark import SparkContext
81+
82+
sc = SparkContext('local', 'hello')
83+
rdd = sc.textFile('gs://bigdataupv_data/compras_tiny.csv')
84+
85+
print("Count:", rdd.count())
86+
```
87+
88+
Puedes crear el script en cualquier carpeta, pero asegurate de especificar la ruta al ejecutar el trabajo en el paso siguiente.
89+
90+
## Paso 4: Ejecutar el trabajo de Spark
91+
92+
Para ejecutar el script `prueba_dataproc.py` que acabamos de crear es necesario enviarlo al cluster:
93+
94+
```sh
95+
gcloud dataproc jobs submit pyspark prueba_dataproc.py --cluster dataproc1 --region europe-west1
96+
```
97+
98+
Esto creará un `job` (trabajo) en el cluster, ejecutado por Spark.
99+
100+
Verás el progreso en la propia consola, en algún sitio debería haber impreso el número de filas del trabajo cuando termine:
101+
102+
```terminal
103+
Count: 1723
104+
```
105+
106+
### Adjuntar archivos adicionales
107+
108+
En clase hemos trabajado haciendo uso de un archivo llamado `helpers.py`. Si se referencia el código de ese archivo desde cualquier script, es necesario adjuntarlo al trabajo mediante la opcion `--files`:
109+
110+
```sh
111+
gcloud dataproc jobs submit pyspark prueba_dataproc.py --cluster dataproc1 --region europe-west1 --files=helpers.py
112+
```
113+
114+
Los scripts pueden también residir en un bucket de Cloud Storage, simplemente reemplaza los normbres por la ruta completa de los archivos:
115+
116+
```terminal
117+
gs://bigdataupv_code/prueba_dataproc.py
118+
gs://bigdataupv_code/helpers.py
119+
```
120+
121+
## Paso 5: Determinar el estado de los trabajos lanzados
122+
123+
Los trabajos ejecutados también son accesibles desde [la interfaz de usuario de Dataproc](https://console.cloud.google.com/dataproc/clusters/dataproc1/jobs), desde donde pueden consultarse los resultados.
124+
125+
Alternativamente se pueden listar todos los trabajos de una región, en nuestro caso `europe-west1`:
126+
127+
```sh
128+
gcloud dataproc jobs list --region=europe-west1
129+
```
130+
131+
Tras ejecutarlo debería mostrar una lista de trabajos:
132+
133+
```terminal
134+
JOB_ID: 2c5c402a995e424ca24087498d559731
135+
TYPE: pyspark
136+
STATUS: DONE
137+
```
138+
139+
### Consultar un determinado trabajo
140+
141+
Utilizando ese `JOB_ID` podemos también consultar el estado y los logs del trabajo, incluso antes de que finalize:
142+
143+
```sh
144+
gcloud dataproc jobs wait 2c5c402a995e424ca24087498d559731 --project bigdataupv2021 --region europe-west1
145+
```
146+
147+
## Paso 6: Eliminar el cluster
148+
149+
Para finalizar el ejercicio eliminaremos el cluster creado, de forma que se detendrá la facturación por uso de los recursos involucrados:
150+
151+
```sh
152+
gcloud dataproc clusters delete dataproc1 --region=europe-west1
153+
```
154+
155+
También es posible eliminarlo desde la consola de Google Cloud.
156+
157+
![](https://cloud.google.com/dataproc/images/dataproc-1-delete.png)
158+
159+
## Completado!
160+
161+
Recuerda eliminar el cluster de Dataproc al completar el ejercicio.
162+
163+
<walkthrough-conclusion-trophy></walkthrough-conclusion-trophy>

0 commit comments

Comments
 (0)