如何在windows下配置spark环境

1.的安装。JDK和环境变量的设置

安装1.1 JDK

JDK的安装(全称是JavaTM平台标准版开发工具包),下载地址是Java SE Downloads。一般进入页面后会默认显示JDK的最新版本,如下图,最新版本是JDK 8,更详细的地址是Java SE开发工具包8下载:

上图红色标注的两个地方可以点击。点进去之后,可以看到这个最新版本的一些更详细的信息,如下图所示:

首先有两个版本,8u101和8u102。Java给出的官方解释是:

" Java SE 8u101包括重要的安全修复程序。Oracle强烈建议所有Java SE 8用户升级到此版本。Java SE 8u65 438+002是一个修补程序集更新,包括所有8u101以及附加功能(在发行说明中进行了描述)。”

也就是说,Java推荐所有开发者从之前的版本升级到JDK 8u101,而JDK 8u102除了101还有一些其他的特性。对于版本的选择,自己选就好了。其实对于普通开发者来说,并没有太大的区别。这里我用的是JDK 8u101版本。

选择8u101版本,然后选择你对应的开发平台。因为我的机器是64位的,所以我这里选择64位版本的Windows64。请记住,在下载之前,您必须接受上面的许可协议,在上图中用红色圈出。

除了下载JDK的最新版本,你还可以从Oracle Java Archive下载到JDK的版本历史中,但是官方建议只用于测试。

JDK在windows下的安装非常简单。按照正常的软件安装思路双击下载的exe文件,然后设置自己的安装目录(设置环境变量时需要)。

1.2环境变量的设置

接下来,设置相应的环境变量。设置方法如下:在桌面上右键点击电脑-属性-高级系统设置,然后在系统属性中选择高级-环境变量,然后在系统变量中找到“Path”变量,选择“编辑”按钮,打开一个对话框,在这里可以添加上一步安装的JDK目录下bin文件夹的路径名。我在这里的bin文件夹路径名是:f:。program files \ Java \ JDK 1 . 8 . 0 _ 101 \ bin,所以把这个加到路径名里,注意分号“;”用英语。为了分割。经过这种设置,它可以运行在cmd命令行窗口下打开的任何目录。

java版本11

观察是否可以输出相关的java版本信息。如果可以,就意味着JDK的安装步骤全部结束了。

整个过程如下图所示(后续软件安装的系统变量设置就是这个过程):

1.3一些题外话

这里有两个题外话。如果不介意,可以在不影响后续安装步骤的情况下跳过这里。

在安装软件的时候,相信你遇到过很多环境变量和系统变量,那么我们就来看看PATH、CLASSPATH、JAVA_HOME这些比较麻烦的参数的具体含义。

1.3.1环境变量、系统变量和用户变量

环境变量包括系统变量和用户变量。

系统变量的设置适用于操作系统下的所有用户;

用户变量的设置只对当前用户有效。

如果你对这些概念不是特别熟悉,我建议先看下面几点,再回头看这三句话。

1.3.2路径

也就是说,上一步中设置的系统变量告诉操作系统在哪里可以找到Java.exe的执行路径。当您突然在命令行窗口中键入以下命令时,

java版本11

操作系统一开始会很惊讶,“java”到底是什么意思?但是吐槽归吐槽,工作还是要做的,于是我想起了盖茨父亲说过的三句话:

当您无法理解命令行窗口中的命令时,您应该首先查看当前目录,看看是否有。exe程序来执行此命令。如果有,用它开始执行;

如果没有,不要放弃。记得在Path系统变量下的那些目录中查找。如果找到了,启动并执行该命令。

如果你还是没有找到以上两个地方,那么你就可以出错举报了。

所以在Path系统变量中加入JDK安装目录下的bin文件夹的目的就在这里,告诉操作系统,如果在当前目录下找不到java.exe,就去Path系统变量中的那些路径,一个一个的找,直到找到java.exe。那为什么要设置bin文件夹而不是JDK安装的根目录呢?原因是根目录下没有java.exe,只有bin文件夹。

如果只是在命令行窗口中运行java命令,不需要设置系统变量,但是每次在命令行窗口中运行java命令,都必须带一长串路径名来直接指定java.exe的位置,如下图。

c:\ Users \ weizi erxu & gt;f:\ Program Files \ Java \ JDK 1 . 8 . 0 _ 101 \ bin \ Java . exe-version

' F:\Program '不是内部或外部命令,也不是可运行的程序。

或者批处理文件。123123

注意:这里的错误原因不是直接指定java.exe的路径名有问题,而是带空格的路径名无法在命令行解析,所以需要双引号,如下:

c:\ Users \ weizi erxu & gt;" F:\ Program Files " \ Java \ JDK 1 . 8 . 0 _ 101 \ bin \ Java . exe-版本

java版本" 1.8.0_101 "

Java(TM) SE运行时环境(内部版本1 . 8 . 0 _ 101-b 13)

