如何在Windows上设置Spark?


93

我正在尝试在Windows上安装Apache Spark。

经过一番搜索,我了解到我想要的是独立模式。我要下载哪些二进制文件才能在Windows中运行Apache Spark?我在spark下载页面上看到了hadoop和cdh的发行版。

我在网络上没有对此的参考。对此的逐步指南受到高度赞赏。

Answers:


34

我发现Windows上最简单的解决方案是从源代码构建。

您几乎可以遵循此指南:http : //spark.apache.org/docs/latest/building-spark.html

下载并安装Maven,并设置MAVEN_OPTS为指南中指定的值。

但是,如果您只是在玩Spark,而实际上并不需要它在您的计算机运行Windows的任何其他原因在Windows上运行,那么我强烈建议您在Linux虚拟机上安装Spark。最简单的入门方法可能是下载由Cloudera或Hortonworks制作的现成图像,并使用Spark的捆绑版本,或者从Spark网站上安装源代码或编译后的二进制文件。


1
谢谢你的提醒。链接是固定的。
jkgeyti 2015年

1
嗨,Windows上的My Build在Cygwin上正常工作,但是当我在sbin目录中运行命令./start-master.sh时,出现错误错误:无法找到或加载主类org.apache.spark.launcher.Main full登录/cygdrive/c/Spark/spark-1.5.1/sbin/../logs/spark-auser-org.apache.spark.deploy.master.Master-1.host
怪胎

嗨,Yashpal,我尝试了这一点,但是我陷入了第5步(winutils)。我无法将这些文件复制到我的bin目录中。
Venkat Ramakrishnan

140

在本地模式下安装Spark的步骤:

  1. 安装Java 7或更高版本。要测试Java安装是否完成,请打开命令提示符类型,java然后按Enter。如果收到消息,则'Java' is not recognized as an internal or external command. 需要配置环境变量,JAVA_HOMEPATH指向jdk的路径。

  2. 下载并安装Scala

    设置SCALA_HOMEControl Panel\System and Security\System转到“进阶系统设置”,并增加%SCALA_HOME%\bin在环境变量PATH变量。

  3. Python下载链接安装Python 2.6或更高版本。

  4. 下载SBT。安装它并设置SBT_HOME为环境变量,其值为<<SBT PATH>>

  5. winutils.exeHortonWorks repogit repo下载。由于我们在Windows上没有本地Hadoop安装,因此必须下载winutils.exe并将其放置bin在已创建的Hadoop主目录下的目录中。HADOOP_HOME = <<Hadoop home directory>>在环境变量中设置。

  6. 我们将使用预构建的Spark软件包,因此请为Hadoop Spark下载选择一个Spark预构建的软件包。下载并解压缩。

    在环境变量中设置SPARK_HOME并添加%SPARK_HOME%\binPATH变量。

  7. 运行命令: spark-shell

  8. http://localhost:4040/在浏览器中打开以查看SparkContext Web UI。


5
很好的指南,不需要任何本地编译。
马特

2
我收到“ java.lang.IllegalArgumentException:实例化“ org.apache.spark.sql.hive.HiveSessionState”时出错”。我是否需要额外的步骤来安装蜂巢?
Stefan


4
非常有帮助,谢谢。另外,如果在运行spark-shell时出现错误提示“无法找到spark jars目录”,请确保SPARK_HOME路径中没有空间。长期为此奋斗。
Aakash Jain

1
这就是黄金。我无法解释在Windows中使用Spark和Scala有多少麻烦。我首先尝试了Windows Ubuntu Bash。这不是一个好主意!也许如果您有最新的创作者更新(Ubuntu 16),但是否则会有很多错误和网络问题。
汤姆(Tom),

21

您可以从此处下载spark:

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

我建议您使用以下版本:Hadoop 2(HDP2,CDH5)

从1.0.0版开始,有.cmd脚本可在Windows中运行spark。

使用7zip或类似文件解压缩它。

首先,您可以执行/bin/spark-shell.cmd --master local [2]

要配置您的实例,您可以点击以下链接:http : //spark.apache.org/docs/latest/


您会建议使用哪种替代方案?我的意思是我们也可以在Windows PC上安装某些东西。Redis?
skan

17

您可以通过以下方式设置Spark:

  • 从源头建造
  • 使用预建版本

尽管有多种方法可以从Source构建Spark
首先,我尝试使用SBT构建Spark源,但这需要hadoop。为了避免这些问题,我使用了预发行版。

我没有下载Source,而是下载了hadoop 2.x版本的Prebuilt版本并运行了它。为此,您需要先安装Scala。

我在这里整理了所有步骤:
如何以独立模式在Windows7上运行Apache Spark

希望能帮助到您.. !!!


8

尝试使用spark-2.xx,构建Spark源代码对我来说不起作用。

  1. 因此,尽管我不会使用Hadoop,但我下载了嵌入hadoop的预构建Spark: spark-2.0.0-bin-hadoop2.7.tar.gz

  2. 将SPARK_HOME指向解压缩的目录,然后添加到PATH;%SPARK_HOME%\bin;

  3. 下载可执行winutils从Hortonworks库,或者从亚马逊AWS平台winutils

  4. 创建一个目录,在其中放置可执行文件winutils.exe。例如,C:\ SparkDev \ x64。添加%HADOOP_HOME%指向该目录的环境变量,然后添加%HADOOP_HOME%\bin到PATH。

  5. 使用命令行创建目录:

    mkdir C:\tmp\hive
    
  6. 使用您下载的可执行文件,将完全权限添加到您创建的文件目录中,但要使用unixian形式:

    %HADOOP_HOME%\bin\winutils.exe chmod 777 /tmp/hive
    
  7. 键入以下命令行:

    %SPARK_HOME%\bin\spark-shell
    

