Spark MLlib机器学习实践(第2版)
上QQ阅读APP看书,第一时间看更新

2.1 Windows单机模式Spark安装和配置

Windows系统是最常见的操作系统,本节将讲解如何在Windows系统中下载使用Spark单机模式。

2.1.1 Windows 7安装Java

MLlib是Spark大数据处理框架中的一个重要组件,其广泛应用于各类数据的分析和处理。Scala是一种基于JVM的函数式编程语言,而Spark是借助于JVM运行的一个数据处理框架,因此其使用首选安装Java。

步骤01 首先从Java地址下载安装Java安装程序,地址如下:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

单击JavaDownLoad,进入下载页面。本书在编写时Java 8已经放出,这里推荐读者全新安装时使用Java 8,如图2-1所示。

图2-1 Java安装选项

步骤02 此时单击Accept License Agreement按钮,之后按需求选择Java的版本号。本例中为了统一安装,这里全部选择32位Java安装文件进行下载,如图2-2所示。

图2-2 下载Java

提示

这里需要注意的是,为了统一安装后续的其他语言,统一采用32位的安装模式。

步骤03 双击下载后的文件,在默认路径安装Java,如图2-3所示,此时静待安装结束即可。

图2-3 Java安装过程

步骤04 安装结束后需要对环境变量进行配置,首先右击“我的电脑”|“属性”选项,在弹出的对话框中单击“高级系统设置”选项,然后选中“高级”标签。单击“环境变量”按钮,在当前用户名下新建JAVA_HOME安装路径,即前面jdk安装所在路径,如图2-4所示。

图2-4 设置环境变量:JAVA_HOME

步骤05 PATH用于设置编译器和解释器路径,在设置好JAVA_HOME后,需要对PATH设置以便能在任何目录下使用,如图2-5所示。

图2-5 设置环境变量:PATH

步骤06 最后再对CLASSPATH进行配置,此时需要注意的是,路径方框中一定要在开头加上“.;”(不包括引号),如图2-6所示。

图2-6 设置CLASSPATH路径

步骤07 单击Windows 7开始菜单,在附件里面找到运行,输入cmd命令,如图2-7所示。

图2-7 输入CMD运行命令

步骤08 输入命令后打开控制台界面,在打开的界面中输入java,如图2-8所示。

图2-8 输入java运行命令

步骤09 运行后出现如图2-9所示的界面,说明Java已经配置好了!电脑可以运行Java程序了。

图2-9 配置结果

2.1.2 Windows 7安装Scala

步骤01 Scala的安装比较容易,直接下载相应的编译软件,下载之后双击程序直接安装即可,Scala会在安装过程中自行设置。我们需要下载的版本是Scala2.10.3,下载地址:http://www.scala-lang.org

步骤02 打开Scala网站首页,如图2-10所示。

图2-10 Scala网站首页

步骤03 单击DOWNLOAD按钮,进入下载界面,单击如图2-11所示黑圈处的链接。

图2-11 Scala下载页面

步骤04 根据日期的不同,在首页默认下载的Scala版本也不尽相同,这里本文笔者选用的是2.10.3版本,单击图2-12中ALL download按钮进入版本选择页面,如图2-12所示:

图2-12 Scala版本选择

提示

这里需要注意的是,目前Scala最新版本为2.12,但是为了更好地与Spark兼容,笔者在这里推荐使用2.10.3稳定版。

步骤05 单击图2-12中画横线的按钮进入Scala2.10.3版本的下载页面,如图2-13所示:等待程序下载完成后,双击进行程序安装。

图2-13 Scala2.10.3下载页面

步骤06 与Java安装时类似,安装结束后对环境变量进行配置,首先右击“我的电脑”|“属性”菜单,打开“系统属性”对话框。单击“高级系统设置”选项。之后选中“高级”标签。单击“环境变量”按钮。在当前用户名下新建SCALA-HOME安装路径,即前面Scala安装所在路径,如图2-14所示。

