Wie richte ich Spark unter Windows ein?

93

Ich versuche, Apache Spark unter Windows einzurichten.

Nachdem ich ein bisschen gesucht habe, verstehe ich, dass der Standalone-Modus das ist, was ich will. Welche Binärdateien lade ich herunter, um Apache Spark in Windows auszuführen? Ich sehe Distributionen mit Hadoop und CDH auf der Spark-Download-Seite.

Ich habe keine Verweise im Web darauf. Eine Schritt-für-Schritt-Anleitung hierfür wird sehr geschätzt.

Siva
quelle

Antworten:

34

Ich fand, dass die einfachste Lösung unter Windows darin besteht, aus dem Quellcode zu erstellen.

Sie können diesem Handbuch ziemlich genau folgen: http://spark.apache.org/docs/latest/building-spark.html

Laden Sie Maven herunter, installieren Sie es und stellen Sie es MAVEN_OPTSauf den im Handbuch angegebenen Wert ein.

Wenn Sie jedoch nur mit Spark herumspielen und es nicht benötigen, um unter Windows ausgeführt zu werden, weil auf Ihrem eigenen Computer Windows ausgeführt wird, empfehle ich dringend, Spark auf einer virtuellen Linux-Maschine zu installieren. Der einfachste Weg, um loszulegen, besteht wahrscheinlich darin, die vorgefertigten Bilder von Cloudera oder Hortonworks herunterzuladen und entweder die mitgelieferte Version von Spark zu verwenden oder Ihre eigenen aus dem Quellcode oder die kompilierten Binärdateien zu installieren, die Sie von der Spark-Website erhalten können.

jkgeyti
quelle
1
Danke für die Vorwarnung. Link ist behoben.
jkgeyti
1
Hallo, My Build on Windows funktioniert gut mit Cygwin, aber wenn ich den Befehl ./start-master.sh im sbin-Verzeichnis ausführe, wird der Fehler angezeigt: Fehler: Die Hauptklasse org.apache.spark.launcher.Main konnte nicht gefunden oder geladen werden Melden Sie sich an /cygdrive/c/Spark/spark-1.5.1/sbin/../logs/spark-auser-org.apache.spark.deploy.master.Master-1.host
Geek
Hallo Yashpal, das habe ich versucht, aber ich bin bei Schritt 5 (Winutils) hängen geblieben. Ich kann diese Dateien nicht in mein bin-Verzeichnis kopieren.
Venkat Ramakrishnan
140

Schritte zum Installieren von Spark im lokalen Modus:

  1. Installieren Sie Java 7 oder höher . Um die Java-Installation zu testen, öffnen Sie die Eingabeaufforderung javaund drücken Sie die Eingabetaste. Wenn Sie eine Nachricht erhalten, müssen 'Java' is not recognized as an internal or external command. Sie Ihre Umgebungsvariablen konfigurieren JAVA_HOMEund PATHauf den Pfad von jdk verweisen.

  2. Laden Sie Scala herunter und installieren Sie es .

    Stellen Sie SCALA_HOMEin Control Panel\System and Security\SystemGOTO "Adv Systemeinstellungen" und fügen Sie %SCALA_HOME%\binin PATH - Variable in Umgebungsvariablen.

  3. Installieren Sie Python 2.6 oder höher über den Python-Download-Link .

  4. Laden Sie SBT herunter . Installieren Sie es und legen Sie es SBT_HOMEals Umgebungsvariable mit dem Wert as fest <<SBT PATH>>.

  5. Download winutils.exevon HortonWorks Repo oder Git Repo . Da wir keine lokale Hadoop-Installation unter Windows haben, müssen wir sie herunterladen winutils.exeund in einem binVerzeichnis unter einem erstellten HadoopHome-Verzeichnis ablegen. In HADOOP_HOME = <<Hadoop home directory>>Umgebungsvariable setzen.

  6. Wir werden ein vorgefertigtes Spark-Paket verwenden. Wählen Sie daher ein vorgefertigtes Spark-Paket für den Hadoop Spark-Download . Laden Sie es herunter und extrahieren Sie es.

    Festlegen SPARK_HOMEund Hinzufügen der %SPARK_HOME%\binPATH-Variablen in Umgebungsvariablen.

  7. Führen Sie den Befehl aus: spark-shell

  8. Öffnen Sie http://localhost:4040/in einem Browser, um die SparkContext-Web-Benutzeroberfläche anzuzeigen.