Scala命令行输入应自动显示。

备注:您不需要单独配置Scala。它也是内置的。


3

这是使它在Windows中运行而无需重建所有内容的修补程序-例如,如果您没有最新版本的MS-VS。(您将需要Win32 C ++编译器,但是可以免费安装MS VS Community Edition。)

我已经在Spark 1.2.2和mahout 0.10.2以及2015年11月的最新版本中进行了尝试。存在许多问题,包括Scala代码试图运行bash脚本的事实(mahout / bin / mahout)(当然无法使用),sbin脚本尚未移植到Windows,如果未安装hadoop,则Winutils会丢失。

(1)安装scala,然后将各自的产品名称下的spark / hadoop / mahout解压缩到C:的根目录中。

(2)将\ mahout \ bin \ mahout重命名为mahout.sh.was(我们将不需要它)

(3)编译以下Win32 C ++程序并将可执行文件复制到名为C:\ mahout \ bin \ mahout的文件中(没错-没有.exe后缀,如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)创建脚本\ mahout \ bin \ mahout.bat并粘贴以下内容,尽管_CP类路径中jar的确切名称将取决于spark和mahout的版本。根据您的安装更新所有路径。使用8.3路径名,其中不带空格。请注意,您不能在此处的类路径中使用通配符/星号。

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"

变量MAHOUT_CP的名称不应更改,因为它在C ++代码中已引用。

当然,您可以注释掉启动Spark主服务器和辅助服务器的代码,因为Mahout将根据需要运行Spark。我只是将其放在批处理作业中,向您展示了如何在不使用Mahout的情况下使用Spark来启动它。

(5)以下教程是一个不错的起点:

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

您可以在以下位置启动Mahout Spark实例:

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


1

以下是在Windows 10上安装spark并从python运行它的七个步骤:

步骤1:从此链接https://spark.apache.org/downloads.html将spark 2.2.0 tar(tape存档)gz文件下载到任何文件夹F中。将其解压缩,然后将解压缩的文件夹复制到所需的文件夹A。将spark-2.2.0-bin-hadoop2.7文件夹重命名为spark。

设置spark文件夹的路径为C:\ Users \ Desktop \ A \ spark

步骤2:从此链接将Hardoop 2.7.3 tar gz文件下载到同一文件夹F- https ://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.3/hadoop-2.7 .3.tar.gz。将其解压缩,然后将解压缩的文件夹复制到同一文件夹A。将文件夹名称从Hadoop-2.7.3.tar重命名为hadoop。设置hadoop文件夹的路径为C:\ Users \ Desktop \ A \ hadoop

步骤3:创建一个新的记事本文本文件。将此空的记事本文件另存为winutils.exe(另存为:所有文件)。将此O KB winutils.exe文件复制到spark中的bin文件夹-C:\ Users \ Desktop \ A \ spark \ bin

步骤4:现在,我们必须将这些文件夹添加到系统环境中。

4a:创建系统变量(不是用户变量,因为用户变量将继承系统变量的所有属性)变量名称:SPARK_HOME变量值:C:\ Users \ Desktop \ A \ spark

查找路径系统变量,然后单击编辑。您将看到多个路径。不要删除任何路径。添加此变量值-; C:\ Users \ Desktop \ A \ spark \ bin

4b:创建系统变量

变量名称:HADOOP_HOME变量值:C:\ Users \ Desktop \ A \ hadoop

查找路径系统变量,然后单击编辑。添加此变量值-; C:\ Users \ Desktop \ A \ hadoop \ bin

4c:创建系统变量变量名称:JAVA_HOME在Windows中搜索Java。右键单击,然后单击打开文件位置。您将不得不再次右键单击任意一个Java文件,然后单击打开的文件位置。您将使用此文件夹的路径。或者,您可以搜索C:\ Program Files \ Java。我安装在系统上的Java版本是jre1.8.0_131。变量值:C:\ Program Files \ Java \ jre1.8.0_131 \ bin

查找路径系统变量,然后单击编辑。添加此变量值-; C:\ Program Files \ Java \ jre1.8.0_131 \ bin

步骤5:打开命令提示符,然后转到您的Spark Bin文件夹(键入cd C:\ Users \ Desktop \ A \ spark \ bin)。键入spark-shell。

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

这可能需要一些时间并给出一些警告。最后,它将显示欢迎使用Spark版本2.2.0

步骤6:键入exit()或重新启动命令提示符,然后再次进入spark bin文件夹。输入pyspark:

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

它会显示一些警告和错误,但会忽略。有用。

步骤7:下载完成。如果要直接从python shell运行spark,则:转到python文件夹中的Script并键入

pip install findspark

在命令提示符下。

在python shell中

import findspark
findspark.init()

导入必要的模块

from pyspark import SparkContext
from pyspark import SparkConf

如果您想跳过导入findspark并对其进行初始化的步骤,请按照在python shell导入pyspark中给出的步骤进行操作


0

这是可以从任何python控制台运行的简单的最小脚本。假定您已将下载的Spark库提取到C:\ Apache \ spark-1.6.1。

这可以在Windows中工作,而无需构建任何内容,并解决了Spark会抱怨递归酸洗的问题。

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()

0

Cloudera和Hortonworks是在Microsoft Windows中启动HDFS的最佳工具。您还可以使用VMWare或VBox来启动虚拟机,以使用Scala,R,Java,Python建立HDFS和Spark,Hive,HBase,Pig,Hadoop的构建。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.