【快速上手】pyspark 集群环境下的搭建(Standalone模式)

目录

[前言 :](#前言 :)

一、spark运行的五种模式

[二、 安装步骤](#二、 安装步骤)

安装前准备

1.第一步:安装python

2.第二步:在bigdata01上安装spark

3.第三步:同步bigdata01中的spark到bigdata02和03上

三、集群启动/关闭

四、打开监控界面验证


前言:

spark有五种运行模式,本文介绍在集群环境下Standalone模式的搭建!!!YARN模式请前往下篇文章。


一、spark运行的五种模式

1、本地模式:

Local:一般用于做测试,验证代码逻辑,不是分布式运行,只会启动1个进程来运行所有任务。

2、集群模式:

Cluster:一般用于生产环境,用于实现PySpark程序的分布式的运行

①Standalone:Spark自带的分布式资源平台,功能类似于YARN

②YARN:Spark on YARN,将Spark程序提交给YARN来运行,工作中主要使用的模式

③Mesos:类似于YARN,国外见得多,国内基本见不到

④K8s:基于分布式容器的资源管理平台,运维层面的工具。

二、 安装步骤

安装前准备

(1)首先准备至少三台服务器 ------ 我的三台服务器分别是:bigdata01 bigdata02 bigdata03

(2)各个服务器上都要安装jdk 和 hadoop

(3)在bigdata01服务器上有同步的脚本:xsync.sh(不是必须的)

我的所有安装包放在/opt/modules下,解压在/opt/installs下

1.第一步:安装python

通过Anaconda 安装 ,因为这个软件不仅有python还有其他的功能,比单纯安装python功能要强大。分别在bigdata01 bigdata02 bigdata03上安装Anaconda

Anaconda3-2021.05-Linux-x86_64.sh放在了我的资源里,需要的自取!!!

①.上传:将Anaconda上传到/opt/modules下

cd /opt/modules

②安装

添加执行权限

chmod u+x Anaconda3-2021.05-Linux-x86_64.sh

执行

sh ./Anaconda3-2021.05-Linux-x86_64.sh

过程

#第一次:【直接回车,然后按q】

Please, press ENTER to continue

>>>

#第二次:【输入yes】

Do you accept the license terms? yes\|no

no >>> yes

#第三次:【输入解压路径:/opt/installs/anaconda3】

/root/anaconda3 >>> /opt/installs/anaconda3

#第四次:【输入yes,是否在用户的.bashrc文件中初始化Anaconda3的相关内容】

Do you wish the installer to initialize Anaconda3

by running conda init? yes\|no

no >>> yes

③刷新环境变量

source /root/.bashrc

④激活虚拟环境,如果需要关闭就使用:conda deactivate

conda activate

⑤编辑环境变量

vi /etc/profile

添加以下内容

export ANACONDA_HOME=/opt/installs/anaconda3

export PATH=PATH:ANACONDA_HOME/bin

⑥刷新环境变量,并且做一个软链接

刷新环境变量

source /etc/profile

创建软连接

ln -s /opt/installs/anaconda3/bin/python3 /usr/bin/python3

验证

echo $ANACONDA_HOME

三台服务器都安装Anaconda 都一样 安装步骤!!!

2.第二步:在bigdata01上安装spark

spark-3.1.2-bin-hadoop3.2.tgz放在了我的资源里,需要的自取!!!

①上传解压安装:上传安装包到/opt/modules

cd /opt/modules

tar -zxf spark-3.1.2-bin-hadoop3.2.tgz -C /opt/installs

②重命名

cd /opt/installs

mv spark-3.1.2-bin-hadoop3.2 spark-standalone

③构建软连接

ln -s spark-standalone spark

④在HDFS上创建程序日志存储目录

注意:!!!首先如果没有启动hdfs,需要启动一下

bash 复制代码
# 第一台机器启动HDFS
start-dfs.sh
# 创建程序运行日志的存储目录
hdfs dfs -mkdir -p /spark/eventLogs/

⑤修改配置文件:

spark-env.sh配置文件:

bash 复制代码
cd /opt/installs/spark/conf
mv spark-env.sh.template spark-env.sh
vim spark-env.sh

22行:申明JVM环境路径以及Hadoop的配置文件路径

export JAVA_HOME=/opt/installs/jdk

export HADOOP_CONF_DIR=/opt/installs/hadoop/etc/hadoop

60行左右

export SPARK_MASTER_HOST=bigdata01 # 主节点所在的地址

export SPARK_MASTER_PORT=7077 #主节点内部通讯端口,用于接收客户端请求

export SPARK_MASTER_WEBUI_PORT=8080 #主节点用于供外部提供浏览器web访问的端口

export SPARK_WORKER_CORES=1 # 指定这个集群总每一个从节点能够使用多少核CPU

export SPARK_WORKER_MEMORY=1g #指定这个集群总每一个从节点能够使用多少内存

export SPARK_WORKER_PORT=7078

export SPARK_WORKER_WEBUI_PORT=8081

export SPARK_DAEMON_MEMORY=1g # 进程自己本身使用的内存

export SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://bigdata01:9820/spark/eventLogs/ -Dspark.history.fs.cleaner.enabled=true"

Spark中提供了一个类似于jobHistoryServer的进程,就叫做HistoryServer, 用于查看所有运行过的spark程序

spark-defaults.conf:Spark属性配置文件

bash 复制代码
mv spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf

末尾

spark.eventLog.enabled true

spark.eventLog.dir hdfs://bigdata01:9820/spark/eventLogs

spark.eventLog.compress true

workers:从节点地址配置文件

bash 复制代码
mv workers.template workers
vim workers

删掉localhost,添加以下内容

bigdata01

bigdata02

bigdata03

log4j.properties:日志配置文件

bash 复制代码
mv log4j.properties.template log4j.properties
vim log4j.properties

19行:修改日志级别为WARN

log4j.rootCategory=WARN, console

3.第三步:同步bigdata01中的spark到bigdata02和03上

  • 如果你bigdata01上有同步脚本,直接执行下面命令即可:
bash 复制代码
# 同步spark-standalone
xsync.sh /opt/installs/spark-standalone/
# 同步软链接
xsync.sh /opt/installs/spark
  • 如果没有,需要按照上面bigdata01的步骤在bigdata02 bigdata03上再安装一遍。

三、集群启动/关闭

  1. 启动master:

    bash 复制代码
    cd /opt/installs/spark
    sbin/start-master.sh
  2. 启动所有worker:

    bash 复制代码
    sbin/start-workers.sh
  3. 启动日志服务:

    bash 复制代码
    sbin/start-history-server.sh
  4. 要想关闭某个服务,将start换为stop

四、打开监控界面验证

master监控界面:http://bigdata01:8080/

日志服务监控界面:http://bigdata01:18080/

相关推荐
库库的数据库笔记33 分钟前
国产信创数据库的MySQL兼容性深度对比解析
大数据·数据库·mysql·oceanbase·政务
Elastic 中国社区官方博客2 小时前
我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic
java·大数据·开发语言·elasticsearch·搜索引擎·全文检索·es
珠海西格电力3 小时前
零碳园区管理系统的性能评估体系的行业标准
大数据·网络·人工智能·物联网·机器学习·架构·能源
杨先生哦3 小时前
SOC告警研判实战:海量告警降噪、误报甄别、内网风险处置全流程(上岗必用)
大数据
一线数智4 小时前
朱鹰:人的判断力,比算力更重要
大数据·人工智能
用户3610588626124 小时前
Flink ResourceManager启动流程源码深度剖析:从ClusterEntrypoint到Slot分配的完整链路
大数据
用户3610588626125 小时前
Flink ApplicationMaster启动流程源码深度剖析:从YARN提交到JobMaster启动的完整链路
大数据·flink
初心未改HD6 小时前
DSH Skill开发实战:SKILL.md是给LLM看的操作手册,不是给人看的README,踩了4个坑
java·大数据·开发语言
程序 代码狂人6 小时前
据仓库常见表类型详解(面试完整版,金融数仓适用)
大数据
阿里云大数据AI技术6 小时前
云栖实录|Hologres 5.0全新发布:Agent Native 的全模态实时数仓
大数据·人工智能·agent