Aqui estamos assumindo que você já fez o download do spark, na sua página e já descompactou o arquivo em um diretório local.
Instalação no Master
O primeiro passo da instalação de um cluster Spark é definir quais máquinas farão parte do cluster e quais serão os seus nomes.
Definidas as máquinas deveremos adicionar os seus nomes no arquivo hosts de todas as máquinas, para que elas consigam se comunicar e isto é feito através do comando
sudo nano /etc/hosts
E neste arquivo iremos adicionar duas colunas de dados, na primeira, os ips e na segunda os nomes das máquinas, abaixo segue um exemplo de um arquivo de hosts para três máquinas.
MASTER-IP master
SLAVE01-IP slave01
SLAVE02-IP slave02
Configuração do acesso entre as máquinas
Para que as máquinas consigam se conectar entre elas, vamos configurar chaves de acesso ssh, para isso o primeiro passo é gerar estas chaves, o que pode ser feito através do comando:
ssh-keygen -t rsa -P ""Este comando gera uma chave rsa em uma máquina e ao copiarmos este arquivo para outras máquinas, elas conseguem acessar, via ssh, a máquina onde foi gerada a chave, sem necessitar de senha.
Isso é feito ao copiarmos o conteúdo do arquivo gerado, na máquina onde foi criada a chave, que fica localizado:
/home/usuario/.ssh/id_rsa.pubPara o arquivo
/home/usuario/.ssh/authorized_keysIsto pode ser feito tanto na mão, ou através do comando
ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@host
Após copiar as chaves entre as máquinas, deveremos testar se é possível realizar um ssh sem senha, para fazer isto basta acessarmos cada uma das máquinas via ssh, o que no nosso exemplo, contando que voce esteja no master, pode ser feito com:
ssh usuario@slave01
ssh usuario@slave02Caso o comando complete, sem pedir nenhuma senha, e você estiver acessando o shell das máquinas slave, isso significa que a instalação das chaves foi feita com sucesso.
Agora deve-se editar o arquivo .bashrc, este arquivo é executado todas as vezes que você abre um shell na sua máquina, e aqui deveremos configurar onde está o java e o spark
export JAVA_HOME=<caminho da instalacao java> (eg: /usr/lib/jvm/java-8-oracle/)O último comando, coloca o diretório dos executáveis do spark, no caminho de execução do linux e toda vez que você digitar um comando, ele irá procurar também, na pasta de executáveis do spark, se o programa existe e com isso poderemos executar o spark de qualquer lugar da máquina.
export SPARK_HOME=<caminho da instalacao do spark> (eg: /home/unip/spark-2.1.3-bin-hadoop2.7/)
export PATH=$PATH:$SPARK_HOME/bin
Após esta edição deveremos reiniciar o terminal, ou aplicarmos as modificações no terminal corrente, o que poderá ser feito com o seguinte comando:
source ~/.bashrc
Configuração do spark-env.sh
Dentro da pasta onde está instalado o spark, haverá uma pasta chamada conf, nesta pasta teremos um arquivo de exemplo chamado spark-env.sh.template, e neste passo será criado um arquivo de spark-env
cp spark-env.sh.template spark-env.shDentro deste arquivo será adicionado as seguintes linhas
export JAVA_HOME=<caminho da instalacao java> (eg: /usr/lib/jvm/java-8-oracle/)
export SPARK_WORKER_CORES=4Ainda na pasta de configuração será criado um arquivo chamado slaves através do comando
nano slavesDentro deste arquivo serão adicionados uma lista com todos os slaves do spark.
slave01Todas as configurações acima deverão ser feitas em todos os slaves e para isso, a maneira mais fácil é compactar a pasta do spark e copiar este arquivo em todos os slaves.
slave02
tar czf spark.tar.gz spark-2.1.3-bin-hadoop2.7Isso irá criar um arquivo spark.tar.gz e ele deverá ser copiado para cada um dos slaves.
scp spark.tar.gz usuario@slave01:~Em cada um dos slaves, deve-se extrair o conteúdo deste arquivo:
scp spark.tar.gz usuario@slave02:~
tar xzf spark.tar.gz
Inicializando o Cluster
Para iniciar o cluster há um script, que fica dentro da pasta sbin da instalação do spark, chamado start-all.sh, este script deverá ser executado no master.
Para testar se o spark está rodando corretamente em cada uma das máquinas deve-se rodar o seguinte comando, em cada uma delas:
jps -lmComo saída, este comando apresentará algo do tipo:
spark git:(master) ✗ jps -lmPronto, agora o spark está rodando.
999 org.apache.spark.deploy.master.Master --ip master --port 7077 --webui-port 8080
397
669 org.jetbrains.idea.maven.server.RemoteMavenServer
1198 sun.tools.jps.Jps -lm