Jak skonfigurować Sparka w systemie Windows?

93

Próbuję skonfigurować Apache Spark w systemie Windows.

Po krótkich poszukiwaniach rozumiem, że tryb samodzielny jest tym, czego chcę. Jakie pliki binarne należy pobrać, aby uruchomić Apache Spark w systemie Windows? Widzę dystrybucje z hadoopem i cdh na stronie pobierania Spark.

Nie mam w sieci odniesień do tego. Bardzo cenny jest przewodnik krok po kroku.

Siva
źródło

Odpowiedzi:

34

Odkryłem, że najłatwiejszym rozwiązaniem w systemie Windows jest kompilacja ze źródeł.

Możesz prawie postępować zgodnie z tym przewodnikiem: http://spark.apache.org/docs/latest/building-spark.html

Pobierz i zainstaluj Maven i ustaw MAVEN_OPTSna wartość określoną w przewodniku.

Ale jeśli po prostu bawisz się Sparkiem i nie potrzebujesz go do działania w systemie Windows z jakiegokolwiek innego powodu, że na Twojej maszynie jest uruchomiony system Windows, zdecydowanie sugeruję zainstalowanie Spark'a na maszynie wirtualnej z systemem Linux. Najprostszym sposobem na rozpoczęcie jest prawdopodobnie pobranie gotowych obrazów wykonanych przez Cloudera lub Hortonworks i skorzystanie z dołączonej wersji Spark lub zainstalowanie własnego ze źródła lub skompilowanych plików binarnych, które można pobrać ze strony internetowej Spark.

jkgeyti
źródło
1
Dziękuję za ostrzeżenia. Link jest naprawiony.
jkgeyti
1
Cześć, Moja kompilacja w systemie Windows działa dobrze z Cygwin, ale po uruchomieniu polecenia ./start-master.sh w katalogu sbin pojawia się błąd Błąd: Nie można znaleźć ani załadować głównej klasy org.apache.spark.launcher.Main full zaloguj się /cygdrive/c/Spark/spark-1.5.1/sbin/../logs/spark-auser-org.apache.spark.deploy.master.Master-1.host
Geek
Cześć Yashpal, próbowałem tego, ale utknąłem na kroku 5 (winutils). Nie mogę skopiować tych plików do mojego katalogu bin.
Venkat Ramakrishnan,
140

Kroki, aby zainstalować Sparka w trybie lokalnym:

  1. Zainstaluj Javę 7 lub nowszą . Aby sprawdzić, czy instalacja Java została zakończona, otwórz typ wiersza poleceń javai naciśnij Enter. Jeśli otrzymasz komunikat, 'Java' is not recognized as an internal or external command. musisz skonfigurować zmienne środowiskowe JAVA_HOMEi PATHwskazać ścieżkę do jdk.

  2. Pobierz i zainstaluj Scala .

    Ustaw SCALA_HOMEw Control Panel\System and Security\Systemgoto "Adv System settings" i dodaj %SCALA_HOME%\binzmienną PATH do zmiennych środowiskowych.

  3. Zainstaluj Python 2.6 lub nowszy z linku Python Download .

  4. Pobierz SBT . Zainstaluj go i ustaw SBT_HOMEjako zmienną środowiskową o wartości <<SBT PATH>>.

  5. Pobierz winutils.exez repozytorium HortonWorks lub repozytorium git . Ponieważ nie mamy lokalnej instalacji Hadoop w systemie Windows, musimy pobrać winutils.exei umieścić ją w binkatalogu w utworzonym Hadoopkatalogu domowym. Ustaw HADOOP_HOME = <<Hadoop home directory>>w zmiennej środowiskowej.

  6. Będziemy używać gotowego pakietu Spark, więc wybierz wstępnie zbudowany pakiet Spark do pobrania Hadoop Spark . Pobierz i rozpakuj.

    Ustaw SPARK_HOMEi dodaj %SPARK_HOME%\binzmienną PATH w zmiennych środowiskowych.

  7. Uruchom polecenie: spark-shell

  8. Otwórz http://localhost:4040/w przeglądarce, aby wyświetlić interfejs sieciowy SparkContext.

