2024-02-21(Spark)

1.Spark程序中的相关端口

4040:是一个运行的Application在运行的过程中临时绑定的端口,用以查看当前任务的状态。4040被占用会顺延到4041,4042等。4040是一个临时端口,当前程序运行完成后,4040就会被注销。

4040和Driver相关联,一个Driver启动起来,一个4040端口就被绑定起来,并可以查看该程序的运行状态。

8080:默认情况是StandAlone下,Master角色(进程)的WEB端口,用以查看当前Master(集群)的状态。(Driver和Master是两个东西,Master进程用于管理集群,Driver用于管理某次运行的程序,某个Driver程序运行完成,其所绑定的4040端口释放,但不会影响到Master进程)

18080:默认是历史服务器的端口,由于每个程序运行完成后,4040端口就要被注销,在以后想回看某个程序的运行状态就可以通过历史服务器查看,历史服务器长期稳定运行,可供随时查看记录的程序的运行过程。

2.Spark程序运行的层次结构

在Spark程序中,一个Driver程序运行,会分为多个Job程序来执行;在一个Job程序中又可以分为多个阶段来执行;一个阶段又可以分为多个Task来执行(可以理解为多个线程并行执行)。

打扫学校举例eg:

3.StandAlone阶段小总结

StandAlone原理?

Master和Worker角色以独立进程的形式存在,并且它们之间相互通讯,组成Spark运行时环境(集群)

Spark角色在StandAlone中的分布?

Master角色:Master进程;Worker角色:Worker进程;Driver角色:以线程运行在Master进程中;Executor角色:以线程运行在Worker中。

StandAlone如何提交Spark应用?

bin/spark-submit -- master spark://server:7077

4040\8080\18080分别是什么?

4040是单个程序运行的时候绑定的端口可供查看本任务运行情况。

8080是Master进程运行时默认的WEB ui端口,Master是独立的进程,不和Worker也不和Driver绑定,所以Driver运行完不会影响Master进程的运行,Driver关闭不影响Master进程。

18080是历史服务器的端口,可以供我们查看历史运行的程序(Driver)的运行状态。

Job\State\Task的关系?

一个Spark程序会被分为多个子任务(Job)运行,每一个Job会被分为多个State(阶段)来运行,每一个State(阶段)内会被分为多个Task(线程)来执行具体的任务。

4.Spark StandAlone HA集群模式(其实就是高可用的StandAlone模式,引入了zookeeper来做主节点切换/“灾备”/“主备切换”)

Spark StandAlone集群是Master-Slaves架构的集群模式,和大部分主从结构集群一样会存在主节点故障的问题。

由于上述StandAlone集群模式存在的问题,引出了高可用HA

提出了基于zookeeper的Standby Master架构模式:zookeeper提供了一个Leader Election机制,利用这个机制可以保证虽然集群存在多个Master,但是只有一个Active的,其他都是Standby。当Active的Master出现故障时,另外Standby Master会被选举出来。由于集群的信息,包括Master,Driver和Application的信息都已经持久化到文件系统,因此在切换的过程中只会影响新Job的提交,对于正在进行的Job没有任何影响。加入zookeeper的集群架构如下图所示:

5.StandAlone HA的搭建

搭建很简单,就是在StandAlone集群模式的配置文件中修改一两个配置项就好了。

6.StandAlone HA的原理

基于zookeeper做状态的维护,开启多个Master进程,一个作为活跃Master,其他的作为备份,当活跃进程宕机了,备份的Master来接管。

7.Spark on YARN(重点)

出现背景:按照前面所述,如果我们想要一个稳定的用于生产的Spark环境,那么最优秀的选择是构建HA StandAlone集群。但是,在企业中服务器资源通常有限,不过许多企业基本上都有Hadoop集群,也就是会有YARN集群。因此,对于企业来说,在已有YARN集群的前提下单独的搭建Spark StandAlone集群,对资源的利用率不高,所以,在企业中,多数场景下,会将Spark运行到YARN集群中。

YARN本身是一个资源调度框架,负责对运行在内部的计算框架进行资源调度管理。

作为典型的计算框架,Spark本身也是直接运行在YARN中,并接受YARN调度的。

所以,对于Spark on YARN,无需部署Spark集群,只要找一台服务器,从当Spark的客户端,即可提交任务到YARN集群中运行。(部署的时候,无需前面所述:在每一台服务器上安装Spark,然后启动Master,启动Worker,以及zookeeper什么的。。。,只需要在已有的YARN集群的基础上,找到一台服务器,充当Spark的客户端就可以了)

8.Spark on YARN的本质

Master角色由YARN的ResourceManager来担任。

Worker角色由YARN的NodeManager来担任。

Driver角色运行在YARN容器内 或者 提交任务的客户端进程中。

