当前位置: 首页 > article >正文

Spark的集群环境部署

一、Standalone集群

1.1、架构

架构:普通分布式主从架构 
主:Master:管理节点:管理从节点、接客、资源管理和任务 
调度,等同于YARN中的ResourceManager 
从:Worker:计算节点:负责利用自己节点的资源运行主节点 
分配的任务 
功能:提供分布式资源管理和任务调度,基本上与YARN是一致的

1.2、部署 

1.2.1环境

需要在三台机器上都安装python3的环境,若是没有可以下载一下

pip install python3

没有环境则会报这个错误

若是有其他工具需要用到不同版本的python环境,就安装一个Anaconda用来模拟环境,安装包在百度网盘
链接:https://pan.baidu.com/s/1b8FqR8BZ8QfMfGmMzepcAw?pwd=1234 
提取码:1234

上传,或者同步:
xsync.sh /opt/modules/Anaconda3-2021.05-Linux-x86_64.sh
# 添加执行权限
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
# 添加以下内容
# Anaconda Home
export ANACONDA_HOME=/opt/installs/anaconda3
export PATH=$PATH:$ANACONDA_HOME/bin
# 刷新环境变量
source /etc/profile

1.2.2安装spark

在第一台机器上进行部署

# 上传之后解压安装
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
# 重新构建软连接
rm -rf spark  #之前创建过名字为spark的就删除一下,没有就跳过
ln -s spark-standalone spark

修改 spark-env.sh配置文件:

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程序

在HDFS上创建程序日志存储目录。首先如果没有启动hdfs,需要启动一下

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

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

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:从节点地址配置文件

mv workers.template workers
vim workers

# 删掉localhost,添加以下内容
bigdata01
bigdata02
bigdata03

log4j.properties:日志配置文件

mv log4j.properties.template log4j.properties
vim log4j.properties

 #这一步是为了在运行过程中不显示那么多没用的提示

# 19行:修改日志级别为WARN
log4j.rootCategory=WARN, console

log4j的5种 级别  debug --> info --> warn --error -->fatal

把安装的spark同步到第二台以及第三胎机器上 ,不要忘记创建软连接

1.3、启动集群

启动master:
cd /opt/installs/spark
sbin/start-master.sh
启动所有worker:
sbin/start-workers.sh
如果你想启动某一个worker
sbin/start-worker.sh

启动日志服务:
sbin/start-history-server.sh

要想关闭某个服务,将start换为stop

1.4、监控集群

master监控界面:

http://bigdata01:8080/

 二、Yarn模式

为什么要将Spark的程序运行在YARN上,不运行在自带的 Standalone集群上?
1、统一化资源管理 
Standalone是Spark专用的资源管理集群,只能用于运行 Spark程序 
YARN是功能的分布式资源管理平台,可以运行各种分布式程 序:MR、Tez、Spark、Flink 
工作中硬件集群只有一套,只能选择一个平台来管理,从整个技术架构来说选择YARN更合适
2、YARN调度机制更加完善和成熟 
支持动态资源分配以及多种调度机制,比如容量调度、公平调度。

2.1、关闭以前的StandAlone老集群

cd /opt/installs/spark
sbin/stop-master.sh
sbin/stop-workers.sh
sbin/stop-history-server.sh

2.2、配置第一台服务器

每一个模式使用一个安装包,这样以后要使用那个模式,将软连接修改成对应文件夹就行

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-yarn
rm -rf /opt/installs/spark
ln -s /opt/installs/spark-yarn /opt/installs/spark

2.3、配置环境

修改spark-env.sh配置文件

cd /opt/installs/spark/conf
mv spark-env.sh.template spark-env.sh
vim /opt/installs/spark/conf/spark-env.sh
## 22行左右设置JAVA安装目录、HADOOP和YARN配置文件
目录
export JAVA_HOME=/opt/installs/jdk
export HADOOP_CONF_DIR=/opt/installs/hadoop/etc/hadoop
export YARN_CONF_DIR=/opt/installs/hadoop/etc/hadoop
## 历史日志服务器
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-defaults.conf 文件:

cd /opt/installs/spark/conf
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
spark.yarn.historyServer.address bigdata01:18080
spark.yarn.jars           hdfs://bigdata01:9820/spark/jars/*

修改log4j.properties

mv log4j.properties.template log4j.properties

修改级别为WARN,打印日志少一点。

上传spark jar包:

#因为YARN中运行Spark,需要用到Spark的一些类和方法
#如果不上传到HDFS,每次运行YARN都要上传一次,比较慢
#所以自己手动上传一次,以后每次YARN直接读取即可
hdfs dfs -mkdir -p /spark/jars/
hdfs dfs -put /opt/installs/spark/jars/* /spark/jars/

修改yarn-site.xml

cd /opt/installs/hadoop/etc/hadoop

检查以下内置少什么,就配什么。
<property>
  <name>yarn.log-aggregation-enable</name>
  <value>true</value>
</property>

<!-- 历史日志在HDFS保存的时间,单位是秒 -->
<!-- 默认的是-1,表示永久保存 -->
<property>
  <name>yarn.log-aggregation.retain-seconds</name>
  <value>604800</value>
</property>

<property>
  <name>yarn.log.server.url</name>
  <value>http://bigdata01:19888/jobhistory/logs</value>
</property>

<!-- 关闭yarn内存检查 -->
<property>
  <name>yarn.nodemanager.pmem-check-enabled</name>
  <value>false</value>
</property>
<property>
  <name>yarn.nodemanager.vmem-check-enabled</name>
  <value>false</value>
</property>

将yarn-site.xml的配置同步到另外两台机器上

2.4、启动集群

# 启动yarn
start-yarn.sh
# 启动MR的JobHistoryServer:19888
mapred --daemon start historyserver
# 启动Spark的HistoryServer:18080
/opt/installs/spark/sbin/start-history-server.sh


http://www.kler.cn/a/374837.html

相关文章:

  • 神经网络进行波士顿房价预测
  • websocket的使用
  • 图书管理系统汇报
  • Jedis操作和springboot整合redis
  • KKFileView v4.4.0文件预览服务 编译和window运行和nginx代理设置
  • 渗透测试-百日筑基—SQL注入篇时间注入绕过HTTP数据编码绕过—下
  • 自动化测试工具Ranorex Studio(十八)-调用用户定义的action
  • day-77 超级饮料的最大强化能量
  • .net Core 使用Panda.DynamicWebApi动态构造路由
  • qt QDoubleSpinBox详解
  • 第15课 算法(下)
  • 使用 Cloudreve 搭建你的专属个人网盘
  • 分布式 ID 生成策略(一)
  • 如何提高社媒品牌知名度,3个增加曝光的实操方法
  • 微信小程序服务通知
  • 【HarmonyOS NEXT】在 HarmonyOS NEXT 中实现优雅的加载动画
  • python 五子棋小游戏
  • GIN 反向代理功能
  • C/C++ 每日一练:二叉树的先序遍历
  • Webserver(2.6)信号
  • 信号完整性SI总结【小登培训】
  • OpenCV基础知识
  • DB-GPT系列(二):DB-GPT部署(镜像一键部署、源码部署)
  • C++ 代码工程化
  • 微信小程序,打开新的项目,调试遇见[ app.json 文件内容错误] app.json: 在项目根目录未找到 app.json
  • 【行业应用-工业防爆】本安型工业防爆网关,实现安全高效的数据传输与监控