Después de comentar de forma teórica y muy por encima qué es Spark y el lenguaje Scala, es hora de dar un pasito más en esta tecnología: La instalación y ejecución básica en forma local, es decir, vamos a instalar este framework y de momento vamos a nombrar los directorios y archivos más importantes.
Instalación
Como requisito para instalar y hacer uso de Spark, es necesario haber instalado en el equipo:
- Máquina virtual de Java.
- API con la que vayamos a trabajar, en mi caso: Scala.
NOTA: Al instalar Scala se instalará automáticamente la máquina virtual de Java, por lo que no es necesario hacer los pasos separados; con seguir el tutorial de instalación es suficiente 😉 .
El siguiente paso es descargar Spark desde su página oficial, donde podemos elegir versión, paquete y tipo de descarga. En mi caso, usé:
- Spark 1.6.0
- Precompilado para Hadoop 2.6 (por si luego integramos con HDFS).
Cuando se haya completado la descarga, lo descomprimimos y ubicamos en el directorio donde alojemos nuestros programas:
tar -xvf spark-1.6.0-bin-hadoop2.6.tgz sudo mv spark-1.6.0-bin-hadoop2.6 /usr/local/spark
OPCIONAL: Para no estar accediendo al directorio ../bin/ para ejecutar los comandos de Spark, añadí las variables de entorno.
Los directorios importantes
La estructura de directorios de Spark no es pequeña, por lo que de momento nos vamos a centrar en 3 directorios:
- bin: Contiene los entornos de ejecución en los que se puede arrancar, además de los comandos para lanzar aplicaciones y ejemplos. Cuando hablo de entornos de ejecución me refiero a arrancarlo usando la API de Scala (spark-shell), Python (pyspark), R (sparkR) o SQL (spark-sql).
- conf: En este directorio se encuentran los archivos de configuración del clúster. No vamos a entrar en detalle, le dedicaremos una entrada sólamente a ellos 😛
- sbin: Scripts para levantar y parar el clúster y sus componentes.
Bueno, ya tenemos la configuración básica lista y conocemos tanto la tecnología (Spark) como el lenguaje de programación que usaremos (Scala)
¿Con qué nos sorprenderás en el próximo artículo, Pepe? (siento curiosidad por saber hacia dónde vamos) 😉
Me gustaMe gusta
Estoy dudando entre hacer algunos ejemplos sencillos con Scala y ejecutarlo en modo local para hacernos a la interfaz o crear el clúster con un par de máquinas y luego los ejemplos 😛
Me alegra que te «pique» la curiosidad 🙂
Me gustaMe gusta
Personalmente, como me gusta poco el cacharreo, seguiría por el cluster de máquinas (para quitármelo ya) antes de pasar al «turrón» de la programación 😉
¿Qué opináis los demás? (vamos a aprovechar que Pepe está de oferta 😉 )
Me gustaMe gusta
Queremos un spoiler ¿de qué van esos ejemplos?
Me gustaMe gusta
El típico usando Map-Reduce: contador de palabras 🙂
Me gustaMe gusta
Pues yo tengo un problema: He descargado la versión de spark de http://apache.uvigo.es/spark/spark-2.2.1/spark-2.2.1-bin-hadoop2.7.tgz, y la he descomprimido en C:\Program Files\spark-2.2.1-bin-hadoop2.7. Después, he ido al directorio bin y hay tres spark-shell. Uno es un archivo, los otros dos parecen consolas, son spark-shell.cmd y spark-shell2.cmd. Intento abrir alguna de las consolas, haciendo doble click, y se abre un momento (uno o dos segundos) y se cierra. ¿Qué es lo que estoy haciendo mal? ¿Como puedo abrir la consola de spark?
Muchas gracias, un saludo
Elena
Me gustaMe gusta
Hola Elena,
La instalación de Spark en Windows es un pelín diferente a los sistemas Unix. Hace mucho que no trabajo en Windows, pero creo recordar la diferencia. Te dejo un mini-tuto y ya nos cuentas que tal te fué 😛
1. Verifica que tienes instalado Java como máximo en la versión 8; La versión 9 y 10 (que ya las he visto por ahí) están dando problemas de compatibilidades.
2. Verifica que tienes instalado Scala en el equipo y añadida la variable de entorno SCALA_HOME y el PATH correctamente. Para probarlo, ve a un terminal (ejecutar > cmd) y teclea “scala” (sin comillas), para que se abra el intérprete (como si lo hicieras con python, R u otro lenguaje).
2. Después de bajar el paquete de Spark y descomprimirlo, tienes que añadir la variable de entorno SPARK_HOME y el PATH del sistema.
3. Descargarte winutils y ubicarlo en la carpeta bin que está dentro del directorio de Spark que acabas de descomprimir.
WinUtils 32bits: https://codeload.github.com/gvreddy1210/32bit/zip/master
WinUtils 64bits: https://codeload.github.com/gvreddy1210/64bit/zip/master
4. Desde un terminal, accede a la carpeta bin de Spark (cd ruta/spark/bin), y teclea simplemente spark-shell, que te deberá abrir la consola sin ningún problema.
Si no recuerdo mal, con eso debería funcionar. Te agradecería que nos comentaras si te funciona así, y si no, ayudarte a buscar la solución 🙂
Aprovecho también para recomendarte el cambio a Linux, que para este tipo de trabajos es mucho más sencillo la configuración del entorno que en Windows, y dejando más tiempo a lo que realmente trae dolores de cabeza: la programación distribuida 😉
Y ya por curiosidad… ¿Has pensado en usar un IDE como Eclipse para el desarrollo del proyecto o lo vas a hacer «a pelo» en la shell?
un saludo.
Me gustaMe gusta
Hola Elena, aunque el experto es Pepe, yo recomendaría abrirlo desde una «terminal» de comandos (estoy entendiendo, espero, que haces doble click desde el explorador de archivos de Windows)
Saludos
Me gustaMe gusta
He abierto una consola de python que acabo de instalar, y me ocurre lo siguiente:
He escrito la primera parte, y me da un error:
>>> tar -xvf spark-2.2.1-bin-hadoop2.7.tgz
File «», line 1
tar -xvf spark-2.2.1-bin-hadoop2.7.tgz
^
SyntaxError: invalid syntax
Muchas gracias, un saludo
Me gustaMe gusta
En python no debes lanzar los comandos que indicas… debes abrir una línea de comandos (pido disculpas si es demasiado trivial pero, para que ambos sepamos de qué estamos hablando, te enlazo el siguiente vídeo)
Me gustaMe gusta
Perdona la confusión. De acuerdo, he abierto una consola cmd, y me he puesto dentro del directorio C:\Program Files\spark-2.2.1-bin-hadoop2.7\bin. Ahí, he escrito tar -xvf spark-2.2.1-bin-hadoop2.7.tgz, pero me ocurre lo siguiente:
C:\Program Files\spark-2.2.1-bin-hadoop2.7\bin>tar -xvf spark-2.2.1-bin-hadoop2.7
«tar» no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.
Muchas gracias
Me gustaMe gusta
Ten en cuenta Elena, que las instrucciones las escribió Pepe pensando en Linux como sistema operativo.
Para descomprimir un .tar en windows te recomiendo usar 7zip o herramienta similar
Me gustaMe gusta
Si, es verdad que estoy en windows.
Lo he descomprimido con 7zip. Lo tengo descomprimido y lo he cambiado de carpeta porque he leído en otra web que si la url tiene algún espacio puede dar problemas. Ahora la dirección del bin es: C:\Users\empalacios\spark-2.2.1-bin-hadoop2.7\bin. Ahí tengo lo que parece un acceso a la consola de spark, un ‘script de comandos de windows’ cuyo nombre es ‘spark-shell.cmd’. Pensé que esa podría ser la consola de spark, y al hacer doble click encima se abriría. Pero ocurre que en efecto parece que se abre una consola al hacer doble click (aparece un segundo o dos) y acto seguido se cierra. No sé porqué. ¿Sería esa la consola de spark que se debería abrir? ¿Cuál puede ser la razón de que se cierre?
Perdona todas las molestias. Estoy intentando hacer un proyecto utilizando spark pero no consigo que arranque. Y quería usar spark desde windows, no voy a utilizar hadoop.
Muchas gracias
Me gustaMe gusta
No sabría decirte (para éso tendremos que esperar la «intervención» de Pepe que me ha comentado lo hará cuando llegue a casa) si exactamente es (o no) la consola que buscas.
Yo probaría, ahora que está descomprimido y cambiado de carpeta, a abrir la consola y, situándote donde has puesto los ficheros, tratar de lanzarla.
No obstante y, en base a los artículos que Pepe ha publicado sobre Spark (destaca el arranque del «clúster»), sospecho que poco vamos a conseguir lanzando únicamente ese comando.
Me gustaMe gusta
He seguido el tutorial que me enviaste, te cuento qué he hecho en cada paso:
1. Verifica que tienes instalado Java como máximo en la versión 8; La versión 9 y 10 (que ya las he visto por ahí) están dando problemas de compatibilidades.
Me aparece la versión 1.6.
2. Verifica que tienes instalado Scala en el equipo y añadida la variable de entorno SCALA_HOME y el PATH correctamente. Para probarlo, ve a un terminal (ejecutar > cmd) y teclea “scala” (sin comillas), para que se abra el intérprete (como si lo hicieras con python, R u otro lenguaje).
Yo no quiero scala, quiero python porque es el lenguaje que he visto en el master que estudié y por eso es el que quiero utilizar. Según dice no habría problema. Tengo intalado python 3.6.5, lo instalé ayer, de » la página de python, v3.6.5. Lo pongo en C:\Users\empalacios\AppData\Local\Programs\Python\Python36-32\python.exe».
He ido al explorer, y en Equipo –> botón derecho, Propiedades –> Configuración avanzada –> Variables de entorno. En variables del sistema, tanto en Path como en Classpath, he puesto la ruta de python, C:\Users\empalacios\AppData\Local\Programs\Python.
2. Después de bajar el paquete de Spark y descomprimirlo, tienes que añadir la variable de entorno SPARK_HOME y el PATH del sistema.
Spark ya lo descomprimí ayer, lo tengo en C:\Users\empalacios\spark-2.2.1-bin-hadoop2.7. Lo guardé ayer ahí después de tenerlo en Program Files porque leí en una web que mejor no guardarlo en un directorio que tuviera un espacio.
He creado una nueva variable en las variables de entorno, llamada SPARK_HOME, y le he puesto el valor C:\Users\empalacios\spark-2.2.1-bin-hadoop2.7. Después, en la variable Path, he añadido C:\Users\empalacios\spark-2.2.1-bin-hadoop2.7/bin
3. Descargarte winutils y ubicarlo en la carpeta bin que está dentro del directorio de Spark que acabas de descomprimir.
WinUtils 32bits: https://codeload.github.com/gvreddy1210/32bit/zip/master
WinUtils 64bits: https://codeload.github.com/gvreddy1210/64bit/zip/master
Hecho, he dejado el winutils.exe en la carpeta bin, en C:\Users\empalacios\spark-2.2.1-bin-hadoop2.7|bin.
4. Desde un terminal, accede a la carpeta bin de Spark (cd ruta/spark/bin), y teclea simplemente spark-shell, que te deberá abrir la consola sin ningún problema.
En la consola me sale esto: «No se esperaba \Java\jdk1.6.0_13\bin\java en este momento.»
Veo que no tengo ninguna jdk versión 8, sólo JRE. Así que me instalo una jdk de versión 8, por si ese es el problema.
Introduzco en Classpath : C:\Program Files\Java\jdk1.8.0_171 y en Path: C:\Program Files\Java\jdk1.8.0_171\bin
Aun así no me lo coge, me sigue saliendo lo mismo.
Reinicio y vuelvo a probar, ocurre lo mismo. He visto que tengo dos carpetas java, a las que se hace referencia en el classpath, una en c – Program Files y otra en C- Program Files *86.
Copio la carpeta del jdk de Program Files en Program files*86
Introduzco, en JAVA_HOME:C:\Program Files (x86)\Java\jdk1.8.0_171
En Classpath:C:\Program Files (x86)\Java\jdk1.8.0_171\src.zip
En path: C:\Program Files (x86)\Java\jdk1.8.0_171\bin
Ahora me aparece: «No se esperaba \Java\jdk1.8.0_171\bin\java en este momento.»
Vamos, que no consigo abrir la consola de spark.
Muchas gracias
Me gustaMe gusta
Lo conseguí!
He encontrado la solución en http://www.javahispano.org/java-ee/post/2364688. He cambiado todas las variables de entorno por un directorio en el que no haya paréntesis, es decir:
En JAVA_HOME:C:\Program Files\Java\jdk1.8.0_171
En Classpath:C:\Program Files\Java\jdk1.8.0_171\src.zip
En path: C:\Program Files\Java\jdk1.8.0_171\bin
Así, he conseguido arrancar la consola de spark.
En cuanto a usar un entorno de programación, me gustaría usar Eclipse o Intellj Idea, ambos los utilicé hace años en el trabajo pero la verdad es que hace mucho que no los toco y no sabría como comenzar.
Muchas gracias por todo, un saludo
Elena
Me gustaMe gusta
Se veía que eran problemas de variables de entorno 😉
Me alegro que hayas solucionado el problema.
un saludo.
Me gustaMe gusta