¿Cómo configurar Spark en Windows?

93

Estoy intentando configurar Apache Spark en Windows.

Después de buscar un poco, entiendo que lo que quiero es el modo independiente. ¿Qué binarios descargo para ejecutar Apache Spark en Windows? Veo distribuciones con hadoop y cdh en la página de descarga de Spark.

No tengo referencias en la web a esto. Una guía paso a paso para esto es muy apreciada.

Siva
fuente

Respuestas:

34

Encontré que la solución más fácil en Windows es construir desde la fuente.

Puede seguir prácticamente esta guía: http://spark.apache.org/docs/latest/building-spark.html

Descargue e instale Maven y establezca MAVEN_OPTSel valor especificado en la guía.

Pero si solo está jugando con Spark, y en realidad no necesita que se ejecute en Windows por ningún otro motivo por el que su propia máquina ejecuta Windows, le sugiero encarecidamente que instale Spark en una máquina virtual Linux. La forma más sencilla de comenzar probablemente sea descargar las imágenes listas para usar creadas por Cloudera o Hortonworks, y usar la versión incluida de Spark, o instalar la suya propia desde la fuente o los binarios compilados que puede obtener del sitio web de Spark.

jkgeyti
fuente
1
Gracias por el aviso. El enlace está fijo.
jkgeyti
1
Hola, Mi compilación en Windows funciona bien con Cygwin, pero cuando ejecuto el comando ./start-master.sh en el directorio sbin aparece el error Error: No se pudo encontrar o cargar la clase principal org.apache.spark.launcher.Main completo inicie sesión /cygdrive/c/Spark/spark-1.5.1/sbin/../logs/spark-auser-org.apache.spark.deploy.master.Master-1.host
Geek
Hola Yashpal, lo intenté, pero me quedé atascado en el paso 5 (winutils). No puedo copiar esos archivos en mi directorio bin.
Venkat Ramakrishnan
140

Pasos para instalar Spark en modo local:

  1. Instale Java 7 o posterior . Para probar que la instalación de Java está completa, abra el tipo de símbolo del sistema javay presione Intro. Si recibe un mensaje 'Java' is not recognized as an internal or external command. , debe configurar sus variables de entorno JAVA_HOMEy PATHseñalar la ruta de jdk.

  2. Descargue e instale Scala .

    Establezca SCALA_HOMEen Control Panel\System and Security\Systemgoto "Configuración del sistema avanzado" y agregue la %SCALA_HOME%\binvariable PATH en las variables de entorno.

  3. Instale Python 2.6 o posterior desde el enlace de descarga de Python .

  4. Descarga SBT . Instálelo y configúrelo SBT_HOMEcomo una variable de entorno con el valor <<SBT PATH>>.

  5. Descargue winutils.exedesde el repositorio de HortonWorks o el repositorio de git . Como no tenemos una instalación local de Hadoop en Windows, tenemos que descargarla winutils.exey colocarla en un bindirectorio debajo de un Hadoopdirectorio de inicio creado . Establecer HADOOP_HOME = <<Hadoop home directory>>en variable de entorno.

  6. Usaremos un paquete Spark prediseñado, así que elija un paquete Spark prediseñado para la descarga de Hadoop Spark . Descárguelo y extráigalo.

    Establezca SPARK_HOMEy agregue la %SPARK_HOME%\binvariable PATH en las variables de entorno.

  7. Ejecutar comando: spark-shell

  8. Abra http://localhost:4040/en un navegador para ver la interfaz de usuario web SparkContext.

Ani Menon
fuente
5
Gran guía que no requiere ninguna compilación local.
Matt
2
Recibo "java.lang.IllegalArgumentException: Error al crear una instancia de 'org.apache.spark.sql.hive.HiveSessionState'". ¿Necesito un paso adicional para instalar Hive?
Stefan
4
Eso es muy útil, gracias. Además, si alguien tiene un error que dice "no se pudo encontrar el directorio Spark Jars" al ejecutar Spark-Shell, asegúrese de que no haya espacio en su ruta SPARK_HOME. Luché con esto por mucho tiempo.
Aakash Jain
1
Esto es oro aquí mismo. No puedo explicar cuántos problemas tuve con Spark y Scala en Windows. Primero probé Windows Ubuntu Bash. ¡No es Buena idea! Tal vez si tiene la última actualización de creadores (Ubuntu 16), pero por lo demás hay un montón de errores y problemas de red.
Tom
21

Puedes descargar Spark desde aquí:

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

