大数据之Spark环境搭建
创始人
2025-05-31 00:28:09
0

文章目录

  • 前言
  • 一、Spark软件安装
    • (一)安装包上传并解压
    • (二)Spark文件夹更名
    • (三)目录结构说明
    • (四)测试
  • 二、 PySpark环境安装
    • (一)下载Anaconda环境包
    • (二)安装Anaconda环境
    • (三)启动Anaconda并测试
    • (四)PySpark安装
  • 三、Spark on YARN 环境搭建
    • (一)修改spark-env.sh
    • (二)修改hadoop的yarn-site.xml
    • (三)Spark设置历史服务地址
    • (四)配置依赖spark jar包
    • (五)启动服务
    • (六)提交测试


前言

#博学谷IT学习技术支持#
Spark是Apache开源的最顶级的框架,具有高性能等特点,本文主要介绍Spark的环境搭建,虚拟机用的是前几篇文章中搭建的Linux系统的虚拟机,详情请看Linux系统环境搭建,
另外再加上Spark框架使用到的的软件包地址:Spark软件包下载链接、Anaconda环境包

一、Spark软件安装

(一)安装包上传并解压

只需要将安装包上传到node1即可,后续操作都在node1节点上

cd /export/software
rz 上传

在这里插入图片描述
解压,将安装包解压到/export/server文件夹中

tar -zxf spark-3.1.2-bin-hadoop3.2.tgz  -C /export/server/

在这里插入图片描述

(二)Spark文件夹更名

为了后续方便访问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,可以通过浏览器访问
在这里插入图片描述

二、 PySpark环境安装

Spark是一个独立的框架,该框架支持Python和Java等较为主流的语言,我们主要使用python进行开发,需要安装PySpark库,该库主要供Python使用,类似Pandas一样,是一个库;同时还需要具备python环境,这里使用Anaconda环境。

(一)下载Anaconda环境包

Anaconda环境包可以直接从文章开头链接进行下载,也可以点击下方链接进行下载:Anaconda环境包,下载的文件名为:Anaconda3-2021.05-Linux-x86_64.sh

(二)安装Anaconda环境

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

(三)启动Anaconda并测试

注意,当前连接node1的节点窗口需要重新启动,否则无法识别
输入 Python启动:
在这里插入图片描述

(四)PySpark安装

三个节点可以都安装pySpark,本质上只需要在node1安装,后续主要基于node1来进行本地测试
安装PySpark主要有两种方式:

  1. 直接安装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
    

    实操效果图 :在这里插入图片描述

  2. 创建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
    

三、Spark on YARN 环境搭建

我们主要使用5.Spark on YARN的环境进行开发,所以需要进行相对应的设定

(一)修改spark-env.sh

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

(二)修改hadoop的yarn-site.xml

cd /export/server/hadoop-3.3.0/etc/hadoop/
vim /export/server/hadoop-3.3.0/etc/hadoop/yarn-site.xml添加以下内容:
yarn.resourcemanager.hostnamenode1yarn.nodemanager.aux-servicesmapreduce_shuffleyarn.nodemanager.resource.memory-mb20480yarn.scheduler.minimum-allocation-mb2048yarn.nodemanager.vmem-pmem-ratio2.1yarn.log-aggregation-enabletrueyarn.log-aggregation.retain-seconds604800yarn.log.server.urlhttp://node1:19888/jobhistory/logsyarn.nodemanager.pmem-check-enabledfalseyarn.nodemanager.vmem-check-enabledfalse

将其同步到其他两台

cd /export/server/hadoop/etc/hadoop
scp -r yarn-site.xml node2:$PWD
scp -r yarn-site.xml node3:$PWD

(三)Spark设置历史服务地址

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 jar包

当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 页面点击应用历史服务连接,查看应用运行状态信息。
在这里插入图片描述

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...