Spark安装配置2

Spark环境搭建流程(初学者版)

一、先搞清楚:初学者应该怎么学

对于初学者,建议按下面顺序来:

第一步:先搭本地环境(Local模式)

先在一台 Linux 机器上把 Spark 跑起来,学会 pysparkspark-submit

第二步:再学集群模式(Standalone)

理解 Spark 的 Master、Worker 是怎么工作的。

第三步:最后了解 Spark on YARN

这是更接近企业环境的模式,但不适合一上来就学。


二、搭建前准备

课件里给出的基础环境是:

  • Linux:Ubuntu 16.04
  • Hadoop:3.3.5
  • JDK:1.8
  • Spark:3.4.0

并且建议在 Linux 上安装和使用 Spark,不建议初学者优先在 Windows 上折腾。


三、第一阶段:搭建本地版 Spark(最适合初学者)

1. 准备基础软件

在安装 Spark 之前,先确保下面这些已经准备好:

必备

  • JDK 1.8
  • Hadoop(至少配置好相关环境变量)
  • Python 环境
  • 最好准备一个 pyspark 的 Python 环境

课件中强调,Spark 常和 Hadoop 一起使用,Hadoop 负责存储,Spark 负责计算。


2. 下载 Spark 安装包

下载 Spark 3.4.0,对应安装包为:

spark-3.4.0-bin-without-hadoop.tgz

解压并放到 /usr/local/ 目录下,再改名为 spark。课件示例命令如下:

bash 复制代码
sudo tar -zxf ~/Downloads/spark-3.4.0-bin-without-hadoop.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-3.4.0-bin-without-hadoop ./spark
sudo chown -R hadoop:hadoop ./spark

3. 配置 Spark 的核心文件

(1)配置 spark-env.sh

先复制模板文件:

bash 复制代码
cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh

然后在 spark-env.sh 第一行加入:

bash 复制代码
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)

这一步的作用可以简单理解为:
告诉 Spark 去哪里找到 Hadoop 相关依赖。


(2)配置 .bashrc

这是初学者最容易漏掉的一步。课件要求至少配置这几个环境变量:

  • JAVA_HOME
  • HADOOP_HOME
  • SPARK_HOME
  • HADOOP_CONF_DIR
  • PYSPARK_PYTHON

示例:

bash 复制代码
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_371
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export HADOOP_HOME=/usr/local/hadoop
export SPARK_HOME=/usr/local/spark
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PYSPARK_PYTHON=/home/hadoop/anaconda3/envs/pyspark/bin/python3.8
export PATH=$PATH:${JAVA_HOME}/bin:$HADOOP_HOME/bin:$SPARK_HOME/bin

配置完后执行:

bash 复制代码
source ~/.bashrc

(3)可选:调整日志级别

为了避免屏幕输出太多无关信息,可以把 Spark 日志改成只显示错误级别。课件给出的做法是:

bash 复制代码
cd /usr/local/spark/conf
sudo mv log4j2.properties.template log4j.properties
vim log4j.properties

把其中的:

bash 复制代码
rootLogger.level = error

这样后续运行程序时更清爽。


4. 验证 Spark 是否安装成功

安装好以后,不需要像 Hadoop 那样先启动服务。可以直接运行 Spark 自带示例 SparkPi 验证。

bash 复制代码
cd /usr/local/spark
./bin/run-example SparkPi

为了只看结果,可以这样过滤:

bash 复制代码
./bin/run-example SparkPi 2>&1 | grep "Pi is roughly"

如果看到类似输出:

bash 复制代码
Pi is roughly 3.14159

说明 Spark 本地环境安装成功。


四、第二阶段:学会最基本的使用方法

1. 启动 pyspark

如果前面环境变量配好了,直接执行:

bash 复制代码
cd /usr/local/spark
./bin/pyspark

默认就是 local[*] 模式,也就是本机多线程模式。

也可以显式指定:

bash 复制代码
./bin/pyspark --master local[4]

表示使用 4 个 CPU 核心模拟运行。


2. 在 pyspark 里试运行

进入后先测试最简单表达式:

python 复制代码
8*2+5

如果能正常返回结果,说明交互环境没问题。退出命令:

python 复制代码
exit()

3. 用 spark-submit 提交程序

这是以后正式跑 Spark 程序最常用的方式。课件示例:

bash 复制代码
cd /usr/local/spark
bin/spark-submit \
--master local[*] \
/usr/local/spark/examples/src/main/python/pi.py 10 2>&1 | grep "Pi is roughly"

这一步说明:

  • pyspark 适合交互调试
  • spark-submit 适合正式运行程序

五、第三阶段:安装 PySpark 类库

这一点初学者很容易混淆:

  • Spark:是计算框架
  • PySpark:是 Python 类库
  • bin/pyspark:是交互式客户端命令,不等于类库

课件建议在 pyspark 虚拟环境中安装 PySpark:

bash 复制代码
conda activate pyspark
pip install pyspark==3.4.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

然后进入 Python 测试:

python 复制代码
import pyspark

不报错就说明安装成功。


六、第四阶段:写一个最简单的 Spark 程序

课件给了一个 WordCount.py 示例,核心流程非常适合入门理解:

python 复制代码
from pyspark import SparkConf, SparkContext

conf = SparkConf().setMaster("local[*]").setAppName("My App")
sc = SparkContext(conf = conf)

logFile = "file:///usr/local/spark/README.md"
logData = sc.textFile(logFile, 2).cache()

numAs = logData.filter(lambda line: 'a' in line).count()
numBs = logData.filter(lambda line: 'b' in line).count()

print('Lines with a: %s, Lines with b: %s' % (numAs, numBs))
sc.stop()

