1. 软件准备
Anaconda:链接: https://pan.baidu.com/s/1JJKBdfXdkpx-WXkbtpr7GQ 提取码: aa3x
Spark:链接: https://pan.baidu.com/s/1lQ0kfQzzAQkOsOg1DzdFbQ 提取码: sp32
2. Anaconda 安装
- 执行如下命令安装 Anaconda
sh Anaconda3-2021.05-Linux-x86_64.sh
遇到操作时: 是否接受条款:yes => 自定义服务安装目录:/xxx/xxx => 是否初始化:yes
安装结束后,看到 base 即为安装成功,base是默认的虚拟环境:
- 修改源配置
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
- 创建虚拟环境,并进入虚拟环境
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
- 将上传好的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
- 在 /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
- 配置配置文件: 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
- 先启动历史服务器:
spark/sbin/start-history-server.sh
- 启动 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
- 查看进程:
5. 查看 Master 的WEB UI
默认端口master我们设置到了8080。如果端口被占用, 会顺延到8081 …;8082… 8083… 直到申请到端口为止。
可以在日志中查看, 具体顺延到哪个端口上:
Service ‘MasterUI’ could not bind on port 8080. Attempting port 8081