大数据 - Spark系列《十四》- spark集群部署模式

 Spark系列文章:

大数据 - Spark系列《一》- 从Hadoop到Spark:大数据计算引擎的演进-CSDN博客

大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置-CSDN博客

大数据 - Spark系列《三》- 加载各种数据源创建RDD-CSDN博客

大数据 - Spark系列《四》- Spark分布式运行原理-CSDN博客

大数据 - Spark系列《五》- Spark常用算子-CSDN博客

大数据 - Spark系列《六》- RDD详解-CSDN博客

大数据 - Spark系列《七》- 分区器详解-CSDN博客

大数据 - Spark系列《八》- 闭包引用-CSDN博客

大数据 - Spark系列《九》- 广播变量-CSDN博客

大数据 - Spark系列《十》- rdd缓存详解-CSDN博客

大数据 - Spark系列《十一》- Spark累加器详解-CSDN博客

大数据 - Spark系列《十二》- 名词术语理解-CSDN博客

大数据 - Spark系列《十三》- spark调度流程(运行过程)-CSDN博客

目录

Spark 程序分布式运行模式  

  14.1.1 🥙本地测试模式

14.1.2 StandAlone模式

  集群安装步骤

spark-submit脚本方式提交

14.1.3 Yarn 模式:client vs cluster模式

  1. 简介  

  2. 🥙 client模式  

  🍠Cluster和client模式的区别

  14.1.4 Mesos/k8s

  Mesos模式:

  Kubernetes模式:


Spark 程序分布式运行模式  

当运行 Spark 程序时,可以选择不同的部署模式,具体取决于集群管理系统和资源调度器。以下是常见的 Spark 程序分布式运行模式:

  • 本地测试模式

  • Standalone模式(Client/cluster): spark内置的运行集群

  • Yarn 模式(Client/cluster):在yarn上运行

  • Mesos/k8s : 在mesos集群或者k8s集群上运行

  14.1.1 🥙本地测试模式

  Idea中

val conf = new SparkConf().setAppName("doe").setMaster("local[*]")

   虚拟机环境中 (安装包解压即可)