真正干活的Executor运行在YARN提供的容器内。

Spark on YARN集群架构图示:

9.Spark on YARN只需要注意配置好两个环境变量,HADOOP_CONF_DIR和YARN_CONF_DIR就好了。Spark会根据这两个环境变量的值自行的去找诸如ResourceManager这些东西。

10.Spark on YARN个人认为就是借助已有的YARN集群平台,来做Spark集群分布式计算操作(把计算任务提交到YARN集群中,以Spark的模式去运行),目的就是节约服务器资源

11.Spark on YARN的两种运行模式(两种模式的区别就是Driver运行的位置)

一种是Cluster模式:Driver运行在YARN容器内部,和ApplicationMaster在同一个容器内

一种是Client模式:Driver运行在客户端进程中,比如Driver运行在Spark-submit程序的进程中

集群(Cluster)模式的优点:各NodeManager和Driver之间的通信成本低,效率高;缺点:不方便查看日志,因为Driver运行在某个容器当中,日志会输出到某个容器当中,因此在查看日志这个方面,客户端(Client)模式具有优势,不过客户端的通信性能当然就没有集群模式高了。

对比图:

两种模式对比总结

12.Spark on YARN两种模式的流程

客户端模式流程:

集群模式流程:

13.Spark on YARN小总结

Spark on YARN本质?

Master由ResourceManager代替

Worker由NodeManager代替

Driver可以运行容器内(Cluster模式)或者客户端进程中(Client模式)

Executor全部运行在YARN提供的容器内

为什么要用spark on YARN?

提高资源利用率,在已有YARN的场景下让Spark收到YARN的调度可以更好地管控资源提高利用率并方便管理。

14.类库和框架

类库:一堆别人写好的代码,你可以导入使用。

框架:可以独立运行,并提供编程结构的一种软件产品,Spark就是一个独立的框架。

15.PySpark

前面使用的bin/pyspark程序,注意这是一个应用程序,提供一个python解释器执行环境来运行spark任务

而PySpark,指的是Python的运行类库,就是可以在python代码中:import pyspark; 这种操作

概念:PySpark是Spark官方提供的一个Python类库,内置了完全的Spark API,可以通过PySpark类库来编写Spark应用程序,并将其提交到Spark集群中运行。

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

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

相关文章

防火墙——计算机网络

前述基于密码的安全机制不能有效解决以下安全问题: 用户入侵: 利用系统漏洞进行未授权登录; 授权用户非法获取更高级别权限等。 软件入侵: 通过网络传播病毒、蠕虫和特洛伊木马。 拒绝服务攻击等。 解决方法: 防火墙&a…

基于多种机器学习模型的西北地区蒸散发模拟与趋势分析_季鹏_2023

基于多种机器学习模型的西北地区蒸散发模拟与趋势分析_季鹏_2023 摘要关键词 1 资料和方法1. 1 研究区域与观测数据1. 2 机器学习模型构建与验证方法1. 3 SHAP 可解释性方法 2 主要结果2. 1 不同模型的模拟性能和泛化能力2. 2 不同模型的可解释性分析2. 3 5 km 分辨率格点蒸散发…

Linux内核解读

来自鹅厂架构师 作者:aurelianliu 工作过程中遇到的调度、内存、文件、网络等可以参考。 1.os运行态 X86架构,用户态运行在ring3,内核态运行在ring0,两个特权等级。 (1)内核、一些特权指令,例…

强化学习(GPS)

GPS——Guided Policy Search引导策略搜索 GPS目前被作为基础算法广泛应用于各种强化学习任务中,其出发点在于纯粹的策略梯度方法在更新参数时不会用到环境模型因而属于一种无模型强化学习算法。由于没有利用任何环境的内在属性,使得其训练只能完全依靠…

【开源】在线办公系统 JAVA+Vue.js+SpringBoot+MySQL

目录 1 功能模块1.1 员工管理模块1.2 邮件管理模块1.3 人事档案模块1.4 公告管理模块 2 系统展示3 核心代码3.1 查询用户3.2 导入用户3.3 新增公告 4 免责声明 本文项目编号: T 001 。 \color{red}{本文项目编号:T001。} 本文项目编号:T001。…

Docker Compose映射卷的作用是什么,dockerfile这个文件有什么区别和联系?

Docker Compose中映射卷(Volumes)的作用和Dockerfile之间既有区别也有联系。下面详细解释两者的作用、区别和联系: Docker Compose映射卷的作用 在Docker Compose中,卷(Volumes)用于数据持久化和数据共享…

沁恒CH32V30X学习笔记11---使用外部时钟模式2采集脉冲计数