Ani Menon
quelle
5
Toller Leitfaden, der keine lokale Kompilierung erfordert.
Matt
2
Ich erhalte die Meldung "java.lang.IllegalArgumentException: Fehler beim Instanziieren von 'org.apache.spark.sql.hive.HiveSessionState'". Benötige ich einen zusätzlichen Schritt für die Installation von Hive?
Stefan
4
Das ist sehr hilfreich, danke. Wenn beim Ausführen der Spark-Shell die Fehlermeldung "Spark Jars-Verzeichnis konnte nicht gefunden werden" angezeigt wird, stellen Sie sicher, dass in Ihrem SPARK_HOME-Pfad kein Speicherplatz vorhanden ist. Ich habe lange damit gekämpft.
Aakash Jain
1
Das ist Gold hier. Ich kann nicht erklären, wie viele Probleme ich mit Spark und Scala in Windows hatte. Ich habe zuerst Windows Ubuntu Bash ausprobiert. Keine gute Idee! Vielleicht, wenn Sie das neueste Entwickler-Update (Ubuntu 16) haben, aber ansonsten gibt es eine Menge Fehler und Netzwerkprobleme.
Tom
21

Sie können spark von hier herunterladen:

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

Ich empfehle Ihnen diese Version: Hadoop 2 (HDP2, CDH5)

Seit Version 1.0.0 gibt es .cmd- Skripte, mit denen Spark in Windows ausgeführt werden kann.

Packen Sie es mit 7zip oder ähnlichem aus.

Zum Starten können Sie /bin/spark-shell.cmd --master local [2] ausführen.

Um Ihre Instanz zu konfigurieren, folgen Sie diesem Link: http://spark.apache.org/docs/latest/

Ajnavarro
quelle
Welche Hadoop-Alternative würden Sie vorschlagen? Ich meine etwas, das wir auch auf unseren Windows-PCs installieren könnten. Redis?
Skan
17

Sie können Spark auf folgende Weise einrichten:

  • Bauen aus der Quelle
  • Vorgefertigte Version verwenden

Es gibt jedoch verschiedene Möglichkeiten , Spark aus dem Quellcode zu erstellen .
Zuerst habe ich versucht, eine Spark-Quelle mit SBT zu erstellen, aber das erfordert Hadoop. Um diese Probleme zu vermeiden, habe ich eine vorgefertigte Version verwendet.

Anstelle von Source habe ich die Prebuilt-Version für die Hadoop 2.x-Version heruntergeladen und ausgeführt. Dazu müssen Sie Scala als Voraussetzung installieren.

Ich habe hier alle Schritte zusammengefasst:
So führen Sie Apache Spark unter Windows 7 im Standalone-Modus aus

Hoffe es wird dir helfen .. !!!

Nishu Tayal
quelle
8

Der Versuch, mit spark-2.xx zu arbeiten, das Erstellen von Spark-Quellcode hat bei mir nicht funktioniert.

  1. Obwohl ich Hadoop nicht verwenden werde, habe ich den vorgefertigten Spark mit eingebettetem Hadoop heruntergeladen: spark-2.0.0-bin-hadoop2.7.tar.gz

  2. Zeigen Sie auf SPARK_HOME im extrahierten Verzeichnis und fügen Sie Folgendes hinzu PATH:;%SPARK_HOME%\bin;

  3. Laden Sie die ausführbaren Winutils aus dem Hortonworks-Repository oder von den Winutils der Amazon AWS-Plattform herunter .

  4. Erstellen Sie ein Verzeichnis, in dem Sie die ausführbare Datei winutils.exe ablegen. Zum Beispiel C: \ SparkDev \ x64. Fügen Sie die Umgebungsvariable hinzu, %HADOOP_HOME%die auf dieses Verzeichnis verweist, und fügen Sie %HADOOP_HOME%\binsie dann PATH hinzu.

  5. Erstellen Sie über die Befehlszeile das Verzeichnis:

    mkdir C:\tmp\hive
    
  6. Fügen Sie mit der heruntergeladenen ausführbaren Datei dem von Ihnen erstellten Dateiverzeichnis vollständige Berechtigungen hinzu, verwenden Sie jedoch den Unixian-Formalismus:

    %HADOOP_HOME%\bin\winutils.exe chmod 777 /tmp/hive
    
  7. Geben Sie die folgende Befehlszeile ein:

    %SPARK_HOME%\bin\spark-shell
    

