Apache Spark se puede ejecutar en Hadoop, Mesos, en la nube o como una aplicación independiente. En este artículo voy a explicar de una manera simple, cómo Instalar Apache Spark en Windows 10 como aplicación independiente. Para ello vamos a utilizar los binarios precompilados mediante despliegue XCOPY.

Solo vamos a precisar adicionalmente un descompresor como 7-Zip y un editor de textos.

Muchos de los artículos que encontramos en la web y que explican cómo se instala Apache Spark, indican que es necesario instalar algunas herramientas como Gnu on windows (GOW) o inclusive el lenguaje Scala. Veremos qué no son necesarias para que funcione correctamente si instalamos Apache Spark desde los binarios precompilados.

¿Qué es Apache Spark?

Apache Spark es un framework open-source de computación en clúster utilizado en Big Data. Fue desarrollado en el AMPLab de Berkeley en la Universidad de California. Proporciona principalmente una interfaz para la programación con paralelismo de datos (implícito) y tolerancia a fallos. Se puede considerar que es un sistema de computación en clúster de propósito general y orientado a la velocidad.

Apache Spark está creciendo como motor general para el procesamiento de datos a gran escala porque es capaz de ejecutar programas hasta 100 veces más rápido que Hadoop MapReduce, gracias a sus capacidades de computación en memoria.

Se pueden escribir aplicaciones Spark muy fácilmente utilizando los lenguajes Java, Python, Scala y R mediante las APIs disponibles. También tiene un gran conjunto de herramientas de alto nivel entre las que se destacan:

  • Spark SQL para el procesamiento de datos estructurados usando lenguaje SQL
  • MLlib para implementar machine learning
  • GraphX para el procesamirnto de grafos
  • Spark Streaming para procesar secuencias, lo que le permite escribir trabajos de flujo (streaming) de la misma forma que escribe trabajos por lotes (batch)

 

Requerimientos para instalar Apache Spark

Es fácil de ejecutar Spark localmente en una máquina sin un cluster distribuido. Lo que se necesita es tener java instalado y disponible en el PATH. También es necesario que la variable de entorno JAVA_HOME apunte correctamente a la carpeta de instalación de Java. Pero dado que vamos a estar usando también Python vamos a instalarlo previamente usando la distribución disponible en Anaconda.

Según la documentación disponible en el sitio, Apache Spark funciona con Java 8+, Python 2.7 + / 3.4 + y R 3.1+. Para la API de Scala, Spark 2.3.1 usa Scala 2.11. Necesitará usar una versión de Scala compatible (2.11.x).

 

Instalación de Anaconda

Es preferible antes de comenzar a instalar Apache Spark instalar la última versión de Anaconda que nos provee un entorno completo para realizar ciencia de datos en Python y R. Anaconda nos provee más de 1,400 paquetes de ciencia de datos y nos permite administrar los paquetes, dependencias y entornos fácilmente.

https://www.anaconda.com/download

En mi caso dado que estoy en una maquina Windows 10 64 bits, descargo el instalador de la versión de Python 3.6 desde el link anterior. Después de ejecutar el instalador, seleccionar la carpeta de instalación y seguir las instrucciones del asistente, se completa la instalación muy fácilmente. La carpeta donde se ha instalado será utilizada más adelante por lo que es recomendable anotar la ubicación donde se ha realizado la instalación para no tener que buscarla luego.

 

Creación de las carpetas necesarias

Se debe tener en cuenta que existen algunas limitaciones con respecto al nombre de la carpeta de instalación de java. Por ejemplo, no puede contener espacios. En mi caso y por simplicidad voy a usar la carpeta c:\Spark. Luego voy a crear las subcarpetas necesarias no sólo para instalar Apache Spark, sino también para instalar una versión de java que será usada exclusivamente por Spark (sin que entre en conflicto con la que pudiera estar instalada en el sistema).


c:
cd \
md Spark 
cd Spark
md java
md tmp</pre>

 

Instalación de Java

Luego de aceptar el acuerdo de licencia descargamos la versión Windows X64 de Server JRE (Java SE Runtime Environment) 8 desde la siguiente URL:

http://www.oracle.com/technetwork/java/javase/downloads/server-jre8-downloads-2133154.html

Una vez descargada podemos extraer los archivos a la carpeta “C:\Spark\java” (previamente creada) utilizando por ejemplo el 7-Zip. Con esto completamos la instalación de los archivos de Java. Solo queda configurar las variables del entorno para poder usar esta instalación lo que haremos en un archivo más adelante.

 

Instalación de Apache Spark