Te recomiendo esta versión: Hadoop 2 (HDP2, CDH5)

Desde la versión 1.0.0 existen scripts .cmd para ejecutar Spark en Windows.

Desembale con 7zip o similar.

Para comenzar puede ejecutar /bin/spark-shell.cmd --master local [2]

Para configurar su instancia, puede seguir este enlace: http://spark.apache.org/docs/latest/

ajnavarro
fuente
¿Qué alternativa de hadoop sugerirías? Me refiero a algo que también podríamos instalar en nuestras PC con Windows. Redis?
skan
17

Puede utilizar las siguientes formas de configurar Spark:

  • Construyendo desde la fuente
  • Usar versión prediseñada

Aunque hay varias formas de construir Spark desde Source .
Primero intenté construir una fuente Spark con SBT pero eso requiere hadoop. Para evitar esos problemas, utilicé una versión prediseñada.

En lugar de Source, descargué la versión precompilada para la versión hadoop 2.xy la ejecuté. Para ello, debe instalar Scala como requisito previo.

He recopilado todos los pasos aquí:
Cómo ejecutar Apache Spark en Windows7 en modo independiente

Espero que te ayude .. !!!

Nishu Tayal
fuente
8

Al intentar trabajar con spark-2.xx, la creación del código fuente de Spark no funcionó para mí.

  1. Entonces, aunque no voy a usar Hadoop, descargué Spark prediseñado con hadoop incrustado: spark-2.0.0-bin-hadoop2.7.tar.gz

  2. Apunte SPARK_HOME en el directorio extraído, luego agregue a PATH:;%SPARK_HOME%\bin;

  3. Descargue el ejecutable winutils del repositorio de Hortonworks o de la plataforma Amazon AWS winutils .

  4. Cree un directorio donde coloque el ejecutable winutils.exe. Por ejemplo, C: \ SparkDev \ x64. Agregue la variable de entorno %HADOOP_HOME%que apunta a este directorio, luego agregue %HADOOP_HOME%\bina PATH.

  5. Usando la línea de comando, cree el directorio:

    mkdir C:\tmp\hive
    
  6. Usando el ejecutable que descargó, agregue permisos completos al directorio de archivos que creó pero usando el formalismo unixiano:

    %HADOOP_HOME%\bin\winutils.exe chmod 777 /tmp/hive
    
  7. Escriba la siguiente línea de comando:

    %SPARK_HOME%\bin\spark-shell
    

La entrada de la línea de comando de Scala debería mostrarse automáticamente.

Observación: no es necesario configurar Scala por separado. También está integrado.

Farah
fuente
3

Aquí están las correcciones para que se ejecute en Windows sin reconstruir todo, por ejemplo, si no tiene una versión reciente de MS-VS. (Necesitará un compilador Win32 C ++, pero puede instalar MS VS Community Edition gratis).

Probé esto con Spark 1.2.2 y mahout 0.10.2, así como con las últimas versiones en noviembre de 2015. Hay una serie de problemas, incluido el hecho de que el código Scala intenta ejecutar un script bash (mahout / bin / mahout) que no funciona, por supuesto, los scripts sbin no se han portado a Windows y faltan winutils si hadoop no está instalado.

(1) Instale scala, luego descomprima spark / hadoop / mahout en la raíz de C: bajo sus respectivos nombres de producto.

(2) Cambie el nombre de \ mahout \ bin \ mahout a mahout.sh.was (no lo necesitaremos)

(3) Compile el siguiente programa Win32 C ++ y copie el ejecutable en un archivo llamado C: \ mahout \ bin \ mahout (así es, sin sufijo .exe, como un ejecutable de 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) Cree el script \ mahout \ bin \ mahout.bat y pegue el contenido a continuación, aunque los nombres exactos de los frascos en las rutas de clase _CP dependerán de las versiones de spark y mahout. Actualice las rutas según su instalación. Utilice nombres de ruta 8.3 sin espacios en ellos. Tenga en cuenta que aquí no puede utilizar comodines / asteriscos en las rutas de clases.

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"

El nombre de la variable MAHOUT_CP no debe cambiarse, ya que se hace referencia en el código C ++.

Por supuesto, puede comentar el código que inicia el maestro y el trabajador de Spark porque Mahout ejecutará Spark según sea necesario; Simplemente lo puse en el trabajo por lotes para mostrarte cómo ejecutarlo si querías usar Spark sin Mahout.

(5) El siguiente tutorial es un buen lugar para comenzar:

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

Puede abrir la instancia de Mahout Spark en:

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

