Implementação de um Sistema Distribuído — Spark

Autoria de Afonso Antunes e Carolina Rei

Afonso Antunes
3 min readJun 1, 2021

Agora que concluímos a instalação do Hadoop podemos prosseguir a instalação do Apache Spark com dois slaves, tal como no tutorial anterior no qual instalamos o Apache Hadoop faremos a nossa instalação por passos simples para facilitar o processo.

Introdução

O Spark é um framework open-source para processamento de Big Data construído com foco em velocidade, facilidade de uso e análises sofisticadas.

O Spark permite que aplicações em clusters Hadoop executem até 100 vezes mais rápido em memória e até 10 vezes mais rápido em disco, desenvolver rapidamente aplicações em Java, Scala ou Python. Além disso, vem com um conjunto integrado de mais de 80 operadores de alto nível e pode ser usado de forma interativa para consultar dados diretamente na consola.​

spark streaming: pode ser usado para processar dados de streaming em tempo real;​

spark SQL: permite executar consultas no estilo SQL sobre esses dados usando ferramentas tradicionais de BI e de visualização;

spark MLlib: é a biblioteca de aprendizado de máquina do Spark, que consiste em algoritmos de aprendizagem, incluindo a classificação, regressão, clustering, filtragem colaborativa e redução de dimensionalidade;​

spark GraphX:​​ inclui uma crescente coleção de algoritmos para simplificar tarefas de análise de graf

1º — Editar o ficheiro Hosts

Teremos que indicar ao ubuntu quais os ips dos slaves e o do master para isso editamos o ficheiro /etc/hosts que deverá ter o seguinte aspeto depois de editado em que ip_master deverá ser substituído pelo ip do pc que irá servir de master e o mesmo para o ip_slave1 e ip_slave2

127.0.0.1 localhost
ip_master master
ip_slave1 slave1
ip_slave2 slave2
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

2º — Download e instalação do Apache Spark

wget http://d3kbcqa49mib13.cloudfront.net/spark-2.1.0-bin-without-hadoop.tgz[
ar xzf spark-2.1.0-bin-without-hadoop.tgz
mv spark-2.1.0-bin-without-hadoop spark

3º — Configurar o Apache Spark

A configuração do Spark deverá também deverá começar pela definição das seguintes variáveis de ambiente que deverão estar no ficheiro ~/.bashrc e acrescentar as seguintes linhas:

export SPARK_HOME=/home/hadoop/spark
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$SPARK_HOME/sbin:$SPARK_HOME/bin

No fim deverá ter um ~/.bashrc com este aspecto:

export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export SPARK_HOME=/home/hadoop/spark
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$SPARK_HOME/sbin:$SPARK_HOME/bin

Para que a configuração tenha efeito na sessão actual, não nos devemos esquecer de efetuar o comando:

source ~/.bashrc

Agora iremos alterar os ficheiros de configuração do spark:

$SPARK_HOME/conf/spark-env.sh

Nota: Caso não encontrem este ficheiro deverá mudar o nome spark-env.sh.template para spark-env.sh. O ip_master deve ser substituído pelo ip do pc que servirá de master.

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
_MASTER_HOST=ip_master
export HADOOP_CONF_DIR=/home/hadoop/hadoop/etc/hadoop
export SPARK_DIST_CLASSPATH=$(hadoop classpath)

$SPARK_HOME/conf/slaves

Nota: Caso não encontrem este ficheiro deverá mudar o nome slaves.template para slaves.

Depois de editado o ficheiro slaves deverá conter as seguintes linhas:

# A Spark Worker will be started on each of the machines listed below.
slave1
slave2

4º — Copiar o Apache Spark para os slaves

Nota: No comando abaixo onde temos hadoop@slave1: hadoop e o nome do utilizador do slave1 que neste caso é hadoop.

scp -r /home/hadoop/spark hadoop@slave1:/home/hadoop/spark/

5º — Correr o Apache Spark

Para correr o spark no master executem o seguinte comando:

$SPARK_HOME/sbin/start-master.sh

Para correr o spark nos slaves o comando é:

$SPARK_HOME/sbin/start-slave.sh master:7077

Se tudo correu bem deverá conseguir aceder ao site do spark em http://localhost:8088/ e verá a seguinte página:

Se conseguir aceder correctamente a página acima, acaba de instalar o Spark.

6º — Correr um exemplo em Apache Spark

No pc master execute o seguinte comando para correr o exemplo que vem com o spark:

spark-submit — class org.apache.spark.examples.SparkPi — master spark://master:7077 — num-executors 3 — driver-memory 512m — executor-memory 512m — executor-cores 1 /home/hadoop/spark/examples/jars/spark-examples*.jar 10

Após executar o comando acima na página poderá observar o seguinte:

--

--