从0开始配置spark-local模式
一、安装 Java 环境
Spark 是基于 Java 的,因此需要先安装 Java 环境。
1. 下载 JDK:从 [Oracle 官方网站](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html) 或 [OpenJDK 官方网站](https://openjdk.org/) 下载适合你操作系统的 JDK 安装包。建议安装 JDK 11 或以上版本。
2. 安装 JDK:
Windows:运行下载的安装程序,按照提示完成安装。
Linux:使用包管理器安装,例如在 Ubuntu 上可以运行以下命令:
sudo apt update
sudo apt install openjdk-11-jdk
3. 配置环境变量:
Windows:
打开“系统属性” > “高级系统设置” > “环境变量”。
在“系统变量”中,新建或编辑`JAVA_HOME`,值为 JDK 的安装路径(例如`C:\Program Files\Java\jdk-11`)。
编辑`Path`变量,添加`%JAVA_HOME%\bin`。
Linux:
编辑`~/.bashrc`或`~/.zshrc`文件,添加以下内容:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
然后运行`source ~/.bashrc`或`source ~/.zshrc`使变量生效。
4. 验证 Java 安装:在终端或命令提示符中运行`java -version`,如果显示 Java 版本信息,则说明安装成功。
二、下载并解压 Spark
1. 下载 Spark:
访问 [Apache Spark 官方网站](https://spark.apache.org/downloads.html)。
在“Pre-built package”部分,选择适合你的 Hadoop 版本(如果你不需要与 Hadoop 集成,可以选择“Pre-built with user-provided Hadoop”)。
下载对应版本的压缩包(例如`spark-3.3.2-bin-hadoop3.2.tgz`)。
2. 解压 Spark:
Windows:使用解压工具(如 WinRAR 或 7-Zip)将下载的压缩包解压到一个合适的目录,例如`C:\Spark`。
Linux:在终端中运行以下命令:
tar -xzf spark-3.3.2-bin-hadoop3.2.tgz -C /opt/
解压后,Spark 的安装目录为`/opt/spark-3.3.2-bin-hadoop3.2`。
三、配置 Spark 环境变量
1. Windows:
打开“系统属性” > “高级系统设置” > “环境变量”。
在“系统变量”中,新建或编辑`SPARK_HOME`,值为 Spark 的安装路径(例如`C:\Spark\spark-3.3.2-bin-hadoop3.2`)。
编辑`Path`变量,添加`%SPARK_HOME%\bin`。
2. Linux:
编辑`~/.bashrc`或`~/.zshrc`文件,添加以下内容:
export SPARK_HOME=/opt/spark-3.3.2-bin-hadoop3.2
export PATH=$SPARK_HOME/bin:$PATH
然后运行`source ~/.bashrc`或`source ~/.zshrc`使变量生效。
3. 验证 Spark 安装:在终端或命令提示符中运行`spark-shell`,如果进入 Spark 的交互式 Shell 环境,则说明安装成功。
四、配置 Spark 本地模式
1. 修改配置文件(可选):
在`$SPARK_HOME/conf`目录下,复制`spark-defaults.conf.template`文件为`spark-defaults.conf`:
cp $SPARK_HOME/conf/spark-defaults.conf.template $SPARK_HOME/conf/spark-defaults.conf
编辑`spark-defaults.conf`文件,可以添加一些配置项,例如:
spark.master local[4] # 指定本地模式,使用 4 个线程作为工作线程
spark.executor.memory 1g # 每个执行器分配 1GB 内存
spark.driver.memory 1g # 驱动程序分配 1GB 内存
如果不修改配置文件,默认情况下,Spark 也会以本地模式运行,使用`local[*]`作为默认的主节点地址,表示使用机器上所有可用的核作为工作线程。
2. 启动 Spark Shell:
- 在终端或命令提示符中运行以下命令:
spark-shell --master local[4]
这将启动 Spark Shell,并以本地模式运行,使用 4 个线程作为工作线程。
3. 运行一个简单的 Spark 程序:
- 在 Spark Shell 中,输入以下代码:
val data = Array(1, 2, 3, 4, 5)
val distData = sc.parallelize(data, 2) // 将数据分布到 2 个分区
distData.foreach(println)
如果程序正常运行并打印出数组中的数字,则说明 Spark 本地模式配置成功。
五、运行 Spark 应用程序
1. 编写 Spark 应用程序:
创建一个 Scala 或 Python 文件,编写你的 Spark 应用程序代码。例如,一个简单的 Scala 程序:
import org.apache.spark.sql.SparkSessionobject SimpleApp {def main(args: Array[String]): Unit = {val spark = SparkSession.builder().appName("Simple Application").master("local[4]").getOrCreate()val data = Array(1, 2, 3, 4, 5)val distData = spark.sparkContext.parallelize(data, 2)distData.foreach(println)spark.stop()}
}
2. 打包应用程序(Scala):
如果你使用的是 Scala,需要将代码打包为一个 JAR 文件。可以使用 sbt 或 Maven 进行打包。例如,使用 sbt:
创建一个`build.sbt`文件,内容如下:
name := "SimpleSparkApp"version := "0.1"scalaVersion := "2.12.10"libraryDependencies += "org.apache.spark" %% "spark-core" % "3.3.2"
-在项目目录下运行`sbt package`命令,生成 JAR 文件。
3. 运行应用程序:
使用`spark-submit`命令提交应用程序:
spark-submit --class SimpleApp --master local[4] target/scala-2.12/simplesparkapp_2.12-0.1.jar
如果程序正常运行并打印出数组中的数字,则说明应用程序运行成功。
六、常见问题及解决方法
1. Java 环境变量未配置正确:
如果运行`spark-shell`时提示找不到 Java 命令,请检查`JAVA_HOME`环境变量是否正确配置,并确保`%JAVA_HOME%\bin`或`$JAVA_HOME/bin`已添加到`Path`环境变量中。
2. Spark 环境变量未配置正确:
如果运行`spark-shell`时提示找不到命令,请检查`SPARK_HOME`环境变量是否正确配置,并确保`%SPARK_HOME%\bin`或`$SPARK_HOME/bin`已添加到`Path`环境变量中。
3. 内存不足:
如果运行 Spark 程序时提示内存不足,请增加`spark.executor.memory`和`spark.driver.memory`的值,或者减少本地模式中使用的线程数(例如将`local[4]`改为`local[2]`)。
4. 依赖冲突:
如果在运行应用程序时提示依赖冲突,请检查项目的依赖配置,确保使用的 Spark 版本与依赖的其他库版本兼容。
通过以上步骤,你可以成功配置并运行 Spark 的本地模式,进行学习和开发测试。