#博学谷IT学习技术支持#
Spark是Apache开源的最顶级的框架,具有高性能等特点,本文主要介绍Spark的环境搭建,虚拟机用的是前几篇文章中搭建的Linux系统的虚拟机,详情请看Linux系统环境搭建,
另外再加上Spark框架使用到的的软件包地址:Spark软件包下载链接、Anaconda环境包
只需要将安装包上传到node1即可,后续操作都在node1节点上
cd /export/software
rz 上传
解压,将安装包解压到/export/server文件夹中
tar -zxf spark-3.1.2-bin-hadoop3.2.tgz -C /export/server/
为了后续方便访问spark文件夹,可以对文件夹进行更名,主要有两种方式,一种是创建软链接,另一种是修改文件夹名称,建议使用第一种方式,
先进入/export/server路径:cd /export/server方式一:
软连接方案: ln -s spark-3.1.2-bin-hadoop3.2 spark
方式二:
直接重命名: mv spark-3.1.2-bin-hadoop3.2 spark
Spark的local模式, 直接启动spark路径中bin目录下的spark-shell脚本
cd /export/server/spark/bin
./spark-shell
Spark的Web监控页面端口号为4040,可以通过浏览器访问
Spark是一个独立的框架,该框架支持Python和Java等较为主流的语言,我们主要使用python进行开发,需要安装PySpark库,该库主要供Python使用,类似Pandas一样,是一个库;同时还需要具备python环境,这里使用Anaconda环境。
Anaconda环境包可以直接从文章开头链接进行下载,也可以点击下方链接进行下载:Anaconda环境包,下载的文件名为:Anaconda3-2021.05-Linux-x86_64.sh
Annconda环境三台节点都需要安装的, 以下演示在node1安装, 其余两台也是安装相同的步骤进行安装,
cd /export/software
rz 上传Anaconda脚本环境
执行脚本:bash Anaconda3-2021.05-Linux-x86_64.sh
不断输入空格, 直至出现以下解压, 然后输入yes
此时, Anaconda需要下载相关的依赖包, 时间比较长, 耐心等待即可, 在等待中如果需要输入yes/no, 直接输入yes
配置anaconda的环境变量:
vim /etc/profile
##增加如下配置
export ANACONDA_HOME=/root/anaconda3/bin
export PATH=$PATH:$ANACONDA_HOME/bin
重新加载环境变量: source /etc/profile修改bashrc文件
sudo vim ~/.bashrc
添加如下内容:
export PATH=~/anaconda3/bin:$PATH
注意,当前连接node1的节点窗口需要重新启动,否则无法识别
输入 Python启动:
三个节点可以都安装pySpark,本质上只需要在node1安装,后续主要基于node1来进行本地测试
安装PySpark主要有两种方式:
直接安装PySpark,安装如下
使用pip安装PySpark,也可以指定版本安装:pip install pyspark==3.1.2
或者
指定清华镜像pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark==3.1.2或者本地安装:先将pyspark上传到node1 /export/software
cd /export/software
pip install pyspark-3.1.2.tar.gz
实操效果图 :
创建Conda环境安装PySpark,从终端创建新的虚拟环境
conda create -n pyspark_env python=3.8
创建虚拟环境后,新环境在 Conda 环境列表下可见,可以使用命令查看
conda env list
接着使用以下命令激活新创建的环境:
source activate pyspark_env
或者
conda activate pyspark_env
可以在新创建的环境中通过使用pip安装PySpark,它将pyspark_env在上面创建的新虚拟环境下安装 PySpark。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark==3.1.2
或者
可以从 Conda 本身安装 PySpark:
conda install pyspark==3.1.2
我们主要使用5.Spark on YARN的环境进行开发,所以需要进行相对应的设定
cd /export/server/spark/conf
cp spark-env.sh.template spark-env.sh
vim /export/server/spark/conf/spark-env.sh添加以下内容:
HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop
YARN_CONF_DIR=/export/server/hadoop/etc/hadoop
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://node1:8020/sparklog/ -Dspark.history.fs.cleaner.enabled=true"同步到其他两台(单节点时候, 不需要处理)
cd /export/server/spark/conf
scp -r spark-env.sh node2:$PWD
scp -r spark-env.sh node3:$PWD
cd /export/server/hadoop-3.3.0/etc/hadoop/
vim /export/server/hadoop-3.3.0/etc/hadoop/yarn-site.xml添加以下内容:
yarn.resourcemanager.hostname node1 yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.resource.memory-mb 20480 yarn.scheduler.minimum-allocation-mb 2048 yarn.nodemanager.vmem-pmem-ratio 2.1 yarn.log-aggregation-enable true yarn.log-aggregation.retain-seconds 604800 yarn.log.server.url http://node1:19888/jobhistory/logs yarn.nodemanager.pmem-check-enabled false yarn.nodemanager.vmem-check-enabled false
将其同步到其他两台
cd /export/server/hadoop/etc/hadoop
scp -r yarn-site.xml node2:$PWD
scp -r yarn-site.xml node3:$PWD
cd /export/server/spark/conf
cp spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf添加以下内容:
spark.eventLog.enabled true
spark.eventLog.dir hdfs://node1:8020/sparklog/
spark.eventLog.compress true
spark.yarn.historyServer.address node1:18080配置后, 需要在HDFS上创建 sparklog目录
hdfs dfs -mkdir -p /sparklog
设置日志级别:
cd /export/server/spark/conf
cp log4j.properties.template log4j.properties
vim log4j.properties修改以下内容:
若有多节点,则需要同步到其他节点
cd /export/server/spark/conf
scp -r spark-defaults.conf log4j.properties node2:$PWD
scp -r spark-defaults.conf log4j.properties node3:$PWD
当Spark Application应用提交运行在YARN上时,默认情况下,每次提交应用都需要将依赖Spark相关jar包上传到YARN 集群中,为了节省提交时间和存储空间,将Spark相关jar包上传到HDFS目录中,设置属性告知Spark Application应用;
hadoop fs -mkdir -p /spark/jars/
hadoop fs -put /export/server/spark/jars/* /spark/jars/
修改spark-defaults.conf
cd /export/server/spark/conf
vim spark-defaults.conf
添加以下内容:
spark.yarn.jars hdfs://node1:8020/spark/jars/*
同理,若有多节点,则需要同步到其他节点
cd /export/server/spark/conf
scp -r spark-defaults.conf root@node2:$PWD
scp -r spark-defaults.conf root@node3:$PWD
Spark Application运行在YARN上时,上述配置完成,运行Spark前需要启动以下服务:HDFS、YARN、MRHistoryServer和Spark HistoryServer,命令如下:
## 启动HDFS和YARN服务,在node1执行命令
start-dfs.sh
start-yarn.sh
或
start-all.sh
注意:在onyarn模式下不需要启动start-all.sh(jps查看一下看到worker和master)
## 启动MRHistoryServer服务,在node1执行命令
mr-jobhistory-daemon.sh start historyserver
## 启动Spark HistoryServer服务,,在node1执行命令
/export/server/spark/sbin/start-history-server.sh
Spark HistoryServer服务WEB UI页面地址:http://node1:18080/
我们还是使用圆周率PI程序进行测试,先将圆周率PI程序提交运行在YARN上,
SPARK_HOME=/export/server/spark
${SPARK_HOME}/bin/spark-submit \
--master yarn \
--conf "spark.pyspark.driver.python=/root/anaconda3/bin/python3" \
--conf "spark.pyspark.python=/root/anaconda3/bin/python3" \
${SPARK_HOME}/examples/src/main/python/pi.py \
10
运行完成在YARN 监控页面截图如下:
当pi应用在YARN上运行完成后,可以从8080 WEB 页面点击应用历史服务连接,查看应用运行状态信息。