使用外部时钟模式2采集脉冲计数 使用外部触发模式 2 能在外部时钟引脚输入的每一个上升沿或下降沿计数。将 ECE 位置位时,将使用外部时钟源模式 2。使用外部时钟源模式 2 时,ETRF 被选定为 CK_PSC。ETR 引脚经过可选的反相器(ETP),分频器(ETPS)后成为 ETRP,再经过滤波…

Excel练习:日历

Excel练习:日历 ‍ 题目:制作日历 ‍ ​​ 用rows和columns函数计算日期单元格偏移量 一个公式填充所有日期单元格 ​​ ‍

PyTorch使用Tricks:学习率衰减 !!

文章目录 前言 1、指数衰减 2、固定步长衰减 3、多步长衰减 4、余弦退火衰减 5、自适应学习率衰减 6、自定义函数实现学习率调整:不同层不同的学习率 前言 在训练神经网络时,如果学习率过大,优化算法可能会在最优解附近震荡而无法收敛&#x…

LDRA Testbed软件静态分析_软件质量度量

系列文章目录 LDRA Testbed软件静态分析_操作指南 LDRA Testbed软件静态分析_自动提取静态分析数据生成文档 LDRA Testbed软件静态分析_Jenkins持续集成_(1)自动进行静态分析的环境搭建 LDRA Testbed软件静态分析_Jenkins持续集成_(2)配置邮件自动发送静态分析结果 LDRA Testb…

Qt C++春晚刘谦魔术约瑟夫环问题的模拟程序

什么是约瑟夫环问题? 约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N6,M5,被杀掉的顺序是:5&#xff…

离线升级esp32开发板升级包esp32-2.0.14(最新版已经3.0alpha了)

1.Arduino IDE 2.3.2最新 2024.2.20升级安装:https://www.arduino.cc/en/software 2.开发板地址 地址(esp8266,esp32) http://arduino.esp8266.com/stable/package_esp8266com_index.json,https://raw.githubusercontent.com/espressif/arduino-esp32…

09MARL深度强化学习policy gradient

文章目录 前言1、Multi-Agent Policy Gradient Theorem2、Centralised State-Value Critics2、Centralised Action-Value Critics 前言 Independent learning算法当中每个智能体看待其他智能体为环境的一部分,加剧了环境非平稳性,而CTDE框架的算法能够降…

HTTP的详细介绍

目录 一、HTTP 相关概念 二、HTTP请求访问的完整过程 1、 建立连接 2、 接收请求 3、 处理请求 3.1 常见的HTTP方法 3.2 GET和POST比较 4、访问资源 5、构建响应报文 6、发送响应报文 7、记录日志 三、HTTP安装组成 1、常见http 服务器程序 2、apache介绍和特点 …

工具分享:在线键盘测试工具

在数字化时代,键盘作为我们与计算机交互的重要媒介之一,其性能和稳定性直接影响到我们的工作效率和使用体验。为了确保键盘的每个按键都能正常工作,并帮助用户检测潜在的延迟、连点等问题,一款优质的在线键盘测试工具显得尤为重要…

QT设置窗口随窗体变化(窗口文本框随窗体的伸缩)

目录 1.建立新窗口2.最终效果 1.建立新窗口 1)在窗体中创建一个 textBrowser,记录坐标及宽高 X-100 Y-130 宽-571 高-281,窗体宽高800*600; 2)在.h头文件中插入void resizeEvent(QResizeEvent *event) override;函数 …

如何系统地自学Python?

如何系统地自学Python? 如何系统地自学Python?1.了解编程基础2.学习Python基础语法3.学习Python库和框架4.练习编写代码5.参与开源项目6.加入Python社区7.利用资源学习8.制定学习计划9.持之以恒总结 如何系统地自学Python? 作为一个Python语…

【MySQL】如何处理DB读写分离数据不一致问题?

文章内容 1、前言读写库数据不一致问题我们如何解决?方案一:利用数据库自身特性方案二:不解决方案三:客户端保存法方案四:缓存标记法方案五:本地缓存标记 那DB读写分离情况下,如何解决缓存和数据…

h5网页和 Android APP联调,webview嵌入网页,网页中window.open打开新页面,网页只在webview中打开,没有重开一个app窗口

我是h5网页开发,客户app通过webview嵌入我的页面 点击标题window.open跳转到长图页面,客户的需求是在app里新开一个窗口展示长图页面,window.open打开,ios端是符合客户需求的,但是在安卓端他会在当前webview打开 这…

Find My资讯|苹果Vision Pro无法通过Find My进行远程定位和发声

苹果 Vision Pro 头显现在已经正式开售,不过根据该公司日前发布的支持文件,这款头显目前缺乏一系列关键查找功能,用户无法在 iCloud 网站或Find My应用中获悉头显的位置,也无法让这款头显远程播放声音。 不过支持文件同时提到 V…