Spark StandAlone模式集群部署

1. 软件准备

Anaconda:链接: https://pan.baidu.com/s/1JJKBdfXdkpx-WXkbtpr7GQ 提取码: aa3x
Spark:链接: https://pan.baidu.com/s/1lQ0kfQzzAQkOsOg1DzdFbQ 提取码: sp32

2. Anaconda 安装

  1. 执行如下命令安装 Anaconda
sh Anaconda3-2021.05-Linux-x86_64.sh

遇到操作时: 是否接受条款:yes => 自定义服务安装目录:/xxx/xxx => 是否初始化:yes

安装结束后,看到 base 即为安装成功,base是默认的虚拟环境:
在这里插入图片描述

  1. 修改源配置
vi ~/.condarc		# 修改为国内源,把下面内容直接粘上去
channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  1. 创建虚拟环境,并进入虚拟环境
conda create -n pyspark_env python=3.8		# 创建虚拟环境 pyspark, 基于Python 3.8

conda activate pyspark_env 		# 切换到虚拟环境内

pip install pyhive pyspark_env jieba -i https://pypi.tuna.tsinghua.edu.cn/simple   # 在虚拟环境内安装包

3. 安装Spark

  1. 将上传好的Spark软件包解压到指定目录,并修改属组:
tar -zxvf spark-3.2.0-bin-hadoop3.2.tgz -C /export/server/
chown -R root:root spark-3.2.0-bin-hadoop3.2/

由于 spark目录名称很长,给它创建一个软链接:

ln -s spark-3.2.0-bin-hadoop3.2/ spark
  1. 在 /etc/profile 添加环境变量:
export SPARK_HOME=/export/server/spark-3.2.0-bin-hadoop3.2
export PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark_env/bin/python3.8	 # 表示Spark想运行Python程序, 那么去哪里找python执行器 
export HADOOP_CONF_DIR=/export/server/hadoop-3.3.1/etc/hadoop
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

同样在 /root/.bashrc 里添加两个变量:

export JAVA_HOME=/export/server/jdk1.8.0_211
export PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark_env/bin/python3.8
  1. 配置配置文件: spark/conf 目录下
    配置 workers 文件,该文件是在 StandAlone 模式下,有哪些worker:
mv workers.template workers		# 改名, 去掉后面的.template后缀
vim workers			# 在里面添加如下配置项

# 将里面的localhost删除, 追加
Master
Slave

配置 spark-env.sh 文件:

mv spark-env.sh.template spark-env.sh
vim spark-env.sh		# 在里面添加如下配置项

## 设置JAVA安装目录
JAVA_HOME=/export/server/jdk1.8.0_211

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

## 指定spark老大Master的IP和提交任务的通信端口
export SPARK_MASTER_HOST=Master		# 告知Spark的master运行在哪个机器上
export SPARK_MASTER_PORT=7077		# 告知sparkmaster的通讯端口
SPARK_MASTER_WEBUI_PORT=8080		# 告知spark master的 webui端口

SPARK_WORKER_CORES=2		# worker cpu可用核数
SPARK_WORKER_MEMORY=2g		# worker可用内存
SPARK_WORKER_PORT=7078		# worker的工作通讯地址
SPARK_WORKER_WEBUI_PORT=8081		# worker的 webui地址

## 设置历史服务器
# 配置的意思是,将spark程序运行的历史日志,存到hdfs的/sparklog文件夹中
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://Master:9000/sparklog/ -Dspark.history.fs.cleaner.enabled=true"

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

hadoop fs -ls /			# 先查看下hdfs有没有sparklog文件目录,没有的话就创建
hadoop fs -mkdir /sparklog		
hadoop fs -chmod 777 /sparklog

配置 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://Master:9000/sparklog/ 
# 设置spark日志是否启动压缩
spark.eventLog.compress 	true

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

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

# 修改参数
log4j.rootCategory=WARN, console		# 日志级别修改为WARN

最后一点:Master上相同的配置项改动,也要分发到集群的各个Slave节点。

4. 启动Spark

  1. 先启动历史服务器:
spark/sbin/start-history-server.sh
  1. 启动 Spark 的 Master 和 Worker 进程:
# 启动全部master和worker
spark/sbin/start-all.sh
# 停止全部
spark/sbin/stop-all.sh

# 或者可以一个个启动:
spark/sbin/start-master.sh		# 启动当前机器的master
spark/sbin/start-worker.sh		# 启动当前机器的worker

spark/sbin/stop-master.sh		# 停止当前机器的master
spark/sbin/stop-worker.sh		# 停止当前机器的worker
  1. 查看进程:
    在这里插入图片描述

5. 查看 Master 的WEB UI

默认端口master我们设置到了8080。如果端口被占用, 会顺延到8081 …;8082… 8083… 直到申请到端口为止。
可以在日志中查看, 具体顺延到哪个端口上:

Service ‘MasterUI’ could not bind on port 8080. Attempting port 8081

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值