[root@doe01 bin]# ./spark-shell 
Welcome to____              __/ __/__  ___ _____/ /___\ \/ _ \/ _ `/ __/  '_//___/ .__/\_,_/_/ /_/\_\   version 3.3.2/_/
scala> val rdd = sc.makeRDD(List(1,2,3,4,5,6) , 2)
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at makeRDD at <console>:23

14.1.2 StandAlone模式

  Spark standalone是一个类似于yarn的资源调度集群,属于spark自己的集群管理 , 规模小, 不通用 ;它构建一个基于 Master+Slaves 的资源调度集群,Spark 任务提交给 Master运行。生产中一般不使用.

  

  集群安装步骤

1. 上传安装包解压  

  2. 修改conf下的spark-env.sh  

export JAVA_HOME=/opt/apps/jdk1.8
export HADOOP_CONF_DIR=/opt/apps/hadoop-3.1.1/
export YARN_CONF_DIR=/opt/apps/hadoop-3.1.1/

   

  3. 修改conf下的workers文件,添加worker节点  

hadoop01
hadoop02
hadoop03

  

  4. 将安装包分发到其他节点  

Scp  -r  

  5. 修改系统环境变量  

vi  /etc/profileexport SPARK_HOME=/opt/apps/spark-3.3.2-bin-hadoop3
export  PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$FLUME_HOME/bi
n:$SQOOP_HOME/bin:$HBASE_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin
source /etc/profile

  6. 修改sbin下的指令名  

sbin目录下的start-all.sh和stop-all.sh和Hadoop的指令冲突

修改成start-spark.sh stop-spark.sh

  

  7. 启动standalone集群  

sbin/start-spark.sh
Jps   可观察到Master  worker 进程

 在浏览器上访问 : http://hadoop02:8080

  

此界面是standalone集群的监控界面

而每一个application都有一个自己的监控页面

spark-submit脚本方式提交

将自己的程序打包

  

注意代码中不用指定运行模式和appName

// conf.setAppName("").setMaster()

上传到虚拟机 , 然后将程序提交到 spark自己的集群上 

./spark-submit  --master  spark://hadoop02:7077  \--name test_cf  \--executor-cores  2 \--executor-memory  2G \--class com.doit.day0201.CommonFriend_HDFS  \/opt/testDemo/Spark_module-1.0-SNAPSHOT.jar

  

14.1.3 Yarn 模式client vs cluster模式

  1. 简介  

YARN(Yet Another Resource Negotiator)是Apache Hadoop的资源管理器,Spark可以作为YARN应用程序在Hadoop集群上运行。在YARN模式下,Spark应用程序可以以两种方式运行:

  • Client模式:Driver程序运行在提交作业的客户端机器上。

  • Cluster模式:Driver程序运行在YARN集群中的一个容器内,由YARN资源管理器负责资源调度和任务执行。

  2. 🥙 client模式  

如果部署模式为 client,程序jar包可以放在本地磁盘, 程序初始化是在本地的SparkSubmit中的Driver中进行的

# cluster模式完整示例
# Usage: spark-submit [options] <app jar | python file | R file> [app arguments]
# 注意,cluster模式时,spark-submit先请求standalone获取资源启动driver,然后driver要请求standalone获取资源启动executor(需要jar包)
# 要提前将jar包放到hdfs
bin/spark-submit --master spark://doit01:7077  \
--deploy-mode cluster  \
--class cn.doitedu.spark.WordCount  \
--name "帅无边男人的帅无边程序"  \
--driver-memory 1G  \
--executor-memory 2G   \
--executor-cores  2 \
--total-executor-cores   6  \
hdfs://doit01:8020/sparkjars/sparktest.jar  hdfs://doit01:8020/sparktest/wordcount/input hdfs://doit01:8020/sparktest/wordcount/output3

运行起来后,集群中会出现如下独立的进程:

如果部署模式是cluster,DriverWrapper是在某个Worker节点上运行的!所以不使用提交作业机器的内存来做程序的初始化! 

  🍠Cluster和client模式的区别

  区别在于Driver端创建的位置不同。工作过程中用cluster模式

  14.1.4 Mesos/k8s

  1.   Mesos模式:

  在Mesos模式下,Mesos作为资源管理器分配资源给Spark应用程序。Mesos负责在集群中启动和管理Executor容器,并分配资源给这些Executor容器以执行Spark任务。

  1.   Kubernetes模式:

  在Kubernetes模式下,Kubernetes作为容器编排平台管理Spark应用程序的资源。Kubernetes启动和管理Executor容器,并根据Spark应用程序的需求动态调整资源。与Mesos模式类似,Kubernetes模式也提供了一种灵活且可扩展的方式来运行Spark作业。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/278030.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《前端系列》之前端学习路线

目录 1 前言2 前端学习路线2.1 入门阶段2.1.1 HTML2.1.2 CSS2.1.3 JavaScript2.1.4 网络基础 2.2 基础阶段2.2.1 前端框架2.2.2 深入JavaScript2.2.3 ES62.2.4 工程化知识 2.3 进阶阶段2.3.1 CSS2.3.2 Javascript2.3.3 单元测试2.3.4 性能优化 3 总结 1 前言 在技术更新迭代发…

Python数学建模-2.5Pandas库介绍

2.5.1Pandas基本操作 Pandas是一个强大的Python数据分析库&#xff0c;它提供了快速、灵活且富有表现力的数据结构&#xff0c;设计初衷是为了处理关系型或标记型数据。Pandas的基本操作涵盖了数据的读取、处理、筛选、排序、分组、合并以及可视化等多个方面。 以下是一些Pan…

【从零开始学习数据结构 | 第一篇】树

目录 前言&#xff1a; 树&#xff1a; 树结点之间的关系描述&#xff1a; 树的常见属性&#xff1a; 森林&#xff1a; ​编辑树的性质&#xff1a; 总结&#xff1a; 前言&#xff1a; 当谈论数据结构时&#xff0c;树&#xff08;Tree&#xff09;是一种极为重要且常…

测试人员Bug书写规范

&#x1f4cb; 个人简介 作者简介&#xff1a;大家好&#xff0c;我是凝小飞&#xff0c;软件测试领域作者支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 在测试人员日常工作中&#xff0c;关于bug的编写和定义是一个比较经常的工作&#xff0c;如果bug编写描…

在Linux/Ubuntu/Debian中使用7z压缩和解压文件

要在 Ubuntu 上使用 7-Zip 创建 7z 存档文件&#xff0c;你可以使用“7z”命令行工具。 操作方法如下&#xff1a; 安装 p7zip&#xff1a; 如果你尚未在 Ubuntu 系统上安装 p7zip&#xff08;7-Zip 的命令行版本&#xff09;&#xff0c;你可以使用以下命令安装它&#xff1a;…

研究生总结

Note:本博客更多是关于自己的感悟&#xff0c;没有翻阅文件详细查证&#xff0c;如果存在错过&#xff0c;也请提出指正。 1. 半监督回归 相比于半监督分类&#xff0c;半监督回归相对冷门。回归和分类之间有着难以逾越的天谴&#xff0c;预测精度。分类中的类别是可数的&…

JS原型和原型链的理解

原型链图&#xff0c;图中Parent是构造函数&#xff0c;p1是通过Parent实例化出来的一个对象 前置知识 js中对象和函数的关系&#xff0c;函数其实是对象的一种 函数、构造函数的区别&#xff0c;任何函数都可以作为构造函数&#xff0c;但是并不能将任意函数叫做构造函数&…

C语言快速入门之内存函数的使用和模拟实现

1.memcpy 它可以理解为memory copy的组合&#xff0c;memory有记忆的意思&#xff0c;这里指的是内存&#xff0c;copy是拷贝&#xff0c;这个函数是针对内存块进行拷贝的 函数原型 void* memcpy(void* destination,const void* source, size_t num); 从source位置开始&am…

【开源鸿蒙】模拟运行OpenHarmony轻量系统QEMU RISC-V版

文章目录 一、准备工作1.1 编译输出目录简介 二、QEMU安装2.1 安装依赖2.2 获取源码2.3 编译安装2.4 问题解决 三、用QEMU运行OpenHarmony轻量系统3.1 qemu-run脚本简介3.2 qemu-run脚本参数3.3 qemu-run运行效果3.4 退出QEMU交互模式 四、问题解决五、参考链接 开源鸿蒙坚果派…

合并两个有序链表

问题描述&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xff1a;l1 [], l2 […

AJAX概念和axios使用、URL、请求方法和数据提交、HTTP协议、接口、form-serialize插件

AJAX概念和axios使用 AJAX概念 AJAX就是使用XMLHttpRequest对象与服务器通信&#xff0c;它可以使用JSON、XML、HTML和text文本等格式发送和接收数据&#xff0c;AJAX最吸引人的就是它的异步特性&#xff0c;也就是说它可以在不重新刷新页面的情况下与服务器通信&#xff0c;…

vulhub中GitLab 任意文件读取漏洞复现(CVE-2016-9086)

GitLab是一款Ruby开发的Git项目管理平台。在8.9版本后添加的“导出、导入项目”功能&#xff0c;因为没有处理好压缩包中的软连接&#xff0c;已登录用户可以利用这个功能读取服务器上的任意文件。 环境运行后&#xff0c;访问http://your-ip:8080即可查看GitLab主页&#xff0…

【鸿蒙HarmonyOS开发笔记】状态管理入门

状态管理 为了方便开发者管理组件状态&#xff0c;ArkTS 提供了一系列状态相关的装饰器&#xff0c;例如State&#xff0c;Prop&#xff0c;Link&#xff0c;Provide和Consume等等。 State State用于装饰当前组件的状态变量&#xff0c;State装饰的变量发生变化时会驱动当前组…

uniapp移动端 IOS系统下无法与webview通信

不知道有没有人遇到过这个问题 我的页面嵌套了一个webview&#xff08;文件位于项目的hybrif/html&#xff09;目录下 使用evalJS与webview进行通信 代码如下 在安卓里运行是没问题的&#xff0c;但在苹果手机上一直无法通信 连接真机&#xff0c;打印evalJS是个方法&#xf…

Blocks —— 《Objective-C高级编程 iOS与OS X多线程和内存管理》

目录 Blocks概要什么是BlocksOC转C方法关于几种变量的特点 Blocks模式Block语法Block类型 变量截获局部变量值__block说明符截获的局部变量 Blocks的实现Block的实质 Blocks概要 什么是Blocks Blocks是C语言的扩充功能&#xff0c;即带有局部变量的匿名函数。 顾名思义&#x…

email + celery+django 异步发送邮件功能的实现

主要流程&#xff1a; django通过发件服务器到收件服务器&#xff0c;最后到收件人 邮件配置设置需要打开SMTP/IMAP并获的授权码&#xff0c;完成授权功能实现发送给收件人 邮件配置请参考另一博客https://blog.csdn.net/qq_44238024/article/details/136277821 项目结构树…

【Linux杂货铺】进程的基本概念

目录 &#x1f308;前言&#x1f308; &#x1f4c1;进程的概念 &#x1f4c2;描述进程-PCB &#x1f4c2; 查看进程 &#x1f4c2; 查看正在运行的程序 &#x1f4c2;杀死进程 &#x1f4c2;通过系统调用获取进程标识符 &#x1f4c2;通过系统调用创建进程 &#x1f…

纯 CSS 实现文字换行环绕效果

实现效果 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title><…

蓝桥杯并查集|路径压缩|合并优化|按秩合并|合根植物(C++)

并查集 并查集是大量的树&#xff08;单个节点也算是树&#xff09;经过合并生成一系列家族森林的过程。 可以合并可以查询的集合的一种算法 可以查询哪个元素属于哪个集合 每个集合也就是每棵树都是由根节点确定&#xff0c;也可以理解为每个家族的族长就是根节点。 元素集合…

Transformer的前世今生 day02(神经网络语言模型

神经网络语言模型 使用神经网络的方法&#xff0c;去完成语言模型的两个问题&#xff0c;下图为两层感知机的神经网络语言模型&#xff1a; 以下为预备概念 感知机 线性模型可以用下图来表示&#xff1a;输入经过线性层得到输出 线性层 / 全连接层 / 稠密层&#xff1a;假…