购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 下载并安装Spark

本节介绍如何下载并安装Spark。

2.1.1 普通安装

普通安装是最常见的安装方式,在官方下载安装包,进行配置即可。以下为普通安装的步骤。

1.下载Spark

访问Spark的官方网站:https://spark.apache.org/downloads.html,如图2-1所示,找到需要的版本(在这个例子中是3.5.1版本)并下载预构建的二进制包(通常是.tgz或.zip文件,取决于你的操作系统)。如果使用的是Linux或macOS系统,可以下载.tgz文件;如果使用的是Windows系统,可以下载.zip文件。

图2-1 下载页面

在图2-1的下载页面中,Choose a package type指的是选择适合你的安装环境和需求的Spark软件包类型。Spark提供了多种预构建和源码类型的软件包,以满足不同用户的需求。

具体来说,可以选择的包类型说明如下。

· Pre-built for Apache Hadoop x.y and later:这是基于特定Hadoop版本的预先编译版。例如,Pre-built for Apache Hadoop 3.3 and later就是基于Hadoop 3.3或更高版本的预先编译版。需要确保你的环境中已经安装了Hadoop 3.3或更高版本,以便能够正确运行该安装包。

· Pre-built for Apache Hadoop x.y and later (Scala x.y):这个描述在前者的基础上,进一步指定了Scala的版本需求。例如,Pre-built for Apache Hadoop 3.3 and later (Scala 2.13)说明该安装包不仅为Hadoop 3.3及以后版本预编译好,而且是用Scala 2.13版本预编译的。因此,需要确保你的环境中同时安装了Hadoop 3.3或更高版本和Scala 2.13版本,以便能够正常运行该安装包。Spark 3通常是使用Scala 2.12预构建的,Spark 3.2+使用Scala 2.13提供了额外的预构建发行版。

· Pre-built with user-provided Apache Hadoop:这是一个Hadoop free版,它可以与任意Hadoop版本一起使用。这种类型的包提供了与Hadoop的兼容性,但需要自己提供Hadoop库。

· Source code:这是Spark的源代码,需要自行编译才能使用。这通常适用于那些需要定制Spark或对其内部机制有深入了解的用户。

根据你的具体情况和需求,选择合适的包类型。如果只是想在本地环境中快速体验Spark,并且已经安装了与预构建包相匹配的Hadoop版本,那么Pre-built for Hadoop x.x and later可能是最简单的选择。如果需要定制Spark或对其内部机制有深入了解,那么源代码包可能更适合你。

下载Spark之后,解压下载的文件到指定的目录。

2.配置环境变量

将Spark的bin目录添加到你的PATH环境变量中。如果是Linux或macOS操作系统,则可以通过编辑Shell配置文件(如.bashrc或.zshrc)来实现这一点。

例如,在.bashrc中添加以下行:

     export SPARK_HOME=/path/to/spark-3.5.1-bin-hadoop3.2
     export PATH=$PATH:$SPARK_HOME/bin

然后,运行source ~/.bashrc来使更改生效。

如果是Windows操作系统,则在“系统属性”的“环境变量”部分添加一个新的系统变量SPARK_HOME,其值为Spark安装目录的路径。然后,编辑Path变量并添加%SPARK_HOME%。

3.启动集群服务器

通过以下命令来启动Standalone集群的主节点服务器:

     start-master.sh

正常启动后,主节点服务器将会打印出<spark://HOST:PORT>这样的URL,以便工作节点来连接。也可以在主节点服务器的Web界面看到这个URL,Web界面默认网址是http://localhost:8080。

2.1.2 通过Docker镜像安装

通过Docker镜像安装Spark是一个相对简单且高效的方法,它允许开发者在隔离的环境中快速部署和测试Spark。下面将详细描述使用Docker镜像安装Spark的步骤,并解释其中的关键概念和注意事项。

1.理解Docker和Docker镜像

Docker是一个开源的容器化平台,它允许开发者将应用程序及其依赖项打包到一个可移植的容器中,并在任何Docker环境中运行。Docker镜像是一个轻量级的、可执行的独立软件包,它包含运行应用程序所需的一切:代码、运行时、系统工具、库和配置。

2.查找Spark Docker镜像

首先,在Docker Hub或其他Docker镜像仓库中查找Spark的官方或社区维护的Docker镜像。这些镜像可能已经预先配置了与Hadoop、Scala等组件的兼容性,因此可以直接使用它们来部署Spark集群。

3.安装Docker

如果还没有安装Docker,需要先在你的机器上安装Docker。安装过程因操作系统而异,但通常包括下载Docker安装包、运行安装程序并按照提示进行操作。安装完成后,需要确保Docker服务正常运行。

4.拉取Spark Docker镜像

一旦找到了合适的Spark Docker镜像,便可以使用Docker命令行工具来拉取它。例如,如果找到了一个名为apache/spark:3.5.1的镜像,可以使用以下命令来拉取它:

     docker pull apache/spark:3.5.1

这个命令会从Docker Hub下载并安装指定的Spark Docker镜像。

5.运行Spark容器

拉取镜像后,可以使用Docker命令行工具来运行Spark容器。但是,由于Spark是一个分布式计算框架,通常需要多个容器来组成一个集群。因此,可能需要使用Docker Compose或其他容器编排工具来管理多个容器。

