Iniciarse en Apache Spark: Instalación y directorios importantes

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:

  1. 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).
  2. 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 😛
  3. sbin: Scripts para levantar y parar el clúster y sus componentes.

17 comentarios en “Iniciarse en Apache Spark: Instalación y directorios importantes

  1. 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) 😉

    • josftm dijo:

      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 🙂

      • 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 😉 )

  2. Elena dijo:

    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

    • 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.

    • Elena dijo:

      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

  3. Elena dijo:

    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

  4. Elena dijo:

    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

    • 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.

  5. Elena dijo:

    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

  6. Elena dijo:

    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

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.