当前位置: 首页 > news >正文

从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 的本地模式,进行学习和开发测试。

相关文章:

  • FPGA 中 XSA、BIT 和 DCP 文件的区别
  • XMLXXE 安全无回显方案OOB 盲注DTD 外部实体黑白盒挖掘
  • 什么是AI智能音视频?小天互连即时通讯带您体验
  • Spark-SQL与Hive
  • VR、AR、互动科技:武汉数字展馆制作引领未来展览新体验
  • 树莓派超全系列教程文档--(38)config.txt视频配置
  • 星云智控科技-优雅草星云物联网AI智控系统软件产品技术栈一览表-优雅草卓伊凡
  • 超大文件处理——大文件断点续传源码-下载大文件卡死服务器—星辰大文化术——未来之窗超算中心
  • git详解
  • 在线查看【免费】 txt, xml(渲染), md(渲染), java, php, py, js, css 文件格式网站
  • 智能照明系统:照亮智慧生活的多重价值
  • Harbor对接非AWS对象存储
  • Oracle DBA培训一般多长时间?
  • 腾讯云×数语科技:Datablau DDM (AI智能版)上架云应用!
  • 美创科技20周年庆典顺利举行
  • 【云原生】k8s集群部署最新版ELFK日志采集平台
  • UML 状态图:陪伴机器人系统示例
  • 稳压二极管详解:原理、作用、应用与选型要点
  • 文件有几十个T,需要做rag,用ragFlow能否快速落地呢?
  • Excel/WPS表格中图片链接转换成对应的实际图片
  • 经济日报刊文谈外卖平台仍试图凭补贴制造超低价:苦练内功摆脱“内卷式”竞争
  • 中国乒乓球队公示多哈世乒赛参赛名单,王楚钦孙颖莎混双重组
  • 上海交大发布“AI十条”,鄂维南院士已任该校人工智能学院讲席教授
  • 人民日报:当阅读成为“刚需”
  • 观察|如何推动再保险交易规模上量增加话语权,行业在临港新片区共倡议
  • 不断深化“数字上海”建设!上海市数据发展管理工作领导小组会议举行