Ani Menon
źródło
5
Świetny przewodnik, który nie wymaga żadnej lokalnej kompilacji.
Matt
2
Otrzymuję „java.lang.IllegalArgumentException: Błąd podczas tworzenia instancji 'org.apache.spark.sql.hive.HiveSessionState'”. Czy potrzebuję dodatkowego kroku do zainstalowania ula?
Stefan
4
To bardzo pomocne, dzięki. Ponadto, jeśli ktoś ma błąd mówiący „nie udało się znaleźć katalogu Spark Jars” podczas uruchamiania powłoki, upewnij się, że w ścieżce SPARK_HOME nie ma miejsca. Walczyłem z tym przez długi czas.
Aakash Jain
1
Tu jest złoto. Nie potrafię wyjaśnić, jak wiele problemów miałem ze Sparkiem i Scalą w systemie Windows. Najpierw wypróbowałem system Windows Ubuntu Bash. Nie jest to dobry pomysł! Może jeśli masz najnowszą aktualizację twórców (Ubuntu 16), ale poza tym jest mnóstwo błędów i problemów z siecią.
Tom
21

Możesz pobrać Spark stąd:

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

Polecam tę wersję: Hadoop 2 (HDP2, CDH5)

Od wersji 1.0.0 istnieją skrypty .cmd do uruchamiania programu Spark w systemie Windows.

Rozpakuj go za pomocą 7zip lub podobnego.

Aby rozpocząć, możesz wykonać /bin/spark-shell.cmd --master local [2]

Aby skonfigurować swoją instancję, możesz kliknąć ten link: http://spark.apache.org/docs/latest/

ajnavarro
źródło
jaką alternatywę hadoop byś zaproponował? Mam na myśli coś, co moglibyśmy również zainstalować na naszych komputerach z systemem Windows. Redis?
skan
17

Możesz użyć następujących sposobów konfiguracji Spark:

  • Budynek ze źródła
  • Korzystanie z prekompilowanej wersji

Chociaż istnieją różne sposoby tworzenia Sparka ze Źródła .
Najpierw próbowałem zbudować źródło Sparka za pomocą SBT, ale to wymaga hadoopa. Aby uniknąć tych problemów, użyłem gotowej wersji.

Zamiast Source, pobrałem wersję prebuilt dla wersji Hadoop 2.xi uruchomiłem ją. W tym celu musisz zainstalować Scala jako wymaganie wstępne.

Tutaj zebrałem wszystkie kroki:
Jak uruchomić Apache Spark na Windows7 w trybie samodzielnym

Mam nadzieję, że to ci pomoże .. !!!

Nishu Tayal
źródło
8

Próbowałem pracować z Spark-2.xx, tworzenie kodu źródłowego Spark nie działało.

  1. Tak więc, chociaż nie zamierzam używać Hadoop, pobrałem wstępnie zbudowany Spark z osadzonym hadoopem: spark-2.0.0-bin-hadoop2.7.tar.gz

  2. Wskaż SPARK_HOME na wyodrębnionym katalogu, a następnie dodaj do PATH:;%SPARK_HOME%\bin;

  3. Pobierz wykonywalne pliki winutils z repozytorium Hortonworks lub z platformy Amazon AWS winutils .

  4. Utwórz katalog, w którym umieścisz plik wykonywalny winutils.exe. Na przykład C: \ SparkDev \ x64. Dodaj zmienną środowiskową %HADOOP_HOME%wskazującą na ten katalog, a następnie dodaj %HADOOP_HOME%\bindo PATH.

  5. Korzystając z wiersza poleceń, utwórz katalog:

    mkdir C:\tmp\hive
    
  6. Korzystając z pobranego pliku wykonywalnego, dodaj pełne uprawnienia do utworzonego katalogu plików, ale korzystając z formalizmu unixowskiego:

    %HADOOP_HOME%\bin\winutils.exe chmod 777 /tmp/hive
    
  7. Wpisz następującą linię poleceń:

    %SPARK_HOME%\bin\spark-shell
    

