基于Spark3.3.4版本,实现Spark On Yarn 模式部署

2024-06-17 12:44

本文主要是介绍基于Spark3.3.4版本,实现Spark On Yarn 模式部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、环境描述

二、部署Spark 节点

2.1 下载资源包

2.2 解压

2.3 配置

2.3.1 配置hadoop信息

2.3.1.1 修改yarn-site.xml

2.3.1.2 mapred-site.xml

2.3.2 配置spark-env.sh

2.3.3 配置spark-defaults.conf

2.4 分发

2.5 启动服务

2.5.1 启动hadoop集群

2.5.2 启动hadoop 的historyserver

2.5.2 启动spark 服务

2.5.2.1 新建目录

2.5.2.2 启动spark

2.6 测试

2.6.1 测试spark-shell

2.6.2 测试historyserver 服务


一、环境描述

系统环境描述:本教程基于CentOS 8.0版本虚拟机

Hadoop ha 集群环境说明:

机器节点信息:

Spark 集群环境说明:

机器节点信息:

注意: Spark On Yarn 需要基于 Hadoop 体系的 Yarn 调度框架,所以需要先启动Yarn 调度框架(不一定需要启动Hadoop)

二、部署Spark 节点

2.1 下载资源包

Spark 包下载地址:

Index of /dist/spark/spark-3.3.4 (apache.org)

