
2.1 Spark的简易安装
搭建Spark之前需要读者先安装好Hadoop,由于这个环境用于本书学习,这里建议部署单机或者伪分布式的Hadoop。另外,关于Hadoop的安装这里不予以介绍,大家可自行搜集Hadoop安装教程,确保HDFS能正常使用即可。Spark 2.2.0官网中明确表明了:Spark 2.2.0不支持Java 7、Python 2.6以及Hadoop 2.6.5之前的版本。笔者使用的系统是CentOS 7、Java 8、Hadoop 2.7.3,这里配的Spark是单机模式。
下载Spark安装包。
进入Spark的下载页面https://spark.apache.org/downloads.html,如图2-1所示。

图2-1
按图片上的指示将安装包下载解压到你喜欢的地方即可。
编辑解压之后的Spark文件夹中的conf文件夹下的spark-env.sh和slaves文件。
什么?没有这两个文件?别担心,看到conf文件夹下的spark-env.sh.template、slaves.template这两个文件了吗?这是模板文件,我们将其复制并改名即可,参考如下命令:

然后编辑spark-env.sh文件,如图2-2所示。


图2-2
为什么要配置SPARK_DIST_CLASSPATH这个变量呢?
因为我们刚刚选择的Spark版本是Hadoop Free版本,Spark使用Hadoop的HDFS和YARN库。Spark自从1.4版本之后就允许我们将Spark和任意版本的Hadoop连接起来(虽说是任意版本但Spark对Hadoop版本还是有一定要求的。比如Spark 2.2.0官方文档的overview中有这么一句话:Note that support for Java 7, Python 2.6 and old Hadoop versions before 2.6.5 were removed as of Spark 2.2.0),但是需要我们配置SPARK_DIST_CLASSPATH这个变量。详情请看图2-3。

图2-3
编辑slaves文件:

在末尾加上本机的IP,比如127.0.0.1。
启动Spark,运行spark-shell。
运行spark根目录下sbin文件夹中的start-all.sh,如图2-4所示。

图2-4
运行firefox localhost:8080 &命令即可查看Web UI(不同端口的Web UI作用不一样),如图2-5、图2-6所示。(建议读者们多了解一下Web UI)

图2-5

图2-6
这时如果在终端中进入spark-shell运行则会报错,因为需要先启动Hadoop的HDFS再启动spark-shell。启动完HDFS之后,我们来运行一下spark-shell。
图2-6是Spark Shell的启动界面。我们成功地进入了spark-shell,注意红方框的内容。
(1)此时4040端口的Web UI(localhost:4040)可以访问了(Spark Shell运行时和Spark作业运行时该UI才能正常访问),读者可以去看看,熟悉一下Web UI的界面。
(2)spark-shell启动的时候会自动创建SparkContext以及SparkSession的实例,变量名分别为sc和spark,可以在spark-shell中直接使用。
输入“:help”可以查看spark-shell的命令帮助,如图2-7所示。

图2-7
输入“:quit”可以退出spark-shell。
建议多在spark-shell中练习。
运行SparkPI实例程序,验证Spark是否能正常运行(见图2-8)。


图2-8
在输出日志的底部可以看到运行的结果,如图2-9所示。

图2-9
至此,Spark的简易搭建就完成了。