Pueden ver la consigna del laboratorio en https://docs.google.com/document/d/e/2PACX-1vQn5BpCPQ6jKMN-sz46261Qot82KbDZ1RUx8jNzAN4kBEAq_i97T3R6ZA0_yRA5elN66e-EArXQXuAh/pub
- Necesita Java 17, tanto el JRE como el JDK. En Ubuntu, pueden instalarlo con:
apt install openjdk-17-jdk openjdk-17-jre
- Instalar maven Es probable que sea un paquete de tu distribución (
$ sudo apt install maven
si estás en Ubuntu, Debian o derivados). - Descargar spark 3.5.1 y descomprimirlo en el directorio
DIR
. - Definir variable de entorno
export SPARK_HOME=<DIR>
(ahí<DIR>
es el directorio donde descomprimieron spark).
Sea APP_HOME
el directorio donde está este archivo README.md
$ cd $APP_HOME
$ mvn clean package
Primero seteamos la cantidad de trabajadores que queremos en nuestro cluster.
$ export SPARK_WORKER_INSTANCES=2
A su vez, podemos especificar su memoria y cores a utilizar: Se recomienda usar por lo menos 2G para cada trabajador, de lo contrario no se puede trabajar con CoreNLP (los archivos de los modelos son pesados).
$ export SPARK_WORKER_MEMORY=2G
$ export SPARK_WORKER_CORES=1
Corremos los trabajadores y el master:
- Reemplazar spark://your-host:7077 por el URL que aparece en localhost:8080
$ $SPARK_HOME/sbin/start-master.sh
$ $SPARK_HOME/sbin/start-worker.sh spark://your-host:7077
Ahora la aplicación
- Reemplazar spark://your-host:7077 por el URL que aparece en localhost:8080
$ $SPARK_HOME/bin/spark-submit --executor-memory 2G --class App --master spark://your-host:7077 target/App-0.1-jar-with-dependencies.jar [ARGS]
Si no quieren ver la información de spark pueden redirigir stderr
a /dev/null
:
$ $SPARK_HOME/bin/spark-submit --executor-memory 2G --class App --master spark://your-host:7077 target/App-0.1-jar-with-dependencies.jar [ARGS] 2>/dev/null
Luego de correr el programa hay que eliminar el archivo de la big data:
$ rm $APP_HOME/src/main/resources/bigData.txt
Detenemos los trabajadores y el master:
$ $SPARK_HOME/sbin/stop-master.sh
$ $SPARK_HOME/sbin/stop-worker.sh
Al utilizar tan solo un trabajador para archivos muy grandes como wiki_dump_parcial pueden ocurrir errores por falta de memoria.