Die Eingabe der Scala-Befehlszeile sollte automatisch angezeigt werden.

Anmerkung: Sie müssen Scala nicht separat konfigurieren. Es ist auch eingebaut.

Farah
quelle
3

Hier sind die Korrekturen, mit denen es unter Windows ausgeführt werden kann, ohne dass alles neu erstellt werden muss - beispielsweise, wenn Sie keine aktuelle Version von MS-VS haben. (Sie benötigen einen Win32 C ++ - Compiler, können MS MS Community Edition jedoch kostenlos installieren.)

Ich habe dies mit Spark 1.2.2 und mahout 0.10.2 sowie mit den neuesten Versionen im November 2015 versucht. Es gibt eine Reihe von Problemen, einschließlich der Tatsache, dass der Scala-Code versucht, ein Bash-Skript auszuführen (mahout / bin / mahout) was natürlich nicht funktioniert, die sbin-skripte wurden nicht auf windows portiert und die winutils fehlen, wenn hadoop nicht installiert ist.

(1) Installieren Sie scala und entpacken Sie spark / hadoop / mahout im Stammverzeichnis von C: unter den jeweiligen Produktnamen.

(2) Benennen Sie \ mahout \ bin \ mahout in mahout.sh.was um (wir werden es nicht brauchen)

(3) Kompilieren Sie das folgende Win32 C ++ - Programm und kopieren Sie die ausführbare Datei in eine Datei mit dem Namen C: \ mahout \ bin \ mahout (das ist richtig - kein .exe-Suffix wie bei einer ausführbaren Linux-Datei)

#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) Erstellen Sie das Skript \ mahout \ bin \ mahout.bat und fügen Sie den folgenden Inhalt ein, obwohl die genauen Namen der Jars in den _CP-Klassenpfaden von den Versionen von spark und mahout abhängen. Aktualisieren Sie alle Pfade gemäß Ihrer Installation. Verwenden Sie 8.3 Pfadnamen ohne Leerzeichen. Beachten Sie, dass Sie in den Klassenpfaden hier keine Platzhalter / Sternchen verwenden können.

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"

Der Name der Variablen MAHOUT_CP sollte nicht geändert werden, da im C ++ - Code darauf verwiesen wird.

Natürlich können Sie den Code auskommentieren, der den Spark-Master und -Arbeiter startet, da Mahout Spark nach Bedarf ausführt. Ich habe es einfach in den Batch-Job eingefügt, um Ihnen zu zeigen, wie Sie es starten können, wenn Sie Spark ohne Mahout verwenden möchten.

(5) Das folgende Tutorial ist ein guter Anfang:

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

Sie können die Mahout Spark-Instanz unter folgender Adresse aufrufen:

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

Die Anleitung von Ani Menon (thx!) Hat unter Windows 10 fast für mich funktioniert. Ich musste nur eine neuere winutils.exe von diesem Git (derzeit hadoop-2.8.1) herunterladen: https://github.com/steveloughran/winutils

Chris
quelle
1

Hier sind sieben Schritte, um spark unter Windows 10 zu installieren und unter Python auszuführen:

Schritt 1: Laden Sie die gz-Datei spark 2.2.0 tar (tape Archive) über diesen Link in einen beliebigen Ordner F herunter - https://spark.apache.org/downloads.html . Entpacken Sie es und kopieren Sie den entpackten Ordner in den gewünschten Ordner A. Benennen Sie den Ordner spark-2.2.0-bin-hadoop2.7 in spark um.

Der Pfad zum Spark-Ordner sei C: \ Users \ Desktop \ A \ spark

Schritt 2: Laden Sie die Datei hardoop 2.7.3 tar gz über diesen Link in denselben Ordner F herunter - https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.3/hadoop-2.7 .3.tar.gz . Entpacken Sie es und kopieren Sie den entpackten Ordner in denselben Ordner A. Benennen Sie den Ordnernamen von Hadoop-2.7.3.tar in hadoop um. Der Pfad zum Hadoop-Ordner sei C: \ Users \ Desktop \ A \ Hadoop

