发布日期:2023-06-09 VIP内容

在Windows上安装Apache Spark

本教程讲解了如何在Windows操作系统上安装Apache Spark。还将解释如何启动历史服务器并使用Web UI监视作业。

1. 安装 Java 8+

要在Windows操作系统上安装Apache Spark,需要Java 8或最新版本,因此从Oracle下载Java版本并将其安装在Windows系统上。

下载后,双击下载的.exe (例如,jdk-8u201-windows-x64.exe)文件,以便将其安装在windows系统上。选择任意自定义目录或保留默认位置。

注意:本教程在Java 8上安装Apache Spark,同样的步骤也适用于Java 11和Java 13版本。

2. 安装 Apache Spark

Apache Spark是以tar/zip压缩文件的形式出现的,因此在Windows系统上安装并不太麻烦,只需要下载并解压缩该文件即可。

通过访问Spark下载页面下载Apache Spark,默认为最新版本的Spark。 如果想使用不同版本的Spark和Hadoop,请从下拉框中选择自己想要的版本。随着您的选择,列表项3上的链接也随之更改为所选版本,并提供更新后的下载链接。 点击列表项3对应的下载链接下载,如下图所示:

下载后,使用任何zip工具解压缩二进制文件,并将解压缩后的目录spark-3.4.0-bin-hadoop3复制到c:\apps\opt\spark-3.4.0-bin-hadoop3

3. 配置Spark环境变量

Windows环境下安装Java和Apache Spark后,需要设置JAVA_HOME、SPARK_HOME、HADOOP_HOME和PATH环境变量。环境变量内容如下:

JAVA_HOME = C:\Program Files\Java\jdk1.8.0_201
PATH = %PATH%;%JAVA_HOME%\bin

SPARK_HOME  = C:\apps\opt\spark-3.4.0-bin-hadoop3
HADOOP_HOME = C:\apps\opt\spark-3.4.0-bin-hadoop3
PATH=%PATH%;%SPARK_HOME%\bin;%HADOOP_HOME%\bin

4. 在Windows上使用winutils.exe

许多初学者认为Apache Spark需要安装Hadoop集群才能运行,但事实并非如此,Spark可以通过使用S3在AWS上运行,通过使用blob存储(不需要Hadoop和HDFS)在Azure上运行。

要在Windows上运行Apache Spark,需要winutils.exe,因为它使用Windows API在Windows中使用POSIX类似的文件访问操作。

winutils.exe使Spark能够使用Windows特定的服务,包括在Windows环境中运行shell命令。

下载winutils.exe用于Hadoop 3,并将其复制到%SPARK_HOME%\bin文件夹。 Winutils对于每个Hadoop版本都是不同的,因此请根据自己的Spark vs Hadoop发行版从https://github.com/steveloughran/winutils下载正确的版本。

5. Spark shell

spark-shell是Apache Spark发行版自带的CLI命令行工具。打开命令提示符,执行cd %SPARK_HOME%/bin目录,输入spark-shell命令运行Apache Spark shell。应该看到如下所示的内容(忽略最后看到的错误)。有时,Spark实例初始化可能需要一到两分钟才能到达下面的屏幕。

spark-shell还创建了一个Spark上下文Web UI,默认情况下,可以从http://localhost:4040访问该Web UI。

在spark-shell命令行上,可以运行任何Spark语句,如创建RDD、获取Spark版本等。

scala> spark.version
res2: String = 3.4.0

scala> val rdd = sc.parallelize(Array(1,2,3,4,5,6,7,8,9,10))
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at console:24

scala> rdd.collect().foreach(println)
1
2
3
4
5
6
7
8
9
10

scala>

这样就完成了在Windows 7、10和任何最新版本上安装Apache Spark。

6. Windows上的Web UI

Apache Spark提供了一套Web UI (job、Stages、Tasks、Storage、Environment、executor和SQL)来监控Spark应用程序的状态、Spark集群的资源消耗和Spark配置。在Spark Web UI上,可以看到操作是如何执行的。

7. 历史服务器

历史服务器保存了用户通过spark-submit、spark-shell提交的所有Spark应用程序的日志。可以通过在spark-defaults.conf文件中添加以下配置来启用Spark收集日志,spark-defaults.conf文件位于%SPARK_HOME%/conf目录下。

spark.eventLog.enabled true
spark.eventLog.dir               file:///E:/spark-3.4.0-bin-hadoop3/logs
spark.history.fs.logDirectory    file:///E:/spark-3.4.0-bin-hadoop3/logs

设置完上述属性后,通过启动以下命令启动历史服务器。

$SPARK_HOME/bin/spark-class.cmd org.apache.spark.deploy.history.HistoryServer

默认情况下,历史服务器监听18080端口,可以使用http://localhost:18080/从浏览器访问它。

通过点击每个App ID,将在Spark web UI中获得应用程序的详细信息。