Comment configurer Spark sur Windows?

93

J'essaye de configurer Apache Spark sur Windows.

Après avoir cherché un peu, je comprends que le mode autonome est ce que je veux. Quels binaires dois-je télécharger pour exécuter Apache Spark dans Windows? Je vois des distributions avec hadoop et cdh sur la page de téléchargement de Spark.

Je n'ai pas de références sur le Web à cela. Un guide étape par étape à ce sujet est très apprécié.

Siva
la source

Réponses:

34

J'ai trouvé que la solution la plus simple sur Windows est de construire à partir de la source.

Vous pouvez suivre à peu près ce guide: http://spark.apache.org/docs/latest/building-spark.html

Téléchargez et installez Maven et définissez-le MAVEN_OPTSsur la valeur spécifiée dans le guide.

Mais si vous ne faites que jouer avec Spark et que vous n'en avez pas réellement besoin pour fonctionner sur Windows pour toute autre raison que votre propre machine exécute Windows, je vous suggère fortement d'installer Spark sur une machine virtuelle Linux. Le moyen le plus simple de commencer est probablement de télécharger les images prêtes à l'emploi créées par Cloudera ou Hortonworks, et d'utiliser la version fournie de Spark, ou d'installer la vôtre à partir des sources ou des binaires compilés que vous pouvez obtenir sur le site Web de Spark.

jkgeyti
la source
1
Merci pour la mise en garde. Le lien est fixe.
jkgeyti
1
Salut, My Build on Windows fonctionne bien avec Cygwin mais lorsque j'exécute la commande ./start-master.sh dans le répertoire sbin, j'obtiens l'erreur Erreur: Impossible de trouver ou de charger la classe principale org.apache.spark.launcher.Main complet connectez-vous /cygdrive/c/Spark/spark-1.5.1/sbin/../logs/spark-auser-org.apache.spark.deploy.master.Master-1.host
Geek
Salut Yashpal, j'ai essayé ça, mais je suis resté coincé à l'étape 5 (winutils). Je ne parviens pas à copier ces fichiers dans mon répertoire bin.
Venkat Ramakrishnan
140

Étapes pour installer Spark en mode local:

  1. Installez Java 7 ou une version ultérieure . Pour tester l'installation de Java est terminée, ouvrez le type d'invite de commande javaet appuyez sur Entrée. Si vous recevez un message, 'Java' is not recognized as an internal or external command. vous devez configurer vos variables d'environnement JAVA_HOMEet PATHpointer vers le chemin de jdk.

  2. Téléchargez et installez Scala .

    Définissez SCALA_HOMEdans Control Panel\System and Security\Systemgoto "Paramètres système avancés" et ajoutez la %SCALA_HOME%\binvariable PATH dans les variables d'environnement.

  3. Installez Python 2.6 ou version ultérieure à partir du lien de téléchargement Python .

  4. Téléchargez SBT . Installez-le et définissez-le SBT_HOMEcomme variable d'environnement avec la valeur <<SBT PATH>>.

  5. Téléchargement à winutils.exepartir du repo HortonWorks ou du repo git . Comme nous n'avons pas d'installation Hadoop locale sur Windows, nous devons le télécharger winutils.exeet le placer dans un binrépertoire sous un Hadooprépertoire personnel créé . Défini HADOOP_HOME = <<Hadoop home directory>>dans la variable d'environnement.

  6. Nous utiliserons un package Spark pré-construit, alors choisissez un package Spark pré-construit pour le téléchargement Hadoop Spark . Téléchargez et extrayez-le.

    Définissez SPARK_HOMEet ajoutez la %SPARK_HOME%\binvariable PATH dans les variables d'environnement.

  7. Exécuter la commande: spark-shell

  8. Ouvrez http://localhost:4040/dans un navigateur pour voir l'interface utilisateur Web SparkContext.

Ani Menon
la source
5
Excellent guide qui ne nécessite aucune compilation locale.
Matt
2
J'obtiens "java.lang.IllegalArgumentException: Erreur lors de l'instanciation de 'org.apache.spark.sql.hive.HiveSessionState'". Ai-je besoin d'une étape supplémentaire pour installer Hive?
Stefan
4
C'est très utile, merci. De plus, si quelqu'un a une erreur disant "Impossible de trouver le répertoire Spark Jars" lors de l'exécution de spark-shell, assurez-vous qu'il n'y a pas d'espace dans votre chemin SPARK_HOME. J'ai longtemps lutté contre cela.
Aakash Jain
1
C'est de l'or ici. Je ne peux pas expliquer combien de problèmes j'ai eu avec Spark et Scala sous Windows. J'ai d'abord essayé Windows Ubuntu Bash. Pas une bonne idée! Peut-être que si vous avez la dernière mise à jour des créateurs (Ubuntu 16), mais sinon, il y a une tonne d'erreurs et de problèmes de réseau.
Tom
21