Wejście wiersza poleceń Scala powinno być wyświetlane automatycznie.

Uwaga: Nie musisz oddzielnie konfigurować Scali. Jest też wbudowany.

Farah
źródło
3

Oto poprawki umożliwiające uruchomienie go w systemie Windows bez przebudowywania wszystkiego - na przykład w przypadku braku najnowszej wersji MS-VS. (Będziesz potrzebował kompilatora Win32 C ++, ale możesz bezpłatnie zainstalować MS VS Community Edition).

Wypróbowałem to ze Spark 1.2.2 i mahout 0.10.2, a także z najnowszymi wersjami w listopadzie 2015 r. Istnieje wiele problemów, w tym fakt, że kod Scala próbuje uruchomić skrypt bash (mahout / bin / mahout), który oczywiście nie działa, skrypty sbin nie zostały przeportowane do systemu Windows, a winutils brakuje, jeśli hadoop nie jest zainstalowany.

(1) Zainstaluj scala, a następnie rozpakuj spark / hadoop / mahout do katalogu głównego C: pod odpowiednimi nazwami produktów.

(2) Zmień nazwę \ mahout \ bin \ mahout na mahout.sh.was (nie będziemy tego potrzebować)

(3) Skompiluj następujący program Win32 C ++ i skopiuj plik wykonywalny do pliku o nazwie C: \ mahout \ bin \ mahout (to prawda - bez przyrostka .exe, jak plik wykonywalny Linuksa)

#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) Utwórz skrypt \ mahout \ bin \ mahout.bat i wklej poniższą zawartość, chociaż dokładne nazwy słoików w ścieżkach klas _CP będą zależały od wersji spark i mahout. Zaktualizuj dowolne ścieżki zgodnie z instalacją. Używaj nazw ścieżek 8.3 bez spacji. Zauważ, że nie możesz używać symboli wieloznacznych / gwiazdek w ścieżkach klas tutaj.

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"

Nie należy zmieniać nazwy zmiennej MAHOUT_CP, ponieważ odwołuje się do niej kod C ++.

Oczywiście możesz skomentować kod, który uruchamia mistrza i proces roboczy Spark, ponieważ Mahout będzie uruchamiał Spark w razie potrzeby; Po prostu umieściłem to w zadaniu wsadowym, aby pokazać, jak go uruchomić, jeśli chcesz używać Sparka bez Mahouta.

(5) Poniższy samouczek jest dobrym miejscem do rozpoczęcia:

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

Możesz wywołać instancję Mahout Spark pod adresem:

"C:\Program Files (x86)\Google\Chrome\Application\chrome" --disable-web-security http://localhost:4040
Emul
źródło
1

Oto siedem kroków, aby zainstalować Spark w systemie Windows 10 i uruchomić go z Pythona:

Krok 1: pobierz plik tar (archiwum taśm) programu Spark 2.2.0 do dowolnego folderu F z tego łącza - https://spark.apache.org/downloads.html . Rozpakuj go i skopiuj rozpakowany folder do żądanego folderu A. Zmień nazwę folderu spark-2.2.0-bin-hadoop2.7 na spark.

Niech ścieżka do folderu iskier to C: \ Users \ Desktop \ A \ spark

Krok 2: pobierz plik tar gz hardoop 2.7.3 do tego samego folderu F z tego linku - https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.3/hadoop-2.7 .3.tar.gz . Rozpakuj go i skopiuj rozpakowany folder do tego samego folderu A. Zmień nazwę folderu z Hadoop-2.7.3.tar na hadoop. Niech ścieżka do folderu hadoop będzie C: \ Users \ Desktop \ A \ hadoop