图2-14 SCALA-HOME环境变量设置

步骤07 设置path变量:找到系统变量下的“path”项,单击编辑。在“变量值”一栏的最前面添加如下的“ %scala_Home%\bin;%scala_Home%\jre\bin; ”注意后面的分号“;”不要漏掉。

步骤08 设置classpath变量:找到系统变量下的“ClassPath”如图2-15所示,单击编辑,如没有,则单击“新建”按钮,打开“新建系统变量”窗口,设置“变量名”为ClassPath,“变量值”为.;%scala_Home%\bin;%scala_Home%\lib\dt.jar;%scala_Home%\lib\tools.jar.;。

图2-15 ClassPath环境变量设置

提示

“变量值”最前面的.;不要漏掉。最后单击“确定”按钮即可。

步骤09 跟前面运行Java命令一样,还是通过在“运行”对话框输入cmd命令打开命令控制台。

输入scala,显示如图2-16所示,可以认为scala安装完毕。

图2-16 输入scala运行结果

2.1.3 Intellij IDEA下载和安装

Intellij IDEA是常用的Java编译器,也可以用它作为Spark单机版的调试器。Intellij IDEA有社区免费版和付费版,这里只需要使用免费版即可。

Intellij IDEA下载地址为:http://www.jetbrains.com/idea/download/,如图2-17所示,选择右侧社区免费版下载即可。

图2-17 Intellij IDEA安装选择右侧社区免费版

双击下载下来的Intellij IDEA,会自动进行安装,这里基本没有什么需要特别注意的事项,读者如果安装过程中碰到问题,可以自行百度解决。

2.1.4 Intellij IDEA中Scala插件的安装

Scala是一种把面向对象和函数式编程理念加入到静态类型语言中的语言,可以把Scala应用在很大范围的编程任务上,无论是小脚本或是大系统都可以用Scala实现。Scala运行在标准的Java平台上(JVM),可以与所有的Java库实现无缝交互。

而SparkMLlib是基于Java平台的大数据处理框架,因此在语言的选择上,可以自由选择最方便的语言进行编译处理。而Scala天生具有的简洁性和性能上的优势,以及可以在JVM上直接使用的特点,使其成为Spark官方推荐的首选程序语言,因此本书笔者也推荐使用Scala语言作为SparkMLlib学习的首选语言。

Intellij IDEA本身并没有安装Scala编译插件,因此在使用Intellij IDEA编译Scala语言编写的Spark MLlib语言之前,需要安装Scala编译插件,其安装步骤如下:

步骤01 在桌面上找到已安装的Intellij IDEA图标,双击打开后请等待读取界面结束(如图2-18所示)。由于Intellij IDEA是首次使用,之后会进入创建工程选项,如图2-19所示。

图2-18 Intellij IDEA读取界面

图2-19 Intellij IDEA首次使用界面

步骤02 因为需要使用的是Scala语言编译程序,这里建议读者先选择新建工程,验证是否可以使用Scala创建工程,如图2-20所示。

图2-20 创新新工程页面

步骤03 从图2-20可以看到,其中并没有可以建立Scala工程的选项。即,如果需要使用Scala,Intellij IDEA需要进一步配置相应的开发组件。因此在这一步,单击Cancel按钮,之后选择Configure选项,然后选择Plugins进入插件的选择,单击左下角的“Install Intellij Plugins...”,出现如图2-21所示的界面,上面显示了当前可以安装的插件。

图2-21 查找插件

步骤04 此时如果显示的插件过多,可以在Search文本框中键入Scala搜索相应的Scala插件,如图2-22所示。

图2-22 查找Scala插件

步骤05 当找到Scala插件后,单击右侧的“install plugin”绿色按钮,等待一段时间,即可完成安装,如图2-23所示。

图2-23 安装Scala插件