Vous pouvez télécharger Spark à partir d'ici:

http://spark.apache.org/downloads.html

Je vous recommande cette version: Hadoop 2 (HDP2, CDH5)

Depuis la version 1.0.0, il existe des scripts .cmd pour exécuter Spark dans Windows.

Déballez-le en utilisant 7zip ou similaire.

Pour commencer, vous pouvez exécuter /bin/spark-shell.cmd --master local [2]

Pour configurer votre instance, vous pouvez suivre ce lien: http://spark.apache.org/docs/latest/

ajnavarro
la source
quelle alternative hadoop suggéreriez-vous? Je veux dire quelque chose que nous pourrions également installer sur nos PC Windows. Redis?
skan
17

Vous pouvez utiliser les méthodes suivantes pour configurer Spark:

  • Construire à partir de la source
  • Utilisation de la version prédéfinie

Bien qu'il existe différentes façons de créer Spark à partir de la source .
J'ai d'abord essayé de créer une source Spark avec SBT mais cela nécessite hadoop. Pour éviter ces problèmes, j'ai utilisé une version pré-construite.

Au lieu de Source, j'ai téléchargé la version pré-construite pour la version hadoop 2.x et l'ai exécutée. Pour cela, vous devez installer Scala comme condition préalable.

J'ai rassemblé toutes les étapes ici:
Comment exécuter Apache Spark sur Windows7 en mode autonome

J'espère que cela vous aidera .. !!!

Nishu Tayal
la source
8

Essayer de travailler avec spark-2.xx, créer le code source de Spark n'a pas fonctionné pour moi.

  1. Donc, même si je ne vais pas utiliser Hadoop, j'ai téléchargé le Spark pré-construit avec hadoop intégré: spark-2.0.0-bin-hadoop2.7.tar.gz

  2. Pointez SPARK_HOME sur le répertoire extrait, puis ajoutez à PATH:;%SPARK_HOME%\bin;

  3. Téléchargez l'exécutable winutils depuis le référentiel Hortonworks ou depuis la plateforme Amazon AWS winutils .

  4. Créez un répertoire dans lequel vous placez l'exécutable winutils.exe. Par exemple, C: \ SparkDev \ x64. Ajoutez la variable d'environnement %HADOOP_HOME%qui pointe vers ce répertoire, puis ajoutez %HADOOP_HOME%\binà PATH.

  5. En utilisant la ligne de commande, créez le répertoire:

    mkdir C:\tmp\hive
    
  6. À l'aide de l'exécutable que vous avez téléchargé, ajoutez des autorisations complètes au répertoire de fichiers que vous avez créé mais en utilisant le formalisme unixian:

    %HADOOP_HOME%\bin\winutils.exe chmod 777 /tmp/hive
    
  7. Tapez la ligne de commande suivante:

    %SPARK_HOME%\bin\spark-shell
    

L'entrée de la ligne de commande Scala doit être affichée automatiquement.

Remarque: vous n'avez pas besoin de configurer Scala séparément. Il est également intégré.

Farah
la source
3

Voici les correctifs pour le faire fonctionner sous Windows sans tout reconstruire, par exemple si vous ne disposez pas d'une version récente de MS-VS. (Vous aurez besoin d'un compilateur Win32 C ++, mais vous pouvez installer MS VS Community Edition gratuitement.)

J'ai essayé cela avec Spark 1.2.2 et mahout 0.10.2 ainsi qu'avec les dernières versions de novembre 2015. Il y a un certain nombre de problèmes, y compris le fait que le code Scala essaie d'exécuter un script bash (mahout / bin / mahout) qui ne fonctionne pas bien sûr, les scripts sbin n'ont pas été portés sous windows, et les winutils sont manquants si hadoop n'est pas installé.

(1) Installez scala, puis décompressez spark / hadoop / mahout à la racine de C: sous leurs noms de produits respectifs.

(2) Renommez \ mahout \ bin \ mahout en mahout.sh.was (nous n'en aurons pas besoin)

(3) Compilez le programme Win32 C ++ suivant et copiez l'exécutable dans un fichier nommé C: \ mahout \ bin \ mahout (c'est vrai - pas de suffixe .exe, comme un exécutable Linux)