以下是一个简单的示例,展示如何使用Docker命令行工具运行一个单独的Spark主节点容器:

     docker run -it --name spark-master \
       -p 7077:7077 -p 8080:8080 \
       -e "SPARK_CONF_DIR=/conf" \
       -e "SPARK_LOCAL_IP=127.0.0.1" \
       -v /path/to/your/spark-conf:/conf \
       apache/spark:3.5.1 spark-class org.apache.spark.deploy.master.Master

以上命令会启动一个名为spark-master的容器,并将容器的7077和8080端口映射到宿主机的相应端口。它还设置了一些环境变量,并将宿主机的/path/to/your/spark-conf自定义目录挂载到容器的/conf目录,以便可以自定义Spark的配置文件。

6.配置Spark集群(可选)

如果需要部署一个完整的Spark集群,包括多个工作节点和从节点,则需要使用Docker Compose或其他容器编排工具来定义和管理这些容器。可以编写一个Docker Compose文件来描述集群架构和配置,然后使用Docker Compose命令行工具来启动和停止集群。

以下是一个简单的Docker Compose文件示例,用于设置包含一个Spark Master节点和两个Spark Worker节点的集群:

     services:
       spark-master-1:
         image: bitnami/spark:3.5.1               # 可替换为适合自己环境的Spark镜像
         environment:
           - TZ=Asia/Shanghai                     # 配置程序默认时区为上海(中国标准时间)
           - SPARK_MODE=master                    # Spark集群模式为master
         ports:
           - '8080:8080'                          # Spark Web UI
           - '7077:7077'                          # Spark Master端口
         volumes:
           - /data/spark/share/app:/opt/bitnami/spark/app # 存放应用的目录,所有节点都能共
享访问
       spark-worker-1:
         image: bitnami/spark:3.5.1
         environment:
           - TZ=Asia/Shanghai                     # 配置程序默认时区为上海(中国标准时间)
           - SPARK_MODE=worker                    # Spark集群模式为worker
           - SPARK_MASTER_URL=spark://spark-master-1:7077                 # master的URL
           - SPARK_WORKER_MEMORY=1G               # 分配给Worker的内存大小
           - SPARK_WORKER_CORES=1                 # 分配给Worker的CPU核心数
         volumes:
           - /data/spark/share/app:/opt/bitnami/spark/app
       spark-worker-2:
         image: bitnami/spark:3.5.1
         environment:
           - TZ=Asia/Shanghai
           - SPARK_MODE=worker
           - SPARK_MASTER_URL=spark://spark-master-1:7077
           - SPARK_WORKER_MEMORY=1G
           - SPARK_WORKER_CORES=1
         volumes:
           - /data/spark/share/app:/opt/bitnami/spark/app

在上述配置中:

请将bitnami/spark:3.5.1替换为实际的Spark Master和Worker镜像名称和标签。

根据项目实际的环境和需求,可以调整CPU核心数(SPARK_WORKER_CORES)和内存大小(SPARK_WORKER_MEMORY)等配置。

volumes用于配置多个节点共享同一个目录。这个目录一般用于放置自己开发的Spark应用程序或数据文件。如果希望应用输出文件,则需要对该目录进行授权,例如sudo chmod -R 777/data/spark/share。

注意,上面只是一个基本的示例,用于演示如何使用Docker Compose来描述Spark集群。在实际应用中,可以根据具体的需求和环境进行更多的配置和定制。

2.1.3 验证安装

一旦Spark容器或集群已经运行起来,可以使用Spark的命令行工具(如spark-shell)或编写Spark应用程序来测试和验证安装是否成功。

例如,打开一个新的命令行窗口,并运行以下命令来验证Spark是否已正确安装:

     spark-shell

如果一切正常,可以看到控制台会输出Spark的欢迎信息和一些版本信息,代码如下:

     $ spark-shell
     Setting default log level to "WARN".
     To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use
setLogLevel(newLevel).
     24/05/08 07:53:26 WARN NativeCodeLoader: Unable to load native-hadoop library
for your platform... using builtin-java classes where applicable
     Spark context Web UI available at http://313c7a702976:4040
     Spark context available as 'sc' (master = local[*], app id = local-
1715154806551).
     Spark session available as 'spark'.
     Welcome to
            ____              __
          / __/__  ___ _____/ /__
         _\ \/ _ \/ _ `/ __/  '_/
        /___/ .__/\_,_/_/ /_/\_\   version 3.5.1
           /_/

     Using Scala version 2.12.18 (OpenJDK 64-Bit Server VM, Java 17.0.11)
     Type in expressions to have them evaluated.
     Type :help for more information.

     scala>

然后开始使用Spark的交互式Shell。

也可以通过连接到Spark主节点的Web UI界面(http://主节点IP:8080/)来查看集群的状态和详细信息,如图2-2所示。

图2-2 通过Web界面查看集群 B5iCtjsSRCfSnj3QFL3SDk/mUckSxbgV8iN3ikW/94TvSa9W2q3TMR0YSDbUzvFH

点击中间区域
呼出菜单
上一章
目录
下一章
×