Pour un cluster, on pense tout d'abord aux deux entités qui auront un rôle majeur dans celui-ci : Le maître (master) et les esclaves (slaves). Il nous faut donc une machine pour 'contrôler' ce cluster, et des esclaves pour lui obéir.
Plusieurs solutions s'offrent à vous pour ces 'nodes' :
- Plusieurs ordinateurs (rpi, pc ...)
- Amazon AWS
- Installation d'une plateforme virtuelle avec plusieurs machines virtuelles pour simuler ce cluster
Quelque soit le moyen utilisé pour les nodes il faut s'assurer qu'elles aient bien des ip différentes.
Pour le choix de l'OS, Linux est le plus facile à setup, il me semble néanmoins que cela soit soit aussi facile avec MacOS, à tester ! Je vais donc détailler l'installation pour Ubuntu 16.04, assez commun et très stable :
TODO
Scala est dans les repositories xenial, il suffit donc d'exécuter la commande (dans le terminal) :
sudo apt-get install scala
Vous pouvez vous même vous rendre sur le site de Spark pour télécharger la dernière version directement, ou bien utilisez cette commande pour la version 2.1.0 (28 Décembre 2016) :
wget http://d3kbcqa49mib13.cloudfront.net/spark-2.1.0-bin-hadoop2.7.tgz
Il faut decompresser ce tgz pour ensuite placer cette librairie quelque part (/usr/share/ pour ma part, mais je ne sais pas si c'est le mieux ...) :
tar -xvzf spark-2.1.0-bin-hadoop2.7.tgz
sudo mv spark-2.1.0-bin-hadoop2.7 /usr/share/
La meilleure méthode pour modifier des variables d'environement est de les ajouter dans le ~/.bashrc (ou zsh, fish ...) Pour ouvrir votre fichier de configuration :
nano ~/.bashrc
Ensuite à la fin de votre fichier ajoutez :
export SCALA_HOME=/usr/share/scala-2.11
export SPARK_HOME=/usr/share/spark-2.1.0-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin
Pour rendre les changements effectifs :
source ~/.bashrc
[ Même chose que en 2.A ]
TODO
[ Même chose que en 2.B ]
Scala est dans les repositories xenial, il suffit donc d'exécuter la commande (dans le terminal) :
sudo apt-get install scala
[ Même chose que en 2.C ]
Vous pouvez vous même vous rendre sur le site de Spark pour télécharger la dernière version directement, ou bien utilisez cette commande pour la version 2.1.0 (28 Décembre 2016) :
wget http://d3kbcqa49mib13.cloudfront.net/spark-2.1.0-bin-hadoop2.7.tgz
Il faut decompresser ce tgz pour ensuite placer cette librairie quelque part (/usr/share/ pour ma part, mais je ne sais pas si c'est le mieux ...) :
tar -xvzf spark-2.1.0-bin-hadoop2.7.tgz
sudo mv spark-2.1.0-bin-hadoop2.7 /usr/share/
[ Même chose que en 2.D ]
La meilleure méthode pour modifier des variables d'environement est de les ajouter dans le ~/.bashrc (ou zsh, fish ...) Pour ouvrir votre fichier de configuration :
nano ~/.bashrc
Ensuite à la fin de votre fichier ajoutez :
export SCALA_HOME=/usr/share/scala-2.11
export SPARK_HOME=/usr/share/spark-2.1.0-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin
Pour rendre les changements effectifs :
source ~/.bashrc
TODO
-
slaves.template -> slaves
- TODO
-
spark-env.sh.template -> spark-env.sh
- TODO
Pour chaque slave il faut faire l'action suivante :
Sur le MAÎTRE :
Générer une clé public :
ssh-keygen -t rsa
Il faut ensuite ajouter cette clé public dans le fichier authorized_keys du slave, on peut le faire directement depuis le MAÎTRE
ssh-copy-id user@<ip-address or hostname>
Il faudra entrer le mot de passe de la session slave pour se connecter :)
Sur l'ESCLAVE :
Générer une clé public :
ssh-keygen -t rsa
Il faut ensuite ajouter cette clé public dans le fichier authorized_keys du maître, on peut le faire directement depuis l'ESCLAVE avec :
ssh-copy-id user@<ip-address or hostname>
Il faudra entrer le mot de passe de la session maître pour se connecter :)
TODO
- Spark GraphX in Action - Michael S. Malak and Robin East