Spark Standalone环境搭建

Spark Standalone 环境搭建

1. Standalone架构

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

Standalone是完整的Spark运行环境,其中:

Master角色以Master进程存在,Worker角色以Worker进程存在

Driver和Executor运行于Worker进程内,由Worker提供资源供给它们运行
在这里插入图片描述

Standalone集群在进程上主要有3类进程:

  • 主节点Master进程:

    Master角色,管理整个集群资源,并托管运行各个任务的Driver

  • 从节点Workers:

    Worker角色,管理每个机器的资源,分配对应的资源来运行Executor(Task);每个从节点分配资源信息给Worker管理,资源信息包含内存Memory和CPU Cores核数

  • 历史服务器HistoryServer(可选):

    SparkApplication运行完成以后,保存事件日志数据至HDFS,启动HistoryServer可以查看运行相关信息。
    在这里插入图片描述

2. Spark StandAlone环境部署

一、历史服务器

历史服务器不是Spark环境的必要组件,是可选的。

在YARN中有一个历史服务器,功能是将YARN运行的程序的历史日志记录下来,通过历史服务器方便用户查看程序运行的历史信息。

Spark的历史服务器功能:将Spark运行的程序的历史日志记录下来,通过历史服务器方便用户查看程序运行的历史信息

搭建集群环境,一般推荐将历史服务器也配置上,方便以后查看历史记录。

二、集群规划

使用三台Linux虚拟机组成集群环境,分别是:

hadoop102/hadoop103/hadoop104

hadoop102运行:Spark的Master进程 和 1个Worker进程

hadoop103运行:spark的1个worker进程

hadoop104运行:spark的1个worker进程

整个集群提供: 1个master进程 和 3个worker进程

三、安装

在所有机器安装Python(Anaconda),并配置相关环境变量。——可参考 Spark Local环境部署

四、配置配置文件

进入到spark的配置文件目录中, cd $SPARK_HOME/conf

配置workers文件

# 改名, 去掉后面的.template后缀
mv workers.template workers

# 编辑worker文件
vim workers
# 将里面的localhost删除, 追加
hadoop102
hadoop103
hadoop104
到workers文件内

# 功能: 这个文件就是指示了  当前SparkStandAlone环境下, 有哪些worker

在这里插入图片描述

配置spark-env.sh文件

# 1. 改名
mv spark-env.sh.template spark-env.sh

# 2. 编辑spark-env.sh, 在底部追加如下内容

## 设置JAVA安装目录
JAVA_HOME=/opt/module/jdk1.8.0_212

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

## 指定spark老大Master的IP和提交任务的通信端口
# 告知Spark的master运行在哪个机器上
export SPARK_MASTER_HOST=hadoop102
# 告知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://hadoop102:8020/sparklog/ -Dspark.history.fs.cleaner.enabled=true"

上面的配置的路径,要根据机器实际的路径来写。

在HDFS上创建程序运行历史记录存放的文件夹:

hadoop fs -mkdir /sparklog
hadoop fs -chmod 777 /sparklog

配置spark-defaults.conf文件

# 1. 改名
mv spark-defaults.conf.template spark-defaults.conf

# 2. 修改内容, 追加如下内容
# 开启spark的日期记录功能
spark.eventLog.enabled  true
# # 设置spark日志记录的路径
spark.eventLog.dir       hdfs://hadoop102:8020/sparklog/
# spark.yarn.historyServer.address=hadoop104:18080
# # 设置spark日志是否启动压缩
spark.eventLog.compress         true

配置log4j.properties 文件 [可选配置]

# 1. 改名
mv log4j.properties.template log4j.properties
# 2. 修改内容 参考下图

在这里插入图片描述

五、将Spark安装文件夹分发到其它的服务器上

scp -r spark-3.1.2-bin-hadoop3.2 hadoop103:/opt/server/
scp -r spark-3.1.2-bin-hadoop3.2 hadoop104:/opt/server/

同时在hadoop103和hadoop104上给spark安装目录增加软链接

ln -s /opt/server/spark-3.1.2-bin-hadoop3.2 /opt/server/spark

六、检查

检查每台服务器的JAVA_HOME、SPARK_HOME、PYSPARK_PYTHON等等环境变量是否正常指向正确的目录。

七、启动历史服务器

sbin/start-history-server.sh

八、启动Spark的Master和Worker进程

# 启动全部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

九、查看Master的WEB UI

默认端口master是设置的8080,如果端口被占用, 会顺延到8081 …;8082… 8083… 直到申请到端口为止。

在这里插入图片描述

十、连接到StandAlone集群

bin/pyspark

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

bin/spark-shell

bin/spark-shell --master spark://hadoop102:7077
# 同样适用--master来连接到集群使用

bin/spark-submit (PI)

bin/spark-submit --master spark://hadoop102:7077 /opt/server/spark/examples/src/main/python/pi.py 100
# 同样使用--master来指定将任务提交到集群运行

十一、查看历史服务器WEB UI

历史服务器的默认端口是: 18080

启动在hadoop102上, 可以在浏览器打开:

hadoop102:18080来进入到历史服务器的WEB UI上.
在这里插入图片描述

3. 各端口比较

4040:是一个运行的Application在运行的过程中临时绑定的端口,用以查看当前任务的状态,4040被占用会顺延到4041,4042等。

8080:默认是StandAlone下,Master角色(进程)的WEB端口,用以查看当前Master(集群)的状态。

18080:默认是历史服务器的端口,由于每个程序运行完成后,4040端口就被注销了,在以后想回看某个程序的运行状态就可以通过历史服务器查看,历史服务器长期稳定运行,可供随时查看被记录的程序的运行过程。

4. Spark程序运行层次结构

Spark Application程序运行时三个核心概念:Job、Stage、Task,说明如下:

  • Job:有多个Task的并行计算部分,一般Spark中的action操作,会生成一个Job。
  • Stage:Job的组成单位,一个Job会切分成多个Stage,Stage彼此之间相互依赖顺序执行,而每个Stage是多个Task的集合,类似map和reduce stage。
  • Task:被分配到各个Executor的单位工作内容,它是Spark中的最小执行单位,一般来说有多少个Partition就会有多少个Task,每个Task只会处理单一分支上的数据。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值