步骤06 当安装完毕后,可以看到,在“new project”选项下有一项新的项目即为“Scala”,如图2-24所示。单击项目,可以创建相关程序,至此Intellij IDEA的Scala插件安装完毕。

图2-24 安装Scala插件后的页面

2.1.5 HelloJava——使用Intellij IDEA创建Java程序

激动人心的时刻开始了,如果读者看到这里,表明你已经成功安装好了Java、Scala以及通用编译器Intellij IDEA。那么祝贺你,你迈入了称为一个合格程序员的第一步,下面将带领读者正式使用Intellij IDEA创建Java与Scala的HelloWorld小程序。

步骤01 单击桌面上的Intellij IDEA标记,打开Intellij IDEA软件,这里建议读者先选择新建工程,单击新建工程后界面如图2-25所示。

图2-25 创建新工程页面

步骤02 这里笔者首先创建的是Java程序,因此可以在弹出的如图2-25所示的窗口中进行选择,左侧选择Java选项,右侧选择Kotlin(Java)选项。

提示

最上方的SDK选项为空,因此需要在下一步之前进行设定,SDK是Java语言的编译开发工具包,需要设定安装的JDK的地址。在这里填写2.1.1节中安装Java时使用的地址。

步骤03 单击Project SDK右侧的New…按钮(如图2-25所示窗口右上方),在弹出的对话框中选择JDK按钮,选定Java JDK安装目录,结果如图2-26所示。

图2-26 SDK选择界面

从图2-27右侧的圈注可以看到IDE以及自动认出了Java的版本号,可以使用Intellij IDEA创建一个Java程序。

图2-27 SDK选择界面

步骤04 单击Next按钮后给创建的文件起一个好名字(如图2-28所示),然后单击Finish按钮,即可创建程序文件。

图2-28 文件名创建界面

步骤05 在弹出的界面上,右击左侧的src(源码),之后单击New|Java Class菜单,如图2-29所示。

图2-29 创建一个Java新程序

在打开的对话框中填写名称HelloJava,如图2-30所示,单击OK按钮后,创建了一个新的Java程序。

图2-30 创建一个Java新程序

步骤06 此时,在弹出的界面右侧补充代码,如程序2-1所示:

代码位置://SRC//C02// HelloJava.java

程序2-1

        public class HelloJava {
            public static void main(String[] args){
              System.out.print("helloJava");
            }
        }

最终打印结果如图2-31所示。

图2-31 运行效果

这里是使用Java语言创建了一个新的Java Class文件,用于对程序进行编写与编译。虽然在后续的学习中,Java语言并不是作为本书Spark的主要程序设计语言,但是对于Spark来说,Java语言仍旧是一个非常重要的语言基础,有无可替代的作用。

2.1.6 HelloScala——使用Intellij IDEA创建Scala程序

如果在上一小节中读者成功地运行Intellij IDEA并成功地获得了HelloJava代码执行结果,那么恭喜你,你已经配置好了Intellij IDEA编译器并调试其正常使用了。本节中将继续使用这个编译器编译Scala程序,这也是本书的一个重要基础内容。

步骤01 单击IDE主界面上File标签,新建一个工程,如图2-32所示。

图2-32 新建的一个工程页面

步骤02 之后会进入工作界面,在这里有两种方式可以新建一个Scala程序,笔者推荐使用第二种方式,即图2-33所示的左边框图中的Scala选项和右边主图中Scala程序。

图2-33 创建Scala新工程页面

步骤03 最后单击Finish后会进入存放地点设置和Scala编译器设置页面,这里选择输入2.1.2节中安装的Scala目录地址,如图2-34所示。

图2-34 创建Scala新工程页面

单击Brown按钮后可以查找已安装的Scala的SDK,这里笔者已经带领读者在2.1.2节中安装过Scala,因此直接选择查找已安装的SDK即可。或者有需要的话可以直接单击DownLoad按钮下载不同版本的Scala语言。

最终查找结果如图2-35所示。

图2-35 查找结果

