Spark Standalone架构及安装部署

文章目录

    • Standalone架构
    • Standalone群集部署
    • Standalone程序测试

Standalone架构

  • Standalone模式是Spark自带的一种集群模式,不同于前面本地模式启动多个进程来模拟集群的环境,Standalone模式是真实地在多个机器之间搭建Spark集群的环境,完全可以利用该模式搭建多机器集群,用于实际的大数据处理。

  • StandAlone 是完整的Spark运行环境:

    • Master角色以Master进程存在,Worker角色以Worker进程存在。
    • Driver和Executor运行于Worker进程内, 由Worker提供资源供给它们运行。
      Spark Standalone架构及安装部署_第1张图片
  • StandAlone集群在进程上主要有3类进程:

    • 主节点Master
      Master角色, 管理整个集群资源,并托管运行各个任务的Driver
    • 从节点Workers
      Worker角色, 管理每个机器的资源,分配对应的资源来运行Executor(Task);
      每个从节点分配资源信息给Worker管理,资源信息包含内存Memory和CPU Cores核数
    • 历史服务器HistoryServer(可选)
      Spark Application运行完成以后,保存事件日志数据至HDFS,启动HistoryServer可以查看应用运行相关信息。
      Spark Standalone架构及安装部署_第2张图片

Standalone群集部署

  1. 群集规划:使用三台Linux虚拟机来组成集群环境(都需要安装py环境):
    node1运行: Spark的Master进程和1个Worker进程
    node2运行: spark的1个worker进程
    node3运行: spark的1个worker进程

  2. 安装spark环境可参考之前上一篇博客。

  3. 配置workers文件(node1)

cd /export/server/spark-3.2.0/conf
mv workers.template workers
vim workers

node1
node2
node3
  1. 配置spark-env.sh文件
mv spark-env.sh.template spark-env.sh
vim spark-env.sh

## 设置JAVA安装目录
JAVA_HOME=/export/server/jdk

## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群
HADOOP_CONF_DIR=/export/server/hadoop-3.3.0/etc/hadoop
YARN_CONF_DIR=/export/server/hadoop-3.3.0/etc/hadoop

## 指定spark老大Master的IP和提交任务的通信端口
# 告知Spark的master运行在哪个机器上
export SPARK_MASTER_HOST=node1
# 告知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://node1:8020/sparklog/ -Dspark.history.fs.cleaner.enabled=true"
  1. hdfs创建sparklog目录
hadoop fs -mkdir /sparklog
hadoop fs -chmod 777 /sparklog
  1. 配置spark-defaults.conf文件
mv spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf

# 开启spark的日期记录功能
spark.eventLog.enabled 	true
# 设置spark日志记录的路径
spark.eventLog.dir	 hdfs://node1:8020/sparklog/ 
# 设置spark日志是否启动压缩
spark.eventLog.compress 	true
  1. 配置log4j.properties文件
mv log4j.properties.template log4j.properties
vim log4j.properties
# 将INFO改为WARN
log4j.rootCategory=WARN, console
  1. 启动Spark群集
# 启动历史服务器
cd /export/server/spark-3.2.0
sbin/start-history-server.sh

Spark Standalone架构及安装部署_第3张图片

# 启动全部master和worker
sbin/start-all.sh

# 启动当前机器的master
sbin/start-master.sh
# 启动当前机器的worker
sbin/start-worker.sh

# 停止全部
sbin/stop-all.sh

# 停止当前机器的master
sbin/stop-master.sh

# 停止当前机器的worker
sbin/stop-worker.sh

Spark Standalone架构及安装部署_第4张图片
Spark Standalone架构及安装部署_第5张图片

  1. 查看Master的WEB UI
    输入:http://node1:8080/Spark Standalone架构及安装部署_第6张图片

Standalone程序测试

  1. pyspark连接
# 通过--master选项来连接到 StandAlone集群
# 如果不写--master选项, 默认是local模式运行
bin/pyspark --master spark://node1:7077

Spark Standalone架构及安装部署_第7张图片
Spark Standalone架构及安装部署_第8张图片
Spark Standalone架构及安装部署_第9张图片
点击Application Detail UI(这里只是运行的子任务而不是独立程序)
Spark Standalone架构及安装部署_第10张图片
Spark Standalone架构及安装部署_第11张图片

  • 关闭pyspark之后,会发现4040端口的页面被关闭了,然后8080却并没有关闭,因为Local模式下一个进程既包含master worker driver。而Standalone它的进程是分开的。

  • spark-submit提交代码测试

bin/spark-submit  --master spark://node1:7077 /export/server/spark-3.2.0/examples/src/main/python/pi.py 100

在这里插入图片描述

  • 查看历史服务器WEB UI
    对于执行完的程序我们无法通过4040端口去查看,但是我们可以通过查看历史服务器的Web UI来查看:http://node1:18080/
    Spark Standalone架构及安装部署_第12张图片
    点进去可以查看详情
    Spark Standalone架构及安装部署_第13张图片

你可能感兴趣的:(Spark,spark,架构,大数据)