【大数据】Spark部署与启动(文档)
Python 环境准备
Anaconda3: https://pan.baidu.com/s/1e4Wx48RsW0Pm_saotxTW4A?pwd=66ki
[root@test1 ~]# cd /export/
[root@test1 export]# rz # 上传源文件包
[root@test1 export]# sh ./Anaconda3-2021.05-Linux-x86_64.sh # 安装Anaconda3
[/root/anaconda3] >>> /export/server/anaconda3 # 输入YES后输入安装目录
[test@test1 ~]$ exit # 重新连接服务器,进入base环境
[test@test1 ~]$ su -
(base) [root@test1 ~]# vim ~/.condarc # 创建国内镜像
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
(base) [root@test1 ~]# conda create -n pyspark python==3.8.8 # 创建python虚拟环境
(base) [root@test1 ~]# conda activate pyspark # 激活环境
(pyspark) [root@test1 ~]#
Spark 环境准备
Spark压缩包: https://pan.baidu.com/s/14jg43nvuj-zQ9Uy9x59x9Q?pwd=u749
(pyspark) [root@test1 export]# RZ # 上传源文件包
(pyspark) [root@test1 export]# tar -zxvf spark-3.2.0-bin-hadoop3.2.tgz -C /export/server/ # 解压
(pyspark) [root@test1 export]# cd /export/server/
(pyspark) [root@test1 server]# ln -s spark-3.2.0-bin-hadoop3.2/ spark # 创建软连接
(pyspark) [root@test1 server]# vim /etc/profile # 配置环境
export JAVA_HOME=/export/server/jdk
export HADOOP_HOME=/export/server/hadoop
export SPARK_HOME=/export/server/spark
export PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark/bin/python3.8
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
(pyspark) [root@test1 server]# source /etc/profile # 激活环境
(pyspark) [root@test1 server]# vim /root/.bashrc
export JAVA_HOME=/export/server/jdk
export PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark/bin/python3.8
# 注释:
- SPARK_HOME: 表示Spark安装路径在哪里
- PYSPARK_PYTHON: 表示Spark想运行Python程序, 那么去哪里找python执行器
- JAVA_HOME: 告知Spark Java在哪里
- HADOOP_CONF_DIR: 告知Spark Hadoop的配置文件在哪里
- HADOOP_HOME: 告知Spark Hadoop安装在哪里
1:Local 模式配置
原理:Local模式就是以一个 独立进程 配合其 内部线程 来提供完成Spark运行环境
# 测试
(pyspark) [root@test1 spark]# cd /export/server/anaconda3/envs/pyspark/bin/
(pyspark) [root@test1 bin]# ./pyspark
# 开启后查看地址(端口冲突会递增): http://192.168.88.201:4040/jobs/
2:StandAlone 模式配置
Spark应用程序部署在一个独立的Spark集群上,Spark应用程序可以作为一个独立的作业提交给Spark集群,并由集群中的资源管理器(Spark Master)进行管理和分配资源。
Master角色以Master进程存在, Worker角色以Worker进程存在,Driver角色在运行时存在Master进程内,Executor运行于Worker进程内
Python 环境同步
# 退出虚拟环境:conda deactivate
# 激活虚拟环境:conda activate 虚拟环境名称
test2 test3 同步Python环境 ( Python 环境准备 )
Spark 配置文件
(pyspark) [root@test1 ~]# chown -R hadoop:hadoop /export/server/spark* # 授权给hadoop用户
(pyspark) [root@test1 conf]# su - hadoop
# (1): 配置workers文件
[hadoop@test1 ~]# cd /export/server/spark/conf/
[hadoop@test1 conf]# mv workers.template workers
[hadoop@test1 conf]# vim workers # 清空后填入工作机
test1
test2
test3
# (2): 配置spark-env.sh文件 test1自定义
[hadoop@test1 conf]$ mv spark-env.sh.template spark-env.sh
[hadoop@test1 conf]$ vim spark-env.sh
## 设置JAVA安装目录
JAVA_HOME=/export/server/jdk
## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群
HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop
YARN_CONF_DIR=/export/server/hadoop/etc/hadoop
## 指定spark老大Master的IP和提交任务的通信端口
# 告知Spark的master运行在哪个机器上
export SPARK_MASTER_HOST=test
# 告知sparkmaster的通讯端口
export SPARK_MASTER_PORT=7077
# 告知spark master的 webui端口
SPARK_MASTER_WEBUI_PORT=8080
# worker cpu可用核数
SPARK_WORKER_CORES=1
# worker可用内存
SPARK_WORKER_MEMORY=1g
# worker的工作通讯地址
SPARK_WORKER_PORT=7078
# worker的 webui地址
SPARK_WORKER_WEBUI_PORT=8081
## 设置历史服务器
# 配置的意思是 将spark程序运行的历史日志 存到hdfs的/sparklog文件夹中
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://test1:8020/sparklog/ -Dspark.history.fs.cleaner.enabled=true"
[hadoop@test1 conf]$ start-dfs.sh # 先启动hadoop集群
[hadoop@test1 conf]$ hadoop fs -mkdir /sparklog # 创建程序运行历史记录存放的文件夹
[hadoop@test1 conf]$ hadoop fs -chmod 777 /sparklog # 授权最高权限
# (3):配置spark-defaults.conf文件 test1自定义
[hadoop@test1 conf]$ mv spark-defaults.conf.template spark-defaults.conf
[hadoop@test1 conf]$ vim spark-defaults.conf # 追加以下内容
# 开启spark的日期记录功能
spark.eventLog.enabled true
# 设置spark日志记录的路径
spark.eventLog.dir hdfs://test1:8020/sparklog/
# 设置spark日志是否启动压缩
spark.eventLog.compress true
# (4):配置log4j.properties 文件
[hadoop@test1 conf]$ mv log4j.properties.template log4j.properties
[hadoop@test1 conf]$ vim log4j.properties
log4j.rootCategory=INFO, console -> log4j.rootCategory=WARN, console
Spark 文件夹同步
# 一定是hadoop所有权
# test1
[hadoop@test1 conf]$ cd /export/server/
[hadoop@test1 server]$ scp -r spark-3.2.0-bin-hadoop3.2 test2:/export/server/
[hadoop@test1 server]$ scp -r spark-3.2.0-bin-hadoop3.2 test3:/export/server/
# test2
[root@test2 server]# su - hadoop
[hadoop@test2 ~]# cd /export/server/
[hadoop@test2 server]# ln -s spark-3.2.0-bin-hadoop3.2 spark # 创建软连接
# test3
[root@test3 server]# su - hadoop
[hadoop@test3 ~]# cd /export/server/
[hadoop@test3 server]# ln -s spark-3.2.0-bin-hadoop3.2 spark # 创建软连接
StandAlone 启动
# 启动时需要启动: HDFS / YARN(history)
[hadoop@test1 conf]$ cd /export/server/spark
[hadoop@test1 spark]$ sbin/start-history-server.sh # 启动运行历史服务器 HistoryServer
[hadoop@test1 spark]$ sbin/start-all.sh # 启动全部master和worker
# Master集群控制台: http://192.168.88.201:8080/
# 或者可以一个个启动:
sbin/start-master.sh # 启动当前机器的master
sbin/stop-master.sh # 停止当前机器的master
sbin/start-worker.sh # 启动当前机器的worker
sbin/stop-worker.sh # 停止当前机器的worker
StandAlone连接集群
[hadoop@test1 spark]$ cd /export/server/spark/bin/
[hadoop@test1 bin]$ ./pyspark --master spark://test1:7077
# 程序运行临时地址:http://192.168.88.201:4040
# 历史任务服务地址:http://192.168.88.201:18080
Zookeeper 部署与启动
主节点选举·数据复制·客户端连接管理·故障检测和恢复
zookeeper文件包: https://pan.baidu.com/s/1xk_-PxCdP2CFGiklGa0fbA?pwd=8psi
# test1
[hadoop@test1 bin]$ cd /export/
[hadoop@test1 bin]$ rz
[hadoop@test1 export]$ tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz -C /export/server/
[hadoop@test1 export]$ ln -s apache-zookeeper-3.5.9-bin zookeeper # 创建软连接
[hadoop@test1 export]$ cd /export/server/zookeeper/conf/
[hadoop@test1 conf]$ cp zoo_sample.cfg zoo.cfg # 更名(权限问题)
[hadoop@test1 conf]$ cd /export/server/zookeeper/bin/
[hadoop@test1 bin]$ ./zkServer.sh start # 启动
25252 QuorumPeerMain
[hadoop@test1 bin]$ cd /export/server/
[hadoop@test1 server]$ scp -r apache-zookeeper-3.5.9-bin /export/server/ # 分发备用主机
# test2
[hadoop@test2 bin]$ cd /export/server/
[hadoop@test2 export]$ ln -s apache-zookeeper-3.5.9-bin zookeeper # 创建软连接
[hadoop@test2 conf]$ cd /export/server/zookeeper/bin/
[hadoop@test2 bin]$ ./zkServer.sh start # 启动
# 可以选择放入变量环境
StandAlone HA 部署与启动
提高集群的可用性,支持故障恢复,负载均衡,系统扩展性
# 前提: 确保Zookeeper 和 HDFS 均已经启动
[hadoop@test1 bin]$ cd /export/server/spark/conf/
[hadoop@test1 conf]$ vim spark-env.sh # 修改spark-env.sh
# 删除:
export SPARK_MASTER_HOST=test1
# 配置zookeeper 主备机
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=test1:2181,test2:2181,test3:2181 -Dspark.deploy.zookeeper.dir=/spark-ha"
[hadoop@test1 conf]$ scp spark-env.sh test2:/export/server/spark/conf/ # 分发
[hadoop@test1 conf]$ scp spark-env.sh test3:/export/server/spark/conf/ # 分发
[hadoop@test1 conf]$ cd /export/server/spark
[hadoop@test1 spark]$ sbin/stop-all.sh # 停止当前StandAlone集群
# test1
[hadoop@test1 spark]$ sbin/start-all.sh
# test2
[hadoop@test2 ~]$ cd /export/server/spark
[hadoop@test2 spark]$ sbin/start-master.sh
# 启动两个Master 三个Worker
# test1 http://192.168.88.201:8081/
URL: spark://test1:7077
Alive Workers: 3
Cores in use: 3 Total, 0 Used
Memory in use: 3.0 GiB Total, 0.0 B Used
Resources in use:
Applications: 0 Running, 0 Completed
Drivers: 0 Running, 0 Completed
Status: ALIVE
Workers (3)
# test2 http://192.168.88.202:8080/
URL: spark://test2:7077
Alive Workers: 0
Cores in use: 0 Total, 0 Used
Memory in use: 0.0 B Total, 0.0 B Used
Resources in use:
Applications: 0 Running, 0 Completed
Drivers: 0 Running, 0 Completed
Status: STANDBY
# 在正式部署的时候需要测试是否主备交换
Spark On YARN 模式
Master由ResoureManager代替,Worker由NodeManager代替
Executor全部运行在YARN提供的容器内
Spark On YARN是有两种运行模式的
一种是Cluster模式一种是Client模式.这两种模式的区别就是Driver运行的位置.
Cluster模式(集群模式):Driver运行在YARN容器内部,和ApplicationMaster在同一个容器内
Client模式即(客户端模式):Driver运行在客户端进程中,比如Driver运行在spark-submit程序的进程中
+--------------+-----------------+----------------+---------------------+-------------------+
| 模式 | Driver运行位置 | 日志查看 | 生产可用 | 稳定性 |
+--------------+-----------------+----------------+---------------------+-------------------+
| Cluster模式 | YARN容器内 | 容器内 | 推荐 | 稳定 |
| Client模式 | 客户端进程内 | 输出流中方便查看 | 不推荐 | 受客户端进程影响 |
+--------------+-----------------+----------------+---------------------+-------------------+
bin/pyspark --master yarn --deploy-mode client|cluster
# --deploy-mode 选项是指定部署模式, 默认是 客户端模式
# client就是客户端模式
# cluster就是集群模式
# --deploy-mode 仅可以用在YARN模式下
常用参数:
--class:指定Spark应用程序的入口类。
--master:指定Spark应用程序的运行模式,如yarn、local等。
--deploy-mode:指定应用程序的部署模式,如client、cluster等。
--executor-memory:指定每个Executor的内存大小。
--num-executors:指定Executor的数量。
--driver-memory:指定Driver的内存大小。
--executor-cores:指定每个Executor的核心数。
--driver-cores:指定Driver的核心数。
--queue:指定提交应用程序到的队列。
--name:指定应用程序的名称。
--conf:指定配置参数,如spark.executor.memory、spark.driver.memory等。
--files:指定要上传到Executor所在节点的文件。
--jars:指定要上传到Executor所在节点的JAR包。
--archives:指定要上传到Executor所在节点的压缩包。
--py-files:指定要上传到Executor所在节点的Python文件。
--packages:指定要下载的依赖包。
--repositories:指定要搜索依赖包的仓库。
--exclude-packages:指定不下载的依赖包。
--driver-class-path:指定Driver的类路径。
--executor-class-path:指定Executor的类路径。
--driver-java-options:指定Driver的JVM参数。
--executor-java-options:指定Executor的JVM参数。
--verbose:显示详细的日志信息。
--help:显示帮助信息。
Spark On YARN 启动(推荐)
# 确保 HADOOP_CONF_DIR YARN_CONF_DIR 的环境变量
[hadoop@test1 ~]$ cd /export/server/spark/conf
HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop
YARN_CONF_DIR=/export/server/hadoop/etc/hadoop
# 启动交互式(一)
[hadoop@test1 hadoop]$ cd /export/server/spark
[hadoop@test1 spark]$ bin/pyspark --master yarn
# 提交执行任务(二) 提示太多可以到日志配置文件修改等级:ERROR
# bin/spark-submit --master yarn --deploy-mode client|cluster /xxx/xxx/xxx.py 参数
[hadoop@test1 spark]$ bin/spark-submit --master yarn --deploy-mode client /export/server/spark/examples/src/main/python/pi.py 100
# 查看执行
http://192.168.88.201:8088/cluster
Python全栈(后端、数据分析、脚本、爬虫、EXE客户端) / 前端(WEB,移动,H5) / Linux / SpringBoot / 机器学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~