注意:需要和Hadoop体系的版本要保持一致,我这里的Hadoop是3.3.4版本,所以,我的Spark 版本也需要是3.3.4版本。(关于hadoop部署,这里不作过多介绍,可以查看我的博文:一篇文章带你学会Hadoop-3.3.4集群部署_hdoop jdk3.3.4-CSDN博客

2.2 解压

tar -zxvf spark-3.3.4-bin-hadoop3.tgz

2.3 配置

2.3.1 配置hadoop信息

2.3.1.1 修改yarn-site.xml
<property><name>yarn.nodemanager.resource.memory-mb</name><value>4096</value>
</property>
<property><name>yarn.nodemanager.resource.cpu-vcores</name><value>4</value>
</property>
<property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value>
</property>

2.3.1.2 mapred-site.xml
<property><name>mapred.job.history.server.embedded</name><value>true</value>
</property>
<property><name>mapreduce.jobhistory.address</name><value>node3:10020</value>
</property>
<property><name>mapreduce.jobhistory.webapp.address</name><value>node3:50060</value>
</property>
<property><name>mapreduce.jobhistory.intermediate-done-dir</name><value>/work/mr_history_tmp</value>
</property>
<property><name>mapreduce.jobhistory.done-dir</name><value>/work/mr-history_done</value>
</property>

2.3.2 配置spark-env.sh

# 进入config目录
cd spark-3.3.4-bin-hadoop3/conf
# 重命名配置文件
mv spark-env.sh.template spark-env.sh
# 修改配置信息
vim spark-env.sh
#配置在首行即可,配置完这个spark就能知道rm,nm,以及hdfs等节点的地址
export JAVA_HOME=/usr/local/jdk1.8.0_211
export HADOOP_CONF_DIR=/usr/local/hadoop-3.3.4/etc/hadoop
export YARN_CONF_DIR=/usr/local/hadoop-3.3.4/etc/hadoop#配置历史服务器,切记端口是内部端口
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://mycluster/spark-logs
-Dspark.history.retainedApplications=30"

2.3.3 配置spark-defaults.conf

# 进入config目录
cd spark-3.3.4-bin-hadoop3/conf
# 重命名配置文件
mv spark-defaults.conf.template spark-defaults.conf
# 修改配置信息
vim spark-defaults.conf
# 开启spark的日期记录功能
spark.eventLog.enabled	true
#创建spark日志路径,待会儿要创建
spark.eventLog.dir	hdfs://mycluster/spark-logsspark.history.fs.logDirectory  hdfs://mycluster/spark-logs
spark.yarn.jars  hdfs://mycluster/work/spark_lib/jars/*

2.4 分发

将配置好的spark-3.3.4-bin-hadoop3 分发到其他服务器

# 分发spark 包 
scp -r /usr/local/spark-3.3.4-bin-hadoop3/ node3:/usr/local/
scp -r /usr/local/spark-3.3.4-bin-hadoop3/ node4:/usr/local/
# 分发修改的hadoop的yarn-site.xml 和 mapred-site.xml
scp -r yarn-site.xml node1:/usr/local/hadoop-3.3.4/etc/hadoop/
scp -r mapred-site.xml  node1:/usr/local/hadoop-3.3.4/etc/hadoop/scp -r yarn-site.xml node2:/usr/local/hadoop-3.3.4/etc/hadoop/
scp -r mapred-site.xml  node2:/usr/local/hadoop-3.3.4/etc/hadoop/scp -r yarn-site.xml node3:/usr/local/hadoop-3.3.4/etc/hadoop/
scp -r mapred-site.xml  node3:/usr/local/hadoop-3.3.4/etc/hadoop/scp -r yarn-site.xml node4:/usr/local/hadoop-3.3.4/etc/hadoop/
scp -r mapred-site.xml  node4:/usr/local/hadoop-3.3.4/etc/hadoop/

2.5 启动服务

2.5.1 启动hadoop集群

# 进去hadoop目录
cd /usr/local/hadoop-3.3.4/sbin
# 启动hadoop集群
start-all.sh start

2.5.2 启动hadoop 的historyserver

# 启动historyserver
mr-jobhistory-daemon.sh start historyserver

提示:如果执行mr-jobhistory-daemon.sh start historyserver 命令报如下错:

WARNING: Use of this script to start the MR JobHistory daemon is deprecated.
WARNING: Attempting to execute replacement "mapred --daemon start" instead.

则可以换一个执行命令执行:

mapred --daemon start historyserver

验证history 服务:

执行hadoop 自带的workcount 测试代码,首先先准备需要统计的文件内容:

然后上传到hdfs中:

hdfs dfs -put data3.txt /input/

执行提交命令,执行:

# 进入hadoop 样例代码目录
cd /usr/local/hadoop-3.3.4/share/hadoop/mapreduce
# 提交样例代码执行
hadoop jar hadoop-mapreduce-examples-3.3.4.jar workCount /input/data3.txt /output/

查看统计结果:

hdfs dfs -cat /output/result/part-r-00000

ok,执行成功了,我们看下yanr调度面板,看下history 历史服务数据,看能否查看,如果能查看,证明historyserver 服务没有问题:

我们发现,可以进入History查看里面执行情况了,那证明historyserver 服务部署成功。

注意:但是这只是hadoop体系的历史服务器,我们这里是部署spark,spark有自己的历史服务器,不是hadoop的历史服务器

2.5.2 启动spark 服务

2.5.2.1 新建目录
# 新建 spark-logs 日志文件
hadoop fs -mkdir /spark-logs
# 文件授权
hadoop fs -chmod 777 /spark-logs# 新建spark jar 包文件
hadoop fs -mkdir -p /work/spark_lib/jars
# 上传spark jars文件包
hadoop fs -put /usr/local/spark-3.3.4-bin-hadoop3/jars/* /work/spark_lib/jars

由图可见,目录创建成功了,相关文件也上传成功,接下来启动spark 服务

2.5.2.2 启动spark
# 启动spak-shell 分别在master、node3、node4中启动
bin/spark-shell --master yarn
# 启动 spark 历史服务器 在master、node3、node4中启动(看你在哪个节点执行测试就在哪个节点起吧,但是cluster模式下,都要起,主要作用是当执行节点关闭后,需要通过历史服务器查看执行记录和日志)
./sbin/start-history-server.sh start

2.6 测试

2.6.1 测试spark-shell

# 执行统计指令 在master中启动
sc.textFile("hdfs://mycluster/input/data3.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect().foreach(println)

运行情况:

(golang,1)                            
(hello,4)
(java,1)
(c++,1)
(pytion,1)

登录http://master:4040 查看

2.6.2 测试historyserver 服务

关闭node3节点的spak-shell进程,测试历史服务器:

我们可以看到,关闭node3节点的spak-shell进程后,我们发现刚才的调度记录,变成了History状态,点击History,发现也点击不进去,那么我们该如何查看到历史直接记录呢?我们可以通过历史服务器查看:

访问历史服务器:http://node3:18080/

点击上图中标注出来的记录,进去就能看到和之前一样的执行记录了:

今天Spark-3.3.4 On Yarn模式部署的相关内容就分享到这里,可以关注Spark专栏《Spark》,后续不定期分享相关技术文章。如果帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!

这篇关于基于Spark3.3.4版本,实现Spark On Yarn 模式部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069474

相关文章

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

Django之定时任务django-crontab的实现

《Django之定时任务django-crontab的实现》Django可以使用第三方库如django-crontab来实现定时任务的调度,本文主要介绍了Django之定时任务django-cront... 目录crontab安装django-crontab注册应用定时时间格式定时时间示例设置定时任务@符号

Python中edge-tts实现便捷语音合成

《Python中edge-tts实现便捷语音合成》edge-tts是一个功能强大的Python库,支持多种语言和声音选项,本文主要介绍了Python中edge-tts实现便捷语音合成,具有一定的参考价... 目录安装与环境设置文本转语音查找音色更改语音参数生成音频与字幕总结edge-tts 是一个功能强大的

Java实现按字节长度截取字符串

《Java实现按字节长度截取字符串》在Java中,由于字符串可能包含多字节字符,直接按字节长度截取可能会导致乱码或截取不准确的问题,下面我们就来看看几种按字节长度截取字符串的方法吧... 目录方法一:使用String的getBytes方法方法二:指定字符编码处理方法三:更精确的字符编码处理使用示例注意事项方

使用Python和PaddleOCR实现图文识别的代码和步骤

《使用Python和PaddleOCR实现图文识别的代码和步骤》在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等,PaddleOCR是百度开源的一款强大的OCR工具包,它集成了... 目录一、引言二、环境准备2.1 安装 python2.2 安装 PaddlePaddle2.3 安装

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

Android 实现一个隐私弹窗功能

《Android实现一个隐私弹窗功能》:本文主要介绍Android实现一个隐私弹窗功能,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 效果图如下:1. 设置同意、退出、点击用户协议、点击隐私协议的函数参数2. 《用户协议》、《隐私政策》设置成可点击的,且颜色要区分出来res/l

spring IOC的理解之原理和实现过程

《springIOC的理解之原理和实现过程》:本文主要介绍springIOC的理解之原理和实现过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、IoC 核心概念二、核心原理1. 容器架构2. 核心组件3. 工作流程三、关键实现机制1. Bean生命周期2.

Redis实现分布式锁全解析之从原理到实践过程

《Redis实现分布式锁全解析之从原理到实践过程》:本文主要介绍Redis实现分布式锁全解析之从原理到实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景介绍二、解决方案(一)使用 SETNX 命令(二)设置锁的过期时间(三)解决锁的误删问题(四)Re

Linux搭建单机MySQL8.0.26版本的操作方法

《Linux搭建单机MySQL8.0.26版本的操作方法》:本文主要介绍Linux搭建单机MySQL8.0.26版本的操作方法,本文通过图文并茂的形式给大家讲解的非常详细,感兴趣的朋友一起看看吧... 目录概述环境信息数据库服务安装步骤下载前置依赖服务下载方式一:进入官网下载,并上传到宿主机中,适合离线环境