Instalar Spark 2.3.2 + Scala 2.11 sobre Debian 10
En la nota mental de hoy voy a indicar cómo desplegar dos aplicaciones, las cuales nos van a facilitar mucho trabajar con BigData y lago de datos como Hadoop, con versiones en desuso (deprecated) pero que funcionan con JDK8.
Para está instalación nos hace falta tener instalado previamente JDK8. Puedes consultar como hacerlo para Debian 10 aquí.
Introducción
¿Qué es Spark?
Apache Spark es un framework de programación para procesamiento de datos distribuidos diseñado para ser rápido y de propósito general. Cuenta con flexibilidad e interconexión con otros módulos de Apache como Hadoop, Hive o Kafka.
En nuestro caso, lo vamos a utilizar para poder hacer uso de Scala.
¿Qué es Scala?
Es un lenguaje de programación orientado a objetos, bastante popular e integrable con herramientas como IntelliJ, Eclipse, . Una de sus mayores ventajas es la escalabilidad. Comúnmente, se dice que scala suple las carencias de Java, con lo que su uso y adopción está en auge.
El objetivo de esta nota mental no es entrar en detalle de scala, así que si tenéis curiosidad, os dejo un par de entradas interesantes:
Despliegue
Aunque se trata de una versión obsoleta, me parece interesante exponer el proceso que he seguido y me ha funcionado. Y es que a la hora de la verdad, cuando te tropiezas con el mundo real y las infraestructuras de muchas empresas «normales», prima la economía de la empresa. El resultado es que muchos de los sistemas no soportan últimas versiones.
Previo a todo esto, buenas prácticas, update y upgrade:
sudo apt-get update
sudo apt-get upgrade
Este es el repositorio del cual voy a obtener los datos para la instalación:
https://github.com/apache/spark/archive/v2.3.2.zip
Lo primero es descargar spark, descomprimirlo y eliminar los ficheros descargados, dentro de la máquina donde vayamos a realizar la instalación.
sudo wget https://github.com/apache/spark/archive/v2.3.2.zip
sudo unzip v2.3.2.zip
sudo rm -rf v2.3.2.zip
En mi caso, voy a crearle una carpeta específica para la instalación, y voy a mover los archivos descomprimidos dentro de ella.
sudo mkdir /opt/spark
sudo mv spark-2.3.2/* /opt/spark
Entramos en la carpeta que acabamos de crear y lanzamos los comandos de configuración para instalar scala. Para ello utilizaremos Maven (mvn) y Hadoop.
cd /opt/spark/
sudo ./dev/change-scala-version.sh 2.11
sudo ./build/mvn -Pyarn -Phadoop-2.6 -Dscala-2.11 -DskipTests clean package
Para verificar la instalación, podemos lanzar:
./bin/run-example SparkPi 10
El siguiente paso quitar la extensión .template
del script de configuración.
sudo mv conf/spark-env.sh.template conf/spar-env.sh
sudo nano conf/spark-env.sh
Tenemos que buscar una linea similar a SPARK_LOCAL_IP
, que suele ir comentada con #. Le asignaremos el siguiente valor:
SPARK_LOCAL_IP=127.0.0.1
Por último, para utilizar scala, lanzaremos el siguiente comando:
./bin/spark-shell — master local[2]
Problema resuelto!
Instalar JDK 8 en Debian 10
Esta nota mental viene con historia.
Mi segunda semana en mi nuevo trabajo. Me piden que levante una máquina virtual en Google Cloud Platform. Los requisitos no eran descabellados, última versión de Debian, JDK8 y poco más. La instalación clásica no funciona. Hago una búsqueda en caché y tampoco encuentro nada. Que raro.
Aviso a mi compañera, super fan de linux para que me echara un cable en mi atasco. Estuvimos toda una mañana consultando diferentes documentaciones hasta que al fin dimos con el verdadero problema: A la versión 10 de Debian han decidido no ponerle los paquetes de JDK8, solo instala la versión más reciente.
La solución que encontramos y aplicamos, básicamente, consistía en añadirle un repositorio principal donde si se encontrara ese paquete.
sudo nano /etc/apt/sources.list
Añadimos la siguiente linea al fichero de configuración
deb http://deb.debian.org/debian/ sid main
Lanzamos update+upgrade:
sudo apt-get update
sudo apt-get upgrade
Y por último ya instalamos la versión deseada de jdk.
sudo apt-get install -y openjdk-8-jdk
Siempre podemos y debemos comprobar que la versión instalada está bien.
java -version
Resultado:
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-8u252-b09-1-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
Problema resuelto!