Aquí hay siete pasos para instalar Spark en Windows 10 y ejecutarlo desde Python:

Paso 1: descargue el archivo Spark 2.2.0 tar (Tape Archive) gz en cualquier carpeta F desde este enlace: https://spark.apache.org/downloads.html . Descomprímalo y copie la carpeta descomprimida en la carpeta deseada A. Cambie el nombre de la carpeta spark-2.2.0-bin-hadoop2.7 a spark.

Deje que la ruta a la carpeta Spark sea C: \ Users \ Desktop \ A \ spark

Paso 2: descargue el archivo hardoop 2.7.3 tar gz en la misma carpeta F desde este enlace: https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.3/hadoop-2.7 .3.tar.gz . Descomprímalo y copie la carpeta descomprimida en la misma carpeta A. Cambie el nombre de la carpeta de Hadoop-2.7.3.tar a hadoop. Deje que la ruta a la carpeta hadoop sea C: \ Users \ Desktop \ A \ hadoop

Paso 3: crea un nuevo archivo de texto de bloc de notas. Guarde este archivo de bloc de notas vacío como winutils.exe (con Guardar como tipo: Todos los archivos). Copie este archivo winutils.exe de O KB a su carpeta bin en Spark - C: \ Users \ Desktop \ A \ spark \ bin

Paso 4: Ahora, tenemos que agregar estas carpetas al entorno del sistema.

4a: Cree una variable de sistema (no una variable de usuario, ya que la variable de usuario heredará todas las propiedades de la variable de sistema) Nombre de la variable: SPARK_HOME Valor de la variable: C: \ Users \ Desktop \ A \ spark

Busque la variable de sistema Path y haga clic en editar. Verá múltiples caminos. No elimine ninguna de las rutas. Agregue este valor de variable -; C: \ Users \ Desktop \ A \ spark \ bin

4b: cree una variable de sistema

Nombre de la variable: HADOOP_HOME Valor de la variable: C: \ Users \ Desktop \ A \ hadoop

Busque la variable de sistema Path y haga clic en editar. Agregue este valor de variable -; C: \ Users \ Desktop \ A \ hadoop \ bin

4c: Crea una variable de sistema Nombre de variable: JAVA_HOME Busca Java en Windows. Haga clic derecho y haga clic en abrir la ubicación del archivo. Tendrá que volver a hacer clic derecho en cualquiera de los archivos java y hacer clic en abrir la ubicación del archivo. Utilizará la ruta de esta carpeta. O puede buscar C: \ Archivos de programa \ Java. Mi versión de Java instalada en el sistema es jre1.8.0_131. Valor de la variable: C: \ Archivos de programa \ Java \ jre1.8.0_131 \ bin

Busque la variable de sistema Path y haga clic en editar. Agregue este valor de variable -; C: \ Archivos de programa \ Java \ jre1.8.0_131 \ bin

Paso 5: Abra el símbolo del sistema y vaya a la carpeta Spark bin (escriba cd C: \ Users \ Desktop \ A \ spark \ bin). Escriba spark-shell.

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

Puede llevar tiempo y dar algunas advertencias. Finalmente, mostrará la bienvenida a la versión 2.2.0 de Spark.

Paso 6: Escriba exit () o reinicie el símbolo del sistema y vuelva a la carpeta Spark Bin. Escriba pyspark:

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

Mostrará algunas advertencias y errores, pero ignórelos. Funciona.

Paso 7: la descarga está completa. Si desea ejecutar Spark directamente desde el shell de Python, vaya a Scripts en su carpeta de Python y escriba

pip install findspark

en el símbolo del sistema.

En cáscara de python

import findspark
findspark.init()

importar los módulos necesarios

from pyspark import SparkContext
from pyspark import SparkConf

Si desea omitir los pasos para importar findpark e inicializarlo, siga el procedimiento que se indica en la importación de pyspark en el shell de python

Aakash Saxena
fuente
0

Aquí hay un script mínimo simple para ejecutar desde cualquier consola de Python. Se asume que ha extraído las bibliotecas Spark que ha descargado en C: \ Apache \ spark-1.6.1.

Esto funciona en Windows sin construir nada y resuelve problemas en los que Spark se quejaba de decapado recursivo.

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

Cloudera y Hortonworks son las mejores herramientas para iniciar HDFS en Microsoft Windows. También puede usar VMWare o VBox para iniciar la máquina virtual para establecer la compilación de su HDFS y Spark, Hive, HBase, Pig, Hadoop con Scala, R, Java, Python.

Adivinar
fuente