#include "stdafx.h"
#define BUFSIZE 4096
#define VARNAME TEXT("MAHOUT_CP")
int _tmain(int argc, _TCHAR* argv[]) {
    DWORD dwLength;     LPTSTR pszBuffer;
    pszBuffer = (LPTSTR)malloc(BUFSIZE*sizeof(TCHAR));
    dwLength = GetEnvironmentVariable(VARNAME, pszBuffer, BUFSIZE);
    if (dwLength > 0) { _tprintf(TEXT("%s\n"), pszBuffer); return 0; }
    return 1;
}

(4) Créez le script \ mahout \ bin \ mahout.bat et collez le contenu ci-dessous, bien que les noms exacts des fichiers jar dans les chemins de classe _CP dépendent des versions de spark et de mahout. Mettez à jour tous les chemins selon votre installation. Utilisez des noms de chemin 8.3 sans espaces. Notez que vous ne pouvez pas utiliser de caractères génériques / astérisques dans les chemins de classe ici.

set SCALA_HOME=C:\Progra~2\scala
set SPARK_HOME=C:\spark
set HADOOP_HOME=C:\hadoop
set MAHOUT_HOME=C:\mahout
set SPARK_SCALA_VERSION=2.10
set MASTER=local[2]
set MAHOUT_LOCAL=true
set path=%SCALA_HOME%\bin;%SPARK_HOME%\bin;%PATH%
cd /D %SPARK_HOME%
set SPARK_CP=%SPARK_HOME%\conf\;%SPARK_HOME%\lib\xxx.jar;...other jars...
set MAHOUT_CP=%MAHOUT_HOME%\lib\xxx.jar;...other jars...;%MAHOUT_HOME%\xxx.jar;...other jars...;%SPARK_CP%;%MAHOUT_HOME%\lib\spark\xxx.jar;%MAHOUT_HOME%\lib\hadoop\xxx.jar;%MAHOUT_HOME%\src\conf;%JAVA_HOME%\lib\tools.jar
start "master0" "%JAVA_HOME%\bin\java" -cp "%SPARK_CP%" -Xms1g -Xmx1g org.apache.spark.deploy.master.Master --ip localhost --port 7077 --webui-port 8082 >>out-master0.log 2>>out-master0.err
start "worker1" "%JAVA_HOME%\bin\java" -cp "%SPARK_CP%" -Xms1g -Xmx1g org.apache.spark.deploy.worker.Worker spark://localhost:7077 --webui-port 8083 >>out-worker1.log 2>>out-worker1.err
...you may add more workers here...
cd /D %MAHOUT_HOME%
"%JAVA_HOME%\bin\java" -Xmx4g -classpath "%MAHOUT_CP%" "org.apache.mahout.sparkbindings.shell.Main"

Le nom de la variable MAHOUT_CP ne doit pas être modifié, car il est référencé dans le code C ++.

Bien sûr, vous pouvez commenter le code qui lance le maître et le travailleur Spark car Mahout exécutera Spark selon les besoins; Je viens de le mettre dans le travail par lots pour vous montrer comment le lancer si vous vouliez utiliser Spark sans Mahout.

(5) Le didacticiel suivant est un bon point de départ:

https://mahout.apache.org/users/sparkbindings/play-with-shell.html

Vous pouvez afficher l'instance Mahout Spark à l'adresse:

"C:\Program Files (x86)\Google\Chrome\Application\chrome" --disable-web-security http://localhost:4040
Emul
la source
1

Voici sept étapes pour installer Spark sur Windows 10 et l'exécuter à partir de python:

Étape 1: téléchargez le fichier gz spark 2.2.0 tar (archive sur bande) dans n'importe quel dossier F à partir de ce lien - https://spark.apache.org/downloads.html . Décompressez-le et copiez le dossier décompressé dans le dossier souhaité A. Renommez le dossier spark-2.2.0-bin-hadoop2.7 pour spark.

Laissez le chemin d'accès au dossier spark être C: \ Users \ Desktop \ A \ spark

Étape 2: téléchargez le fichier hardoop 2.7.3 tar gz dans le même dossier F à partir de ce lien - https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.3/hadoop-2.7 .3.tar.gz . Décompressez-le et copiez le dossier décompressé dans le même dossier A. Renommez le nom du dossier de Hadoop-2.7.3.tar en hadoop. Laissez le chemin vers le dossier hadoop être C: \ Users \ Desktop \ A \ hadoop