你只需要理解这几步:

  1. 创建 Spark 配置
  2. 创建 Spark 上下文
  3. 读取文件
  4. 做转换和统计
  5. 输出结果
  6. 关闭 Spark

运行方式有两种:

方式1:直接用 Python 跑

bash 复制代码
python WordCount.py

方式2:用 Spark 提交

bash 复制代码
/usr/local/spark/bin/spark-submit --master local[*] WordCount.py

七、第五阶段:再学集群模式(Standalone)

当本地模式已经熟悉以后,再进入集群模式。

课件中使用 3 台机器做演示:

  • hadoop01:Master + Worker
  • hadoop02:Worker
  • hadoop03:Worker

这一步的核心目标是理解:

  • Master:负责调度
  • Worker:负责执行任务

集群搭建核心流程

对于初学者,不必一开始记所有细节,只抓住这 6 步:

1. 先搭好 Hadoop 集群

因为 Spark 常要读取 HDFS 数据。

2. 所有节点准备 Python 环境

建议所有节点都装好 Anaconda3,并激活 pyspark 环境。

3. 所有节点配置环境变量

保证每个节点都知道:

  • Java 在哪
  • Hadoop 在哪
  • Spark 在哪
  • Python 在哪

4. 配置 workers

在 Master 节点的 conf/workers 里写入所有 Worker 主机名:

bash 复制代码
hadoop01
hadoop02
hadoop03

5. 配置 spark-env.sh

设置:

  • Master 主机名
  • 端口
  • Worker 资源
  • Hadoop 配置位置
  • 历史日志配置

6. 启动集群

先启动 Hadoop,再启动 Spark:

bash 复制代码
cd /usr/local/hadoop
sbin/start-all.sh

cd /usr/local/spark
./sbin/start-history-server.sh
sbin/start-master.sh
sbin/start-workers.sh

启动后可以在浏览器查看集群页面。课件中 Master 管理页面示例地址为:

bash 复制代码
http://hadoop01:8081

八、第六阶段:了解 Spark on YARN

这个模式更接近企业环境。课件里强调:

  • 企业往往已经有 Hadoop/YARN 集群
  • 所以 Spark 很多时候直接跑在 YARN 上
  • 不一定单独搭 Standalone 集群

Spark on YARN 的入门理解

你只要先记住:

它的前提

  • 已经有 Hadoop/YARN 集群
  • 有 Spark 客户端工具
  • 有待提交程序

它的好处

  • 资源统一管理
  • 更适合企业生产环境

它的两种模式

  • client:适合学习和测试
  • cluster:适合生产环境

最简单测试命令

启动 pyspark

bash 复制代码
cd /usr/local/spark
./bin/pyspark --master yarn

提交程序

bash 复制代码
cd /usr/local/spark
bin/spark-submit \
--master yarn \
/usr/local/spark/examples/src/main/python/pi.py 10 2>&1 | grep "Pi is roughly"

九、给初学者的推荐学习路线

第1周

先完成本地环境安装:

  • JDK
  • Hadoop 环境变量
  • Spark 安装
  • pyspark 启动
  • SparkPi 验证

第2周

练会两个命令:

  • pyspark
  • spark-submit

并写一个最简单的 WordCount.py

第3周

学习读取:

  • 本地文件
  • HDFS 文件

第4周

再去理解:

  • Standalone 集群
  • Spark on YARN
  • client / cluster 区别

十、初学者最容易踩的坑

1. 环境变量没配全

尤其是:

  • JAVA_HOME
  • SPARK_HOME
  • HADOOP_HOME
  • HADOOP_CONF_DIR
  • PYSPARK_PYTHON

2. 把 PySpark 类库和 pyspark 命令混为一谈

它们不是一回事。

3. 一上来就搭集群

初学者最好的策略是:

先本地跑通,再学分布式

4. 日志太多,看不到结果

可以用 grep 过滤,比如:

bash 复制代码
2>&1 | grep "Pi is roughly"

十一、最简版流程图

可以把 Spark 环境搭建记成这条线:

准备 JDK/Hadoop/Python → 下载并解压 Spark → 配置 spark-env.sh 和 .bashrc → source 生效 → 跑 SparkPi 验证 → 用 pyspark 交互测试 → 用 spark-submit 提交程序 → 再学习集群模式和 YARN 模式


相关推荐
大大大大晴天5 小时前
每天认识一个组件:数据治理Apache Atlas
大数据
数字新视界6 小时前
2026模块化机房选型指南:行业市场发展趋势、占有率与竞争梯队分析报告解析
大数据·人工智能·物联网·数据中心·微模块机房·模块化机房·冷通道
姜穆澜8 小时前
OneID 从 0 到 1 完整生产案例(四)
大数据
OsDepK8 小时前
项目快速Git至仓库(完整版)
大数据·git·elasticsearch·搜索引擎
合米AI SOP系统9 小时前
传统产线如何快速上马落地 AI 防错?合米科技 AI SOP 7天即可上线。
大数据·人工智能·科技
思录Echo9 小时前
什么决定具身智能的最终走向?多技术路线与落地现实辨析
大数据·人工智能
xiaohaiAIgeo9 小时前
【2026年】AI监控加行为分析守护实验室安全
大数据·人工智能·科普知识
林墨聊AIGC10 小时前
动漫AI视频创作工具在哪找到的?2026年最新动漫AI视频平台与软件指南
大数据·人工智能·ai作画·aigc·音视频
故七月11 小时前
告别 AI 时代品牌 “隐身”:万域智瞰 AI‑GEO,构建品牌大模型时代营销新基建
大数据·人工智能
数字孪生视频孪生12 小时前
三维实时重构异构底座 核工危化无感定位跨境轨迹一屏统揽
大数据·运维·人工智能·重构·架构