Java HotSpot(TM) 64位服务器虚拟机(内部版本号25.101-b13,混合模式)12341234

1.3.3类路径

类路径是当Java执行一个编译好的类文件时,它告诉Java在哪些目录下可以找到这个类文件。例如,如果你的程序中使用了一个Jar包(所有的Jar包都是编译好的类文件),那么Java在执行时就需要找到这个Jar包。我能在哪里找到它?在由CLASSPATH指定的目录中,从左到右(用分号分隔的路径名)搜索,直到找到具有指定名称的类文件。如果找不到,就会报错。在这里做个实验,你就明白是什么意思了。

首先我在F:\Program Files\java目录下写了一个类似Hello World的程序,保存为testClassPath.java文件(注意后缀要改成java)。内容如下:

公共类testClassPath{

公共静态void main(String[] args){

System.out.println("您好,这是对类路径的测试!");

}

}1234512345

然后,我将cmd的当前目录切换到F:\Program Files\java目录(通过cd命令),然后使用javac命令对此进行编译。Java文件,如下图所示:

从上图可以看出,javac命令可以正常使用(如果没有输出,说明已经编译正确),因为执行这个命令的javac也存在于JDK安装路径下的bin目录中,并且这个目录已经添加到Path系统变量中,所以cmd可以识别这个命令。此时可以看到F:\Program Files\Java目录下多了一个testClassPath.class文件。然而,当运行这个类文件时,报告了一个错误。这时候CLASSPATH就派上用场了,就像1.2节设置PATH系统变量的方法一样。在这里,它被添加到类路径的末尾(如果系统变量列表中没有类路径选项,请单击New,然后添加路径)。。,英文的分号表示与前面的已有路径分开,后面的点表示当前目录的意思。

这时记得打开一个新的cmd窗口,然后用cd命令切换到testClassPath.class的目录,然后执行,就可以成功得到结果了。

f:\ Program Files \ Java & gt;java测试类路径

你好,这是对类路径的测试!1212

因此,与Path变量不同,Java执行一个类文件时,默认情况下不会从当前目录中找到该文件,而只会从CLASSPATH指定的目录中找到。如果CLASSPATH指定的目录中存在该类文件,将执行该类文件,如果不存在,将报告错误(有一种方法可以在当前目录中找到该类文件,因为当前路径已经添加到CLASSPATH系统变量中)。