Krok 3: Utwórz nowy plik tekstowy notatnika. Zapisz ten pusty plik notatnika jako winutils.exe (z Zapisz jako typ: wszystkie pliki). Skopiuj ten plik O KB winutils.exe do folderu bin w Spark - C: \ Users \ Desktop \ A \ spark \ bin

Krok 4: Teraz musimy dodać te foldery do środowiska systemowego.

4a: Utwórz zmienną systemową (nie zmienną użytkownika, ponieważ zmienna użytkownika odziedziczy wszystkie właściwości zmiennej systemowej) Nazwa zmiennej: SPARK_HOME Wartość zmiennej: C: \ Users \ Desktop \ A \ spark

Znajdź zmienną systemową Path i kliknij edytuj. Zobaczysz wiele ścieżek. Nie usuwaj żadnej ścieżki. Dodaj wartość tej zmiennej -; C: \ Users \ Desktop \ A \ spark \ bin

4b: Utwórz zmienną systemową

Nazwa zmiennej: HADOOP_HOME Wartość zmiennej: C: \ Users \ Desktop \ A \ hadoop

Znajdź zmienną systemową Path i kliknij edytuj. Dodaj wartość tej zmiennej -; C: \ Users \ Desktop \ A \ hadoop \ bin

4c: Utwórz zmienną systemową Nazwa zmiennej: JAVA_HOME Wyszukaj Java w systemie Windows. Kliknij prawym przyciskiem myszy i kliknij otwórz lokalizację pliku. Będziesz musiał ponownie kliknąć prawym przyciskiem myszy dowolny plik java i kliknąć otwartą lokalizację pliku. Będziesz używać ścieżki do tego folderu. LUB możesz wyszukać C: \ Program Files \ Java. Moja wersja Java zainstalowana w systemie to jre1.8.0_131. Wartość zmiennej: C: \ Program Files \ Java \ jre1.8.0_131 \ bin

Znajdź zmienną systemową Path i kliknij edytuj. Dodaj wartość tej zmiennej -; C: \ Program Files \ Java \ jre1.8.0_131 \ bin

Krok 5: Otwórz wiersz polecenia i przejdź do folderu spark bin (wpisz cd C: \ Users \ Desktop \ A \ spark \ bin). Wpisz łuskę iskrową.

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

Może to zająć trochę czasu i spowodować ostrzeżenie. Na koniec pokaże powitanie w wersji Spark 2.2.0

Krok 6: Wpisz exit () lub uruchom ponownie wiersz polecenia i ponownie przejdź do folderu spark bin. Wpisz pyspark:

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

Pokaże ostrzeżenia i błędy, ale zignoruje. To działa.

Krok 7: Pobieranie zostało zakończone. Jeśli chcesz bezpośrednio uruchomić Spark z powłoki Pythona: przejdź do Skrypty w folderze Pythona i wpisz

pip install findspark

w wierszu polecenia.

W powłoce Pythona

import findspark
findspark.init()

zaimportuj niezbędne moduły

from pyspark import SparkContext
from pyspark import SparkConf

Jeśli chcesz pominąć kroki importowania findspark i inicjalizacji go, postępuj zgodnie z procedurą podaną podczas importowania pyspark w powłoce Pythona

Aakash Saxena
źródło
0

Oto prosty minimalny skrypt do uruchomienia z dowolnej konsoli Pythona. Zakłada się, że rozpakowałeś biblioteki Spark, które pobrałeś do C: \ Apache \ spark-1.6.1.

Działa to w systemie Windows bez tworzenia czegokolwiek i rozwiązuje problemy, w których Spark narzekałby na rekurencyjne wytrawianie.

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
źródło
0

Cloudera i Hortonworks to najlepsze narzędzia do uruchamiania z HDFS w Microsoft Windows. Możesz również użyć VMWare lub VBox, aby zainicjować maszynę wirtualną w celu ustanowienia kompilacji do twojego HDFS i Spark, Hive, HBase, Pig, Hadoop z Scala, R, Java, Python.

Boski
źródło