Al igual que con java, sólo necesitamos descargar el archivo correcto y descomprimirlo en la carpeta “C:\Spark” que creamos previamente, utilizando por ejemplo el 7-Zip. En mi caso yo utilicé en la versión 2.3.1 que ya está preconstruida para ejecutar hadoop 2.7+ tal como muestra la imagen.

https://spark.apache.org/downloads.html

Downloads Apache Spark

Downloads Apache SparkCon esto completamos la instalación de los archivos de Spark.

Instalación del binario de Hadoop

En este caso también es sencillo realizar la instalación ya que sólo necesitamos descargar el archivo winutils.exe y copiarlo dentro de la carpeta “c:\Spark\bin” que debería estar creada desde el paso anterior cuando se realizó la instalación de spark. En mi caso yo descargué y utilicé “hadoop-3.0.0”.

https://github.com/steveloughran/winutils

Nota: Las versiones que se descargan de este repositorio son de 64 bits

Descarga de winutils

Descarga de winutils

Creación del archivo SparkCmd.BAT

Como ya tenemos todos los componentes necesarios instalados en la máquina, sólo resta crear un par de archivos para simplificar la manera en que iniciamos Apache Spark de forma tal que pueda acceder a todos los componentes necesarios. Para ello vamos a configurar el entorno de manera temporal mientras se ejecuta Apache Spark sin afectar a nuestro sistema el cual quedará perfectamente limpio.

Creamos el archive SparkCmd.bat en “C:\Spark\” y lo abrimos con un editor de textos para agregarle el siguiente contenido:

 


@ECHO OFF

REM ------------------------------------------------------------------
REM Activa Anaconda
REM ------------------------------------------------------------------
call C:\Users\Mariano\Anaconda3\Scripts\activate.bat C:\Users\Mariano\Anaconda3

REM ------------------------------------------------------------------
REM Java + SPARK
REM ------------------------------------------------------------------
SET path=c:\Spark\bin\;c:\Spark\java\bin\;%path%
set JAVA_HOME=c:\Spark\java
set SPARK_HOME=c:\Spark
set HADOOP_HOME=c:\Spark
SET TEMP=c:\Spark\tmp

@echo ------------------------------------------------------------------
@echo Spark command promt
@echo ------------------------------------------------------------------

 

Como puede verse lo primero que se realiza en el código es la activación del entorno de Anaconda. En mi caso yo utilicé en la carpeta ”C:\Users\Mariano\Anaconda3” para instalar Anaconda por lo que ustedes deberán modificar esta línea de acuerdo a la ubicación en la cual han instalado Anaconda.

Las siguientes líneas de código modifican o agregan las variables del entorno JAVA_HOME, SPARK_HOME y HADOOP_HOME para que tanto spark como java utilicen las carpetas en las cuales se han instalado estos componentes. Esta modificación es temporal y se mantendrá en la línea de comandos hasta que la misma sea cerrada.

 

Creación del acceso directo

Solo resta crear un acceso directo y agregarle la siguiente línea de código como puede verse en la imagen.

%comspec% /k “” C:\Spark\ SparkCmd.bat “”

PropiedadesSparkCmd

PropiedadesSparkCmd

 

Probando Spark con PySpark

Para probar que Apache Spark está funcionando correctamente vamos a utilizar el comando PySpark (desde el shell que creamos y usando el acceso directo creado anteriormente). Una vez credo el shell al ejecutar PySpark se nos abre una consola de Python en la cual vamos a probar la siguiente línea de programación de Spark:


sc.parallelize([1,2,3,4]).map(lambda x: x*x).collect()

Como puede verse en la imagen Spark funciona correctamente calculando los cuadrados de los números de la lista.

Prueba PySpark

Prueba PySpark

 

Utilizando Spark en Jupyter Notebook

Hay dos formas de hacer funcionar PySpark en Jupyter notebook.

Opcion1: Configurar el controlador de PySpark para usar Jupyter Notebook. Al ejecutar pyspark, se abrirá automáticamente un Jupyter Notebook.

Opcion2: Cargar un Jupyter Notebook y luego cargar PySpark usando el paquete findSpark. Esta segunda alternativa más generalizada para utilizar PySpark en un notebook de Jupyter  requiere instalarlo en Anaconda o en Python (usando pip) mediante el siguiente comando:

 


conda install -c conda-forge findspark

 

Una vez instalado este paquete podemos utilizar findspark para cargar PySpark como puede verse en el siguiente ejemplo.

PruebaFidSpark

PruebaFidSpark

 


Dejá un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

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