Étape 3: Créez un nouveau fichier texte de bloc-notes. Enregistrez ce fichier de bloc-notes vide sous winutils.exe (avec le type Enregistrer sous: Tous les fichiers). Copiez ce fichier O KB winutils.exe dans votre dossier bin dans spark - C: \ Users \ Desktop \ A \ spark \ bin

Étape 4: Maintenant, nous devons ajouter ces dossiers à l'environnement système.

4a: Créez une variable système (pas une variable utilisateur car la variable utilisateur héritera de toutes les propriétés de la variable système) Nom de la variable: SPARK_HOME Valeur de la variable: C: \ Users \ Desktop \ A \ spark

Recherchez la variable système Path et cliquez sur Modifier. Vous verrez plusieurs chemins. Ne supprimez aucun des chemins. Ajoutez cette valeur de variable -; C: \ Users \ Desktop \ A \ spark \ bin

4b: Créer une variable système

Nom de la variable: HADOOP_HOME Valeur de la variable: C: \ Users \ Desktop \ A \ hadoop

Recherchez la variable système Path et cliquez sur Modifier. Ajoutez cette valeur de variable -; C: \ Users \ Desktop \ A \ hadoop \ bin

4c: Créer une variable système Nom de la variable: JAVA_HOME Recherche Java dans Windows. Faites un clic droit et cliquez sur l'emplacement du fichier ouvert. Vous devrez à nouveau faire un clic droit sur l'un des fichiers java et cliquer sur l'emplacement du fichier ouvert. Vous utiliserez le chemin de ce dossier. OU vous pouvez rechercher C: \ Program Files \ Java. Ma version Java installée sur le système est jre1.8.0_131. Valeur de la variable: C: \ Program Files \ Java \ jre1.8.0_131 \ bin

Recherchez la variable système Path et cliquez sur Modifier. Ajoutez cette valeur de variable -; C: \ Program Files \ Java \ jre1.8.0_131 \ bin

Étape 5: Ouvrez l'invite de commande et accédez à votre dossier spark bin (tapez cd C: \ Users \ Desktop \ A \ spark \ bin). Tapez étincelle.

C:\Users\Desktop\A\spark\bin>spark-shell

Cela peut prendre du temps et donner quelques avertissements. Enfin, il affichera bienvenue à Spark version 2.2.0

Étape 6: Tapez exit () ou redémarrez l'invite de commande et accédez à nouveau au dossier Spark Bin. Tapez pyspark:

C:\Users\Desktop\A\spark\bin>pyspark

Il affichera quelques avertissements et erreurs mais les ignorera. Ça marche.

Étape 7: Votre téléchargement est terminé. Si vous souhaitez exécuter directement spark à partir du shell python, allez dans Scripts dans votre dossier python et tapez

pip install findspark

dans l'invite de commande.

Dans le shell python

import findspark
findspark.init()

importer les modules nécessaires

from pyspark import SparkContext
from pyspark import SparkConf

Si vous souhaitez ignorer les étapes d'importation de findpark et de son initialisation, veuillez suivre la procédure indiquée dans l' importation de pyspark dans le shell python

Aakash Saxena
la source
0

Voici un script minimum simple à exécuter à partir de n'importe quelle console Python. Cela suppose que vous avez extrait les bibliothèques Spark que vous avez téléchargées dans C: \ Apache \ spark-1.6.1.

Cela fonctionne sous Windows sans rien construire et résout les problèmes où Spark se plaindrait du décapage récursif.

import sys
import os
spark_home = 'C:\Apache\spark-1.6.1'

sys.path.insert(0, os.path.join(spark_home, 'python'))
sys.path.insert(0, os.path.join(spark_home, 'python\lib\pyspark.zip')) 
sys.path.insert(0, os.path.join(spark_home, 'python\lib\py4j-0.9-src.zip')) 

# Start a spark context:
sc = pyspark.SparkContext()

# 
lines = sc.textFile(os.path.join(spark_home, "README.md")
pythonLines = lines.filter(lambda line: "Python" in line)
pythonLines.first()
HansHarhoff
la source
0

Cloudera et Hortonworks sont les meilleurs outils pour démarrer avec le HDFS dans Microsoft Windows. Vous pouvez également utiliser VMWare ou VBox pour lancer la machine virtuelle afin d'établir une compilation sur votre HDFS et Spark, Hive, HBase, Pig, Hadoop avec Scala, R, Java, Python.

Divin
la source