Spark的Standalone集群环境安装

一.简介

与MR对比:

|------|--------------------|------------------|
| 概念 | MR+YARN | Spark Standalone |
| 主节点 | ResourceManager | Master |
| 从节点 | NodeManager | Worker |
| 计算进程 | MapTask,ReduceTask | Executor |

架构:普通分布式主从架构

主:Master:管理节点:管理从节点、接客、资源管理和任务

调度,等同于YARN中的ResourceManager

从:Worker:计算节点:负责利用自己节点的资源运行主节点

分配的任务

功能:提供分布式资源管理和任务调度,基本上与YARN是一致的

看起来很像yarn ,其实作用和yarn一样,是spark自带的计算引擎。

注意:集群环境的每一台服务器都要Annaconda ,否则会出现python3 找不到的错误!!

二.Standalone集群部署

使用的资源如下:虚拟机中使用的Anaconda,具体:Anaconda3-2021.05-Linux-x86-64,spark使用需要资源-CSDN文库

虚拟机使用的spark,详情:spark-3.1.2-bin-hadoop3.2.tgz资源-CSDN文库

首先在所有服务器按如下安装Anaconda:

bash 复制代码
上传,或者同步:
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
小结:实现Linux机器上使用Anaconda部署Python

3:单机部署:Spark Python Shell
目标:掌握Spark Shell的基本使用
实施
功能:提供一个交互式的命令行,用于测试开发Spark的程序代码
Spark的客户端bin目录下:提供了多个测试工具客户端
启动
核心
# 创建软连接
ln -s /opt/installs/anaconda3/bin/python3 /usr/bin/python3
# 验证
echo $ANACONDA_HOME

然后在自己使用的虚拟机上安装spark:

bash 复制代码
# 解压安装
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
ln -s spark-standalone spark

去修改spark配置文件:

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

修改如下:

bash 复制代码
export JAVA_HOME=/opt/installs/jdk
export HADOOP_CONF_DIR=/opt/installs/hadoop/etc/hadoop
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,需要启动一下

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

继续修改配置文件:

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

添加如下:"

bash 复制代码
# 末尾
spark.eventLog.enabled           true
spark.eventLog.dir              hdfs://bigdata01:9820/spark/eventLogs
spark.eventLog.compress              true

在workers:从节点地址配置文件

bash 复制代码
mv workers.template workers
vim workers
bash 复制代码
# 删掉localhost,添加自己的主机名
bigdata01
bigdata02
bigdata03

修改日志文件,可有可无

bash 复制代码
mv log4j.properties.template log4j.properties
vim log4j.properties
bash 复制代码
# 19行:修改日志级别为WARN
log4j.rootCategory=WARN, console

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

为什么要修改?因为我们运行的时候info非常多,比较影响体验,而且也不是报错,对我们一般来说也没什么用。所以把它修改成更高一级的warn。因此说这一步可有可无,做了可以优化使用体验,但是不做也没有任何影响。

同步集群:

bash 复制代码
xsync.sh /opt/installs/spark-standalone/

使用脚本:
虚拟机中使用的分发文件,和分发命令脚本资源-CSDN文库

可以直接把虚拟机的文件分发给集群中的其他机器

分发完成在其他机器创建软链接:

bash 复制代码
cd /opt/installs/
ln -s spark-standalone spark

换个思路,是否可以同步软链接:
xsync.sh /opt/installs/spark

集群启动:

bash 复制代码
启动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

master的监控页面:
http://bigdata01:8080/

其中bigdata换成自己的ip

至此搭建完毕,来个圆周率测试一下:

bash 复制代码
# 提交程序脚本:bin/spark-submit
/opt/installs/spark/bin/spark-submit --master spark://bigdata01:7077 /opt/installs/spark/examples/src/main/python/pi.py 200
相关推荐
zhixingheyi_tian3 小时前
Spark 之 Aggregate
大数据·分布式·spark
PersistJiao3 小时前
Spark 分布式计算中网络传输和序列化的关系(一)
大数据·网络·spark
宅小海6 小时前
scala String
大数据·开发语言·scala
小白的白是白痴的白6 小时前
11.17 Scala练习:梦想清单管理
大数据
java1234_小锋6 小时前
Elasticsearch是如何实现Master选举的?
大数据·elasticsearch·搜索引擎
Java 第一深情10 小时前
零基础入门Flink,掌握基本使用方法
大数据·flink·实时计算
MXsoft61810 小时前
华为服务器(iBMC)硬件监控指标解读
大数据·运维·数据库
PersistJiao11 小时前
Spark 分布式计算中网络传输和序列化的关系(二)
大数据·网络·spark·序列化·分布式计算
九河云11 小时前
如何对AWS进行节省
大数据·云计算·aws
FreeIPCC12 小时前
谈一下开源生态对 AI人工智能大模型的促进作用
大数据·人工智能·机器人·开源