以上指定CLASSPATH系统变量的方法都是直接写在系统变量中,为了避免干扰(比如多个同名的类文件存在于多个路径中,这些路径都添加到CLASSPATH系统变量中,因为在查找类文件时,CLASSPATH系统变量中的路径是从左到右扫描的。所以在使用java testClassPath方法时,对应的类文件运行在ClassPath系统变量中最左边的路径中,这显然不是我们想要的结果。因此,在Eclipse等IDE中,不需要手动设置CLASSPATH系统变量,只需设置当前程序的具体CLASSPATH系统变量,其他程序的运行就不会受到影响。

1.3.4 JAVA_HOME

JAVA_HOME不是JAVA本身需要的参数,其他一些第三方工具需要这个参数来配置自己的参数。它的意义无非是告诉那些软件,我的JDK安装在这个目录里。如果你想用我的Java程序,直接在我的目录里找就行了,JAVA_HOME是JDK的安装路径名。比如我的JDK安装在目录F:\ Program Files \ Java \ JDK 1 . 8 . 0 _ 101(注意这个目录下的bin目录是1.3.2节Path系统变量中要添加的值),那么JAVA_HOME中要添加的值,Java \ JDK 1 . 8 . 0 _ 101,以后遇到类似HOME的系统变量,都是软件的安装目录。

二。Scala的安装

首先,从下载以前的版本中下载相应的版本。这里需要注意的是,Spark的每个版本都需要对应Scala的相应版本。比如我这里用的Spark 1.6.2,只能用Scala 2.10的各个版本。目前最新的Spark 2.0只能使用Scala 2.11的所有版本,所以下载的时候需要注意这个Scala版本和Spark版本的对应关系。我这里用的是Scala 2.10.6,适用于Spark从1.3.0到Spark 1.6.2的所有版本。在版本页面下载以前的版本中选择了适合自己需求的版本后,就会进入该版本的具体下载页面,如下图所示。记得下载Scala的二进制版本,点击图中箭头下载。

下载Scala的msi文件后,可以双击执行安装。安装成功后,默认会将scala的bin目录添加到PATH系统变量中(如果没有,类似JDK安装步骤,将Scala安装目录下的bin目录路径添加到系统变量PATH中)。为了验证安装是否成功,打开一个新的cmd窗口,输入Scala并按回车键。如果能正常进入Scala的交互命令环境,安装成功。如下图所示:

如果无法显示版本信息,无法访问Scala的交互式命令行,通常有两种可能:

无法在-Path系统变量中正确添加Scala安装目录中bin文件夹的路径名。按照JDK安装中介绍的方法添加即可。

-Scala未能正确安装,重复上述步骤即可。

三。火花的安装

Spark的安装很简单,直接去下载Apache Spark。有两个步骤:

选择Hadoop版本对应的Spark版本,如下图所示;

然后点击下图箭头指示的spark-1 . 6 . 2-bin-Hadoop 2.6 . tgz,等待下载完成。

这里用的是预建版本,意思是已经编译好了,直接下载使用即可。Spark也有源代码可以下载,但是需要手动编译后才能使用。下载后解压文件(可能需要两次解压),最好解压到一个磁盘的根目录下,重命名为Spark,这样简单,不容易出错。而且需要注意的是,Spark的文件目录的路径名中不能有空格,不允许有类似“程序文件”的文件夹名。

解压后基本可以在cmd命令行下运行了。但此时每次运行spark-shell(spark的命令行交互窗口)都需要先将光盘下载到spark的安装目录下,比较麻烦,所以可以将spark的bin目录添加到系统变量PATH中。比如这里Spark的bin的目录路径是D:\Spark\bin,那么只需要将这个路径名添加到系统变量的路径中即可,方法与JDK安装过程中环境变量的设置一致。设置好系统变量后,在任意目录下直接执行cmd命令行中的spark-shell命令,打开spark的交互命令行模式。

4.。HADOOP下载

设置好系统变量后,可以在当前任意目录下运行cmd中的spark-shell,但此时很可能会遇到各种错误,主要是因为spark是基于Hadoop的,所以这里需要配置一个Hadoop运行环境。Hadoop的版本历史可以在Hadoop版本中看到。由于下载的Spark是基于Hadoop 2.6的(在Spark安装的第一步,我们选择了针对Hadoop 2.6的预建),我这里选择的是2.6.4版本,选择对应的版本点击进入详细的下载页面。如下图所示,选择图中红色标记下载,上面的src版本为源代码。如果需要改Hadoop或者想自己编译,可以下载相应的src文件。我这里下载的是编译版,也就是图中的‘Hadoop-2 . 6 . 4 . tar . gz’文件。

下载并解压到指定目录,然后在环境变量部分设置HADOOP_HOME为HADOOP的解压目录,这里是F:\Program Files\hadoop,然后将这个目录下的bin目录设置为系统变量的路径,这里是F:\Program Files\hadoop\bin。如果已经添加了HADOOP_HOME系统变量,也可以使用%HADOOP_HOME%\bin来指定它。设置完这两个系统变量后,打开一个新的cmd,然后直接输入spark-shell命令。

一般情况下可以成功运行,进入Spark的命令行环境,但是部分用户可能会遇到空指针的错误。这时候主要是因为Hadoop的bin目录下没有winutils.exe文件。这里的解决方案是:

-去/steveloughran/winutils选择你安装的Hadoop版本号,然后进入bin目录找到winutils.exe文件。下载方法是点击winutils.exe文件。进入后,页面右上方有一个下载按钮,点击下载。

-下载完winutils.exe后,把这个文件放在Hadoop的bin目录下,这个目录是F:\Program Files\hadoop\bin。

-在打开的cmd中输入。

f:\ Program Files \ Hadoop \ bin \ winutils . exe chmod 777/tmp/Hive

该操作用于修改权限。注意,前面的F:\Program Files\hadoop\bin部分应该替换为您实际安装的bin目录的位置。

完成这些步骤后,再打开一个新的cmd窗口。如果正常的话,直接输入spark-shell应该就能运行Spark了。

正常操作界面应该如下图所示:

从图中可以看出,直接输入spark-shell命令后,spark开始启动并输出一些日志信息,大部分可以忽略。应该注意的是,有两句话:

Spark上下文作为sc提供。

SQL上下文作为sqlContext.1212提供

什么是Spark上下文和SQL上下文?我们稍后会谈到它们。现在我们只需要记住,Spark真正启动成功是在看到这两种说法之后。

动词 (verb的缩写)Python下的PySpark

对于Python下的spark,类似于Scala下的spark-shell,也有一个PySpark,也是一个交互式命令行工具,可以用来对Spark进行一些简单的调试和测试,类似于spark-shell。对于需要安装Python的人,这里推荐使用Python(x,y)。它的优点是集成了大部分工具包,不需要单独下载,直接导入即可使用,也省去了繁琐的环境变量配置。下载地址是Python(x,y)-Downloads。下载后双击运行安装。因为本教程主要基于Scala,所以我不会过多解释Python。

不及物动词摘要

至此,基本的Spark本地调试环境已经具备,对于初步的Spark学习已经足够。但是这种模式在实际的Spark开发中还是不够的,需要一个相对易用的IDE来辅助开发过程。下一讲主要讲解ItelliJ IDEA和Maven的配置过程。