Schritt 3: Erstellen Sie eine neue Editor-Textdatei. Speichern Sie diese leere Editor-Datei als winutils.exe (mit Dateityp: Alle Dateien). Kopieren Sie diese O KB-Datei winutils.exe in Ihren bin-Ordner in spark - C: \ Users \ Desktop \ A \ spark \ bin

Schritt 4: Jetzt müssen wir diese Ordner zur Systemumgebung hinzufügen.

4a: Erstellen einer Systemvariablen (keine Benutzervariable, da die Benutzervariable alle Eigenschaften der Systemvariablen erbt) Variablenname: SPARK_HOME Variablenwert: C: \ Users \ Desktop \ A \ spark

Suchen Sie die Pfadsystemvariable und klicken Sie auf Bearbeiten. Sie sehen mehrere Pfade. Löschen Sie keinen der Pfade. Fügen Sie diesen Variablenwert hinzu -; C: \ Users \ Desktop \ A \ spark \ bin

4b: Erstellen Sie eine Systemvariable

Variablenname: HADOOP_HOME Variablenwert: C: \ Users \ Desktop \ A \ hadoop

Suchen Sie die Pfadsystemvariable und klicken Sie auf Bearbeiten. Fügen Sie diesen Variablenwert hinzu -; C: \ Users \ Desktop \ A \ hadoop \ bin

4c: Erstellen einer Systemvariablen Variablenname: JAVA_HOME Durchsuchen Sie Java in Windows. Klicken Sie mit der rechten Maustaste und klicken Sie auf Dateispeicherort öffnen. Sie müssen erneut mit der rechten Maustaste auf eine der Java-Dateien klicken und auf den Speicherort der geöffneten Datei klicken. Sie verwenden den Pfad dieses Ordners. ODER Sie können nach C: \ Programme \ Java suchen. Meine auf dem System installierte Java-Version ist jre1.8.0_131. Variablenwert: C: \ Programme \ Java \ jre1.8.0_131 \ bin

Suchen Sie die Pfadsystemvariable und klicken Sie auf Bearbeiten. Fügen Sie diesen Variablenwert hinzu -; C: \ Programme \ Java \ jre1.8.0_131 \ bin

Schritt 5: Öffnen Sie die Eingabeaufforderung und wechseln Sie in Ihren Spark Bin-Ordner (geben Sie cd C: \ Users \ Desktop \ A \ spark \ bin ein). Typ Funkenschale.

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

Es kann einige Zeit dauern und einige Warnungen geben. Schließlich wird es willkommen sein, Version 2.2.0 zu funken

Schritt 6: Geben Sie exit () ein oder starten Sie die Eingabeaufforderung neu und wechseln Sie erneut in den Spark Bin-Ordner. Typ pyspark:

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

Es werden einige Warnungen und Fehler angezeigt, die jedoch ignoriert werden. Es klappt.

Schritt 7: Ihr Download ist abgeschlossen. Wenn Sie Spark direkt über die Python-Shell ausführen möchten, gehen Sie wie folgt zu Scripts in Ihrem Python-Ordner und geben Sie ein

pip install findspark

in der Eingabeaufforderung.

In Python-Shell

import findspark
findspark.init()

Importieren Sie die erforderlichen Module

from pyspark import SparkContext
from pyspark import SparkConf

Wenn Sie die Schritte zum Importieren und Initialisieren von findspark überspringen möchten, befolgen Sie bitte die Anweisungen zum Importieren von pyspark in die Python-Shell

Aakash Saxena
quelle
0

Hier ist ein einfaches Mindestskript, das von jeder Python-Konsole ausgeführt werden kann. Es wird davon ausgegangen, dass Sie die Spark-Bibliotheken, die Sie heruntergeladen haben, in C: \ Apache \ spark-1.6.1 extrahiert haben.

Dies funktioniert unter Windows, ohne etwas zu erstellen, und löst Probleme, bei denen sich Spark über rekursives Beizen beschwert.

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
quelle
0

Cloudera und Hortonworks sind die besten Tools, um mit HDFS in Microsoft Windows zu starten. Sie können auch VMWare oder VBox verwenden, um die virtuelle Maschine zu initiieren und die Erstellung Ihres HDFS und Spark, Hive, HBase, Pig, Hadoop mit Scala, R, Java, Python einzurichten.

Göttlich
quelle