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

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...