可以看到,这里使用了2个编译器,分别是Java和Scala的SDK,因为对于Scala来说,其实质也是运行在Java虚拟机上的一种编译语言,需要获得JDK的支持。

提示

Scala文件夹的位置最好不要与2.1.5节中Java文件存放的位置相同,以免在编译时产生错误。单击Finish按钮后静待IDEA完成后续的创建工作。

步骤04 右击左侧列表中的src列表项来新建文件,但是需要注意,这里是新建一个Scala Class文件,如图2-36所示。

图2-36 创建Scala新文件页面

在弹出的对话框中输入Scala文件名(如图2-37所示),单击OK按钮即可创建一个空的Scala程序。

图2-37 创建新的Scala程序

这里需要注意的是,如图2-37中的圈注所示,类型选择必须为Object而非Class,这点和Java程序有非常大的不同,请读者一定注意。

代码位置://SRC//C02// helloScala.scala

程序2-2

        class helloScala {
          def main(args: Array[String]): Unit = {
            print("helloScala")
          }
        }

步骤05 与Java编译时类似,右击文件名,选择“Run代码段”,如图2-38所示。

图2-38 运行Scala代码

最终运行结果如图2-39所示。

图2-39 运行效果

2.1.7 最后一脚——Spark单机版安装

读者走到这一步是非常艰难的,但是相信已经有取得成功后获得的喜悦。先不要急着庆祝,相信我,我们离最后的胜利已经不远了。

本小节中,笔者将带领大家进行最激动人心的时刻,即Spark的安装和学习,但是请稍等,对于目前的我们来说,最重要的是学会Spark的安装方法。

可能你会被网上那么多的安装步骤所吓坏,但是本书笔者为了给读者营造一个便捷的学习环境,利用Spark的特性通过读者常用的Windows 7系统模拟一个Spark运行环境,从而使得学习Spark MLLib更加方便简单。

步骤01 Spark单机版安装首先需要下载Spark预编译版本,Spark的网站地址为:http://spark.apache.org/。进入后单击左边标签的选项进入下载页面,如图2-40所示。

图2-40 Scala下载页面

步骤02 这里是选择Spark的下载版本,因为笔者将在Windows 7上虚拟出一个Spark的运行环境,因此笔者建议读者下载安装Spark的预编译版本。从图2-40上可以看到,这里笔者选用的是经典的1.3版本的文件,可能读者在使用本书时有更新的文件可供下载,这里笔者推荐使用的是1.3版本稳定版,如图2-41所示。

图2-41 选择Scala下载版本

步骤03 下载下来的文件是tar格式的压缩文件。可能有读者使用Linux学习过初步的Spark知识,但是单机版本的Spark与Linux不同在于,此时下载的tgz文件不要安装,可以直接使用Winrar软件解压打开。

找到压缩包中文件位置spark-1.3.0-bin-hadoop2.4.tgz\spark-1.3.0-bin-hadoop2.4\lib,找到并拷贝spark-assembly-1.3.0-hadoop2.4.0.jar文件,这个是Spark的核心文件,也是其运行和计算的主体,如图2-42所示。

图2-42 下载的Spark预编译

步骤04 单独的jar文件不能使用,因此需要将找到的spark-assembly-1.3.0-hadoop2.4.0复制导入到Intellij IDEA安装目录下的lib供程序使用。

单击Intellij IDEA菜单栏上File选项,选择Project Strcture,在弹出的对话框中单击左侧的Libraries,之后单击中部上方绿色+号,选择Java文件,添加刚才下载的jar包文件,如图2-43所示。

图2-43 准备添加jar包文件

步骤05 添加后的Lib文件框如图2-44所示。

图2-44 添加jar文件后的Lib文件库

返回主界面,打开左边工程栏下的工程扩展文件库,也可以看到Saprk核心文件已经被安装,如图2-45所示。

图2-45 主界面工程栏下添加jar文件后的Lib文件库