Skip to content

Commit

Permalink
spark ampliado
Browse files Browse the repository at this point in the history
  • Loading branch information
jfsanchez committed Apr 20, 2024
1 parent 17ac9b1 commit c8693b8
Showing 1 changed file with 52 additions and 82 deletions.
134 changes: 52 additions & 82 deletions docs/apache-spark-instalacion.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,12 +166,18 @@ Outra opción se contas con pouco ancho de banda é baixar unha vez o arquivo de

## Instalación de PySpark

1. Instalamos Python:
1. Instalamos Python 3.9:

``` bash
clush -l cesgaxuser -bw hadoop[1-4] \
sudo dnf install -y python39
```
- Lembra que a nivel sistema podes seleccionar o python por defecto que queres cos comandos:

``` bash
sudo /usr/sbin/alternatives --config python
sudo /usr/sbin/alternatives --config python3
```

- ⚠️ Considera que quizás a mellor opción sexa instalar miniconda e dende ahí ter un contorno estable que poidas importar a tódolos nodos cunha versión concreta de funcional de: Python, ipython, pyspark, jupyterlab, ipykernel, nbclassic, nbconvert, py4j, pandas, numpy, pyarrow, fastparquet...

Expand Down Expand Up @@ -203,117 +209,81 @@ Outra opción se contas con pouco ancho de banda é baixar unha vez o arquivo de

```
@reboot /home/cesgaxuser/spark-bin-hadoop3/sbin/start-master.sh
@reboot /home/cesgaxuser/hadoop-3.2.4/sbin/start-yarn.sh
```

## Comandos e outros

hdfs dfs -mkdir /user/

hdfs dfs -mkdir /user/cesgaxuser
5. Lembra darlle un reboot a tódalas máquinas para ver que todo se está a executar ben ao inicio:

hdfs dfs -put hadoop-3.2.4.tar.gz

hdfs dfs -ls

No nodo master:

crontab -e

e meter esta linea ao final para tamén iniciar yarn:

@reboot /home/cesgaxuser/hadoop-3.2.4/sbin/start-yarn.sh
``` bash
clush -l cesgaxuser -bw hadoop[1-4] reboot
```

sudo reboot
![PySpark](images/spark/pyspark.png "PySpark")

yarn top
## Configurando Spark para que funcione con Hadoop:

En .bashrc debaixo de HADOOP_HOME, meter esta liña:
O arquivo `.bashrc` tamén debe ter a config de Apache Hadoop do exercicio anterior:
En `.bashrc` asegúrate que tes:

``` bash title=".bashrc"
export HADOOP_HOME='/home/cesgaxuser/hadoop-3.2.4'
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop

En .bashrc, abaixo de todo, meter estas liñas ao final:

export SPARK_HOME=/home/cesgaxuser/spark-3.3.2-bin-hadoop3
export PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
export LD_LIBRARY_PATH=${HADOOP_HOME}/lib/native:$LD_LIBRARY_PATH
```

-----

Haberá que documentar (na práctica):

yarn top

yarn node -list

yarn application (-list/-kill)

jps -> De java (non spark ou hadoop)

------

Lanzar exemplos:

yarn jar hadoop-3.2.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.4.jar wordcount "books/*" output

---

Configurando Spark para que funcione con Hadoop:

Editamos o arquivo .bashrc e lle engadimos ao final:

export PATH=$PATH:$SPARK_HOME/sbin/:$SPARK_HOME/bin/

Ao final do arquivo, depois de todas estas configuracións, debe quedar así:

JAVA_HOME='/usr/lib/jvm/java-11-amazon-corretto/'
export JAVA_HOME
E lembra ter todas as variables definidas nos arquivos **-env.sh** correspondentes.

HADOOP_HOME='/home/cesgaxuser/hadoop-3.2.4'
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
## Lanzando traballos con spark-submit

export PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
export HADOOP_HOME
Executamos dende o master con spark-submit un traballo, que debería enviarse ao hadoop.

export EDITOR=nano
``` bash
spark-submit --deploy-mode client --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples_2.12-3.3.2.jar 2
```

export SPARK_HOME=/home/cesgaxuser/spark-3.3.2-bin-hadoop3
export LD_LIBRARY_PATH=${HADOOP_HOME}/lib/native:$LD_LIBRARY_PATH
export PATH=$PATH:$SPARK_HOME/sbin/:$SPARK_HOME/bin/
Miramos nos logs de hadoop que se executara.

Copiamos o arquivo de template por defecto de Spark para empregalo:
## Lendo arquivos do HDFS dende jupyterlab

cp spark-3.3.2-bin-hadoop3/conf/spark-defaults.conf.template spark-3.3.2-bin-hadoop3/conf/spark-defaults.conf
Para ler arquivos do HDFS dende yarn / jupyterlab / pyspark hai que:

Editamos o arquivo: spark-3.3.2-bin-hadoop3/conf/spark-defaults.conf
1. Crear o directorio de usuario no HDFS:

Metemos a liña:
´´´ bash
hdfs dfs -mkdir /user/
hdfs dfs -mkdir /user/cesgaxuser
´´´

spark.master yarn
2. Poñer a ruta completa no código:

Reiniciamos con clush tódolos nodos.
´´´ py title="ler_csv_dende_spark.py"
df = spark.read.csv("hdfs://hadoop1:9000/user/cesgaxuser/arquivo.csv")
´´´

Executamos dende o master con spark-submit un traballo, que debería enviarse ao hadoop.
- Ollo! se probas dende pyspark, mira que acceda ao cluster e non cree unha instancia nova propia.

spark-submit --deploy-mode client --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples_2.12-3.3.2.jar 2
## Lanzando exemplos

Miramos nos logs de hadoop que se executara.
Se tes Apache Hadoop instalado do paso anterior, lembra que tamén podes probar os exemplos con:

Dende o nodo master temos (por mor de clustershell) python 3.6 pero temos python 3.9 no resto de nodos.

Instalamos python3.9:
``` bash
yarn jar hadoop-3.2.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.4.jar wordcount "books/*" output
```

sudo dnf install python39
## Comandos e outros

E metemos a versión 3.9 por defecto no master.
Haberá que documentar:

sudo /usr/sbin/alternatives --config python
- hdfs dfs -put ARQUIVO

sudo /usr/sbin/alternatives --config python3
- hdfs dfs -ls

![PySpark](images/spark/pyspark.png "PySpark")
- yarn top

- yarn node -list

Para ler arquivos do HDFS dende yarn/jupyterlab hai que poñer a ruta completa:
- yarn application (-list/-kill)

df = spark.read.csv("hdfs://host:9000/user/cesgaxuser/arquivo.csv")
- jps -> De java (non Spark ou Hadoop)

Ollo! se probas dende pyspark, que acceda ao cluster e non cree un.

0 comments on commit c8693b8

Please sign in to comment.