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 模式


相关推荐
天远Date Lab1 小时前
Python实战:基于天远二手车估值API构建企业车队资产数字化管理方案
大数据·人工智能·python
北极九章ArcticData2 小时前
销售管理团队如何用ChatBI实现数据驱动管理?
大数据·人工智能·数据分析·chatbi
阿里云大数据AI技术2 小时前
EMR Serverless Spark 携手 PAI/百炼,开启“SQL 即 AI”的新篇章
sql·阿里云·spark·serverless·pai
恼书:-(空寄2 小时前
深入理解 Elasticsearch 写入与查询机制
大数据·elasticsearch·搜索引擎
TDengine (老段)2 小时前
TDengine IDMP 0-阅读指南
大数据·数据库·人工智能·时序数据库·tdengine·涛思数据
黄昏回响2 小时前
计算机系统基础知识(补充篇):数据库——数据仓库、数据中台与大数据技术详解
大数据·数据库·数据仓库
ACP广源盛139246256732 小时前
ASW3810@ACP#4 路差分 2:1/1:2 双向多路复用 / 解复用器 产品规格与应用总结
大数据·单片机·嵌入式硬件·计算机外设·电脑
dinl_vin2 小时前
一文通关Spark
大数据·分布式·spark
AI营销资讯站2 小时前
AI营销内容增长瓶颈?原圈科技以AI Agents破局之道
大数据·人工智能