当前位置: 首页 > news >正文

Flink、Yarn架构,以Flink on Yarn部署原理详解

Flink、Yarn架构,以Flink on Yarn部署原理详解

Flink 架构概览

Apache Flink是一个开源的分布式流处理框架,它可以处理实时数据流和批处理数据。Flink的架构原理是其实现的基础,架构原理可以分为以下四个部分:JobManager、TaskManager、JobGraph、Checkpoint。

  1. JobManager

    JobManager是Flink集群的控制节点,负责接收用户提交的任务,将任务分配给TaskManager进行执行,并监控任务的执行状态。JobManager还负责保存和恢复Flink应用程序的状态信息,以及维护JobGraph,对任务进行调度和优化。

  2. TaskManager

    TaskManager是Flink集群的工作节点,负责执行由JobManager分配的任务。每个TaskManager可以执行多个任务,每个任务对应一个或多个并行的TaskSlot。TaskSlot是TaskManager中的一个线程池,它负责执行任务的具体业务逻辑。TaskManager还负责将任务的状态信息发送给JobManager,以便JobManager能够监控任务的执行状态。

  3. JobGraph

    JobGraph是Flink应用程序的执行图,它描述了任务之间的依赖关系和数据流向。JobGraph由JobManager维护,它包含了所有任务的信息,包括任务的输入输出、并行度、任务类型等等。JobManager在接收到用户提交的任务后,会将任务解析成JobGraph,然后对JobGraph进行调度和优化,最终将任务分配到TaskManager上执行。

  4. Checkpoint

    Checkpoint是Flink用于实现容错机制的重要组成部分。Flink支持两种类型的Checkpoint:精确一次(Exactly Once)和至少一次(At Least Once)。Checkpoint会在任务执行过程中周期性地将任务状态信息保存到持久化存储中,以确保在任务失败或系统故障时能够恢复任务状态。在Flink中,Checkpoint的实现采用了异步快照机制,即在Checkpoint过程中不会阻塞任务的执行,从而保证任务的高吞吐量和低延迟。

用户通过 DataStream API、DataSet API、SQL 和 Table API 编写 Flink 任务,它会生成一个 JobGraph。JobGraph 是由 source、map()、keyBy()、window()、apply()和 sink 等算子组成的。当 JobGraph 提交给 Flink 集群后,能够以 Local、Standalone、Yarn 和kubernetes 四种模型运行。

在这里插入图片描述

接下来,深入关注Flink中两个关键组件:JobManager和TaskManager

JobManager架构

在这里插入图片描述

JobManager是Flink集群的控制节点,负责接收用户提交的任务,将任务分配给TaskManager进行执行,并监控任务的执行状态。

Flink JobManager架构原理的核心是JobMaster和ResourceManager,其中JobMaster负责任务的调度和监控,ResourceManager负责集群资源的管理。JobMaster和ResourceManager之间通过RPC通信进行交互。

JobMaster主要负责以下几个方面:

  1. 任务管理

JobMaster负责接收用户提交的任务,并将任务转换为JobGraph。JobGraph是Flink应用程序的执行图,它描述了任务之间的依赖关系和数据流向。JobMaster会对JobGraph进行优化和调度,并将任务分配给TaskManager进行执行。

  1. 任务监控

JobMaster会监控任务的执行状态,包括任务的启动、暂停、恢复和取消等操作。如果任务执行失败,JobMaster会重新分配任务,或者通知用户进行处理。

  1. 状态管理

Flink支持任务的状态管理和恢复,JobMaster负责保存和恢复任务的状态信息。在任务执行过程中,JobMaster会周期性地将任务状态信息保存到持久化存储中,以确保在任务失败或系统故障时能够恢复任务状态。

  1. 高可用性

为了保证JobMaster的高可用性,Flink采用了主备模式。即在Flink集群中,有一个主JobMaster和若干备JobMaster。当主JobMaster发生故障时,备JobMaster会接管任务的管理和调度。

TaskManager架构

在这里插入图片描述

Flink TaskManager架构原理的核心是TaskExecutor和Slot,其中TaskExecutor是Flink集群中的工作节点,负责执行任务,Slot是TaskExecutor中的任务执行单元,用于执行任务的并发执行。

TaskExecutor是Flink集群中的工作节点,它是执行Flink任务的基本单元。一个Flink TaskExecutor节点可以运行多个Slot,每个Slot是TaskExecutor中的任务执行单元,用于执行任务的并发执行。

在Flink任务启动时,JobManager会将任务的JobGraph分配给一组TaskManager节点,每个TaskManager节点会启动一个或多个TaskExecutor进程。在TaskExecutor进程启动时,会为每个Slot创建一个独立的线程池,用于执行任务。

Slot是TaskExecutor中的任务执行单元,每个Slot都可以同时执行一个任务。任务被分配给Slot后,Slot会启动一个线程来执行任务,从输入数据流中读取数据,并将处理结果输出到输出数据流中。

每个Slot都有自己的资源限制,包括CPU、内存、网络等资源。任务的执行会根据资源限制进行调度,以达到最优的资源利用率。当任务执行结束后,Slot会释放资源,以供其他任务使用。

Flink支持任务的动态调整,包括任务的扩容和缩容。当任务需要更多的资源时,Flink可以动态地增加TaskExecutor节点来满足任务的需求。反之,当任务执行结束后,Flink会回收空闲的TaskExecutor节点,以节省资源。

TaskManager主要负责以下功能:

  1. 执行任务

    TaskManager负责接收来自JobManager的任务,并将任务分配到Task执行器中执行。每个TaskManager可以运行一个或多个任务。

  2. 管理任务状态

    TaskManager负责管理任务的状态和执行上下文,并向JobManager报告任务的状态。

  3. 数据交换

    TaskManager中的网络组件负责数据交换。它负责将数据从一个TaskManager发送到另一个TaskManager,并将数据发送到JobManager。

  4. 管理资源

    TaskManager负责管理其本地资源,例如内存和CPU资源,并确保任务在可用资源范围内运行。

  5. 高可用性

    TaskManager支持高可用性。如果一个TaskManager失败,Flink会将其上运行的任务重新分配到其他TaskManager上,以确保任务继续执行。

Yarn架构概览

Yarn 架构原理 - 总览

在这里插入图片描述

YARN(Yet Another Resource Negotiator)是Hadoop生态系统中的一个重要组件,它是一个资源管理系统,负责管理Hadoop集群中的资源和任务。本文将详细介绍YARN中ResourceManager、NodeManager、ApplicationMaster和Container组件的实现原理。

  1. ResourceManager

ResourceManager是YARN中最重要的组件之一。它是集群资源的总管,负责处理客户端应用程序的资源请求,以及为应用程序分配资源。ResourceManager主要有以下几个组件:

  • Scheduler:Scheduler负责为应用程序分配资源,它根据应用程序的需求和集群的可用资源进行调度。Scheduler会考虑各个应用程序的优先级,以及应用程序对资源的需求量等因素。
  • ApplicationManager:ApplicationManager负责管理应用程序的生命周期,包括应用程序的提交、启动、停止和监控等。它还负责向Scheduler提交应用程序的资源请求,并获取Scheduler分配的资源。
  1. NodeManager

NodeManager是YARN中运行在每台机器上的组件,它负责管理单个节点上的资源。NodeManager主要有以下几个组件:

  • ContainerExecutor:ContainerExecutor负责启动和管理容器。容器是YARN中运行应用程序的基本单位,每个容器包含一个或多个任务。
  • ApplicationMasterLauncher:ApplicationMasterLauncher负责启动ApplicationMaster。ApplicationMaster是应用程序的管理器,它负责协调应用程序的各个任务,以及与ResourceManager交互。
  • NodeStatusUpdater:NodeStatusUpdater负责向ResourceManager汇报节点的状态,包括节点的可用资源、健康状况等。
  1. ApplicationMaster

ApplicationMaster是YARN中应用程序的管理器,运行在 Slave 上,它负责数据切分,申请资源和分配、任务监控和容错,以及与ResourceManager交互。

  1. Container

Container是YARN中运行应用程序的基本单位,每个容器包含一个或多个任务。Container 负责对资源进行抽象,包括内存、CPU、磁盘、网络等资源。

其中,最重要的角色是 ResourceManager,主要用来负责整个资源的管理,Client 端是负责向 ResourceManager 提交任务。

Yarn 架构原理 - 任务提交

当用户提交一个任务到YARN时,任务的提交过程可以分为以下几个步骤:

  1. 应用程序提交

用户首先需要将应用程序提交到YARN中。这可以通过命令行工具或API接口完成,用户需要指定应用程序的名称、资源需求和启动命令等信息。

  1. 申请资源

一旦应用程序提交成功,它将会向ResourceManager发送资源请求。ResourceManager会根据集群中的可用资源和其他应用程序的需求,为这个应用程序分配一定数量的资源。

  1. 分配容器

一旦ResourceManager为应用程序分配了资源,它将会向NodeManager发出请求,要求它在一台或多台机器上启动容器。NodeManager接收到请求后,将会为每个容器分配一定数量的资源,并启动容器。

  1. 下载依赖文件

在容器启动之前,NodeManager需要下载应用程序的依赖文件(例如JAR文件)到容器中。这是通过Localizer来完成的。Localizer会从HDFS中下载应用程序的依赖文件,并将它们解压到容器的本地文件系统中。

  1. 启动ApplicationMaster

一旦容器启动并准备好运行应用程序,NodeManager将会启动ApplicationMaster。ApplicationMaster是应用程序的管理器,负责协调应用程序的各个任务,以及与ResourceManager交互。

  1. 分配任务

一旦ApplicationMaster启动成功,它将会向ResourceManager请求更多的资源,以分配应用程序的任务。ResourceManager会根据应用程序的需求和集群的可用资源,为每个任务分配一个容器。

  1. 执行任务

一旦任务被分配到容器中,TaskExecutor将会从容器中获取任务,并在本地执行任务。执行完成后,TaskExecutor会向ApplicationMaster报告任务的状态。

总之,任务提交到YARN的过程涉及多个组件之间的协作和通信。其中ResourceManager负责管理集群资源,NodeManager负责管理单个节点上的资源,ApplicationMaster负责协调应用程序的各个任务,而Container则是运行应用程序的基本单位。 任务的执行和状态监控也涉及多个组件之间的协作和通信。在这个过程中,YARN通过将资源管理和任务管理分离,实现了高效的资源利用和任务协调。

Flink on Yarn 部署原理剖析

Flink on Yarn Per-Job

在这里插入图片描述

Flink on Yarn 中 PerJob 模式是指每次提交一个任务,然后任务运行完成之后资源就会被释放。在了解了Yarn 的原理之后,PerJob 的流程也就比较容易理解了,具体如下:

  • 首先 Client 提交 Yarn App,比如 JobGraph 或者 JARS。
  • 接下来 Yarn 的 ResourceManager 会申请第一个 Container。这个 Container 通过 ApplicationMaster 启动进程,ApplicationMaster 里面运行的是 FLink 程序,即 Flink-Yarn ResourceManager 和 JobManager。
  • 最后 Flink-Yarn ResourceManager 向 Yarn ResourceManager 申请资源。当分配到资源后,启动 TaskManager。TaskManager 启动后向 Flink-Yarn ResourceManager 进行注册,注册成功后 JobManager 就会分配具体的任务给 TaskManager 开始执行。

在Flink on Yarn的Per-Job模式中,每个Flink任务实现资源隔离的主要方式如下:

  1. 独立的Yarn应用程序:每个Flink作业都会被打包成一个独立的Yarn应用程序,包括一个JobManager进程和若干个TaskManager进程。这样可以保证每个Flink作业都运行在一个独立的应用程序中,避免了不同作业之间的资源冲突和干扰。
  2. 动态资源分配:在Flink on Yarn Per-Job模式中,Flink作业会根据实际资源需求向Yarn资源管理器请求所需的资源,并在作业执行期间动态调整资源使用情况。这样可以避免Flink作业占用过多资源,导致其他作业无法正常执行。
  3. 容器隔离:在Yarn中,每个应用程序都运行在一个独立的容器中,容器之间是相互隔离的。Flink作业也是运行在Yarn的容器中,这样可以保证每个Flink作业之间的资源隔离性。
  4. 任务隔离:Flink作业中的每个任务都是独立执行的,它们之间不会共享任何资源,包括内存、CPU、网络等。同时,Flink还提供了TaskExecutor的资源管理机制,可以根据每个任务的资源需求动态调整资源分配情况,从而保证每个任务都能够得到足够的资源。

Flink on Yarn Session

在这里插入图片描述

在 PerJob 模式中,执行完任务后整个资源就会释放,包括 JobManager、TaskManager 都全部退出。而 Session 模式则不一样,它的 Dispatcher 和 ResourceManager 是可以复用的。

Session模式的Flink任务部署过程跟Per-Job类似,两者之间的区别在于:

  1. 部署方式:Session模式是一种长期运行的Flink集群模式,用户可以通过Flink客户端连接到集群中的一个或多个JobManager,提交多个Flink作业,而PerJob模式则是每个Flink作业都会创建一个独立的Yarn应用程序,并在该应用程序中启动JobManager和TaskManager进程。
  2. 资源使用:Session模式是预分配资源的,也就是提前根据指定的资源参数初始化一个Flink集群,并常驻在YARN系统中,拥有固定数量的JobManager和TaskManager,该资源中JobManager有且只有一个。
  3. 作业隔离:Session模式下由于是预分配资源(资源总量有限),多个作业之间又不是隔离的,故可能会造成资源的争用,如果有一个作业因为异常导致TaskManager宕机,则它上面承载着的所有作业也都会受到影响。而在PerJob模式下,由于每个Flink作业都会创建一个独立的Yarn应用程序,因此不同作业之间也是相互隔离的。
  4. 适用场景:PerJob模式适用于长期运行的Flink集群场景,适合处理大量的实时数据,例如流处理、复杂事件处理等;而Session模式适用于短期的、需要单独调度的Flink作业

在这里插入图片描述

Flink on Yarn Application

application模式,在该模式下会为每个提交的应用创建一个集群,用户程序的 main 方法将在JobManager集群中而不是客户端运行。

Application模式的会话集群,仅在特定应用程序的作业之间共享,并在应用程序完成时终止。

在这种体系结构中,Application 模式在不同应用之间提供了资源隔离和负载平衡保证。在特定一个应用程序上,JobManager 执行 main() 可以节省所需的 CPU 周期,还可以节省本地下载依赖项所需的带宽。

在这里插入图片描述

附官网的模式区分如下所示:

在这里插入图片描述

相关文章:

Flink、Yarn架构,以Flink on Yarn部署原理详解

Flink、Yarn架构,以Flink on Yarn部署原理详解 Flink 架构概览 Apache Flink是一个开源的分布式流处理框架,它可以处理实时数据流和批处理数据。Flink的架构原理是其实现的基础,架构原理可以分为以下四个部分:JobManager、TaskM…...

软考高级系统架构设计师系列论文八十三:论软件设计模式的应用

软考高级系统架构设计师系列论文八十三:论软件设计模式的应用 一、软件设计模式相关知识点二、摘要三、正文四、总结一、软件设计模式相关知识点 软考高级系统架构设计师系列之:面向构件的软件设计,构件平台与典型架构...

CDH集群离线配置python3环境,并安装pyhive、impyla、pyspark

背景: 项目需要对数仓千万级数据进行分析、算法建模。因数据安全,数据无法大批量导出,需在集群内进行分析建模,但CDH集群未安装python3 环境,需在无网情况下离线配置python3环境及一系列第三方库。 采取策略&#xf…...

python并行操作(基于concurrent.futures.ThreadPoolExecutor)

文章目录 一、明确自身cpu可并行的核数二、根据所有任务计算在各个核上平均跑多少任务三、最后把任务划分在不同的核上跑四、拿来主义 此为利用cpu并行计算的能力,充分利用cpu在循环时并行计算。其实也是受C并行操作的影响,如果需要C版,可以移…...

Leetcode.73矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法 class Solution {public void setZeroes(int[][] matrix) {int m matrix.length, n matrix[0].length;boolean[] row new boolean[m];boolean[] col…...

jdk 04 stream的collect方法

01.收集(collect) collect,收集,可以说是内容最繁多、功能最丰富的部分了。 从字面上去理解,就是把一个流收集起来,最终可以是收集成一个值也可以收集成一个新的集合。 collect主要依赖java.util.stream.Collectors类内置的静态方…...

介绍REST API

REST (Representational State Transfer) 是一种基于 web 架构的 API 设计风格, 允许客户端应用程序通过 HTTP 请求与服务器进行交互。RESTful API就是按照REST风格设计的API。 RESTful API 的设计原则包括:使用统一资源标识符 (URI) 标识资源&#xff…...

【leetcode 力扣刷题】反转链表+递归求解

反转链表递归求解 206. 反转链表解法①:取下一个节点在当前头节点前插入解法②:反转每个节点next的指向解法③:递归 92.反转链表Ⅱ反转left到right间节点的next指向 234.回文链表解法①:将链表元素存在数组中,在数组上…...

一文读懂Redis配置,史上真香配置

文章目录 基本配置项AOF持久化配置项RDB持久化配置项淘汰策略配置项主从复制配置项鸣谢 让那些总为redis连接异常的小白指引明灯,少走弯路。为那些不知道如何进行高级配置的大佬整一杯小酒。 基本配置项 bind:用于设置Redis绑定的IP地址。默认情况下&…...

maven打出jar中动态替换占位符

使用场景&#xff1a; maven打出的jar中pom.xml动态替换占位符 有些时候某些公共工具jar包被项目引用后发现公共jar的pom.xml中的version依然还是占位符&#xff0c;例如下面 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok<…...

【Git游戏】通过游戏重新学习Git

在提交树上移动 HEAD HEAD:一个标志符号&#xff08;通常情况下指向当前分支&#xff0c;间接指向当前最新的提交记录&#xff09; 可以通过git checkout commitID从而指向提交记录 commitID 本身是一串哈希值&#xff08;基于 SHA-1&#xff0c;共 40 位&#xff09; 我们在…...

如何通过以太坊JSON-RPC方式获取ERC-20代币的信息?

目录 一、ERC-20介绍 二、ERC-20代币标准功能 1、可选功能 2、标准功能 三、获取代币信息...

线性代数的学习和整理4: 求逆矩阵的多种方法汇总

目录 原始问题&#xff1a;如何求逆矩阵&#xff1f; 1 EXCEL里&#xff0c;直接可以用黑盒表内公式 minverse() 数组公式求A- 2 非线性代数方法&#xff1a;解方程组的方法 3 增广矩阵的方法 4 用行列式的方法计算&#xff08;未验证&#xff09; 5 A-1/|A|*A* &…...

【C#学习笔记】匿名函数和lambda表达式

文章目录 匿名函数匿名函数的定义匿名函数作为参数传递匿名函数的缺点 lambda表达式什么是lambda表达式闭包 匿名函数 为什么我们要使用匿名函数&#xff1f;匿名函数存在的意义是为了简化一些函数的定义&#xff0c;特别是那些定义了之后只会被调用一次的函数&#xff0c;与其…...

百度Apollo:引领自动驾驶技术创新的先锋

文章目录 前言一、内容总结 前言 大家好&#xff0c;我是萝卜头不吃萝卜头&#xff0c;今天和大家分享一下我学习百度Apollo自动驾驶的心得。 在七月份的时候&#xff0c;我收到了Apollo开发者社区的邀请&#xff0c;进行学习Apollo自动驾驶汽车的2023星火培训训练&#xff0c…...

Redis 重写 AOF 日志期间,主进程可以正常处理命令吗?

重写 AOF 日志的过程是怎样的&#xff1f; Redis 的重写 AOF 过程是由后台子进程 bgrewriteaof 来完成的&#xff0c;这么做有以下两个好处。 子进程进行 AOF 重写期间&#xff0c;主进程可以继续处理命令请求&#xff0c;从而避免阻塞主进程子进程带有主进程的数据副本。这里…...

java实现生成RSA公私钥、SHA256withRSA加密以及验证工具类

前言&#xff1a; RSA属于非对称加密。所谓非对称加密&#xff0c;需要两个密钥&#xff1a;公钥 (publickey) 和私钥 (privatekey)。公钥和私钥是一对&#xff0c;如果用公钥对数据加密&#xff0c;那么只能用对应的私钥解密。如果用私钥对数据加密&#xff0c;只能用对应的公…...

lab7 thread

文章目录 Uthread: switching between threadstaskhints思路上下文的恢复和保存thread_createthread_schedule Using threads思路 Barrier Uthread: switching between threads 在这个练习中&#xff0c;你将为一个用户级别线程系统设计上下文切换机制&#xff0c;并实现它。 …...

接口自动化测试:mock server之Moco工具

什么是mock server mock&#xff1a;英文可以翻译为模仿的&#xff0c;mock server是我们用来解除依赖&#xff08;耦合&#xff09;&#xff0c;假装实现的技术&#xff0c;比如说&#xff0c;前端需要使用某些api进行调试&#xff0c;但是服务端并没有开发完成这些api&#…...

用python从零开始做一个最简单的小说爬虫带GUI界面(2/3)

目录 前一章博客 前言 主函数的代码实现 逐行代码解析 获取链接 获取标题 获取网页源代码 获取各个文章的链接 函数的代码 导入库文件 获取文章的标题 获取文章的源代码 提取文章目录的各个文章的链接 总代码 下一章内容 前一章博客 用python从零开始做一个最简单…...

CEF 缓存处理:清理缓存、禁用缓存、忽略缓存

目录 一、CEF缓存处理 1、指定缓存路径 2、清理缓存 3、禁用缓存 1)、原理分析...

Android 系统桌面 App —— Launcher 开发(1)

Android 系统桌面 App —— Launcher 开发&#xff08;1&#xff09; Launcher简介 Launcher就是Android系统的桌面&#xff0c;俗称“HomeScreen”也就是我们开机后看到的第一个App。launcher其实就是一个app&#xff0c;它的作用是显示和管理手机上其他App。目前市场上有很…...

一个程序员的工作日记--每天就干两件事,一年后让别人刮目相看

文章目录 成功源于专注一、早上布局二、晚上复盘三、技术细节四、专注与成功五、专注的重要性六、忙碌和赚钱七、结论以嵌入式开发为例&#xff1a;一、早上布局二、晚上复盘三、技术细节四、专注与成功五、忙碌和赚钱六、结论在嵌入式软件开发中&#xff0c;我们需要按照以下步…...

Linux虚拟机安装(Ubuntu 20)

最近这段时间使用VMWare安装了一下Ubuntu版本的Linux虚拟机&#xff0c;在这里记录一下安装时参考的文章以及需要注意的细节 参考链接&#xff1a; VMware虚拟机下安装Ubuntu20.04&#xff08;保姆级教程&#xff09; 一、安装VMWare 下载链接&#xff1a;VMware Workstatio…...

1.6 服务器处理客户端请求

客户端进程向服务器进程发送一段文本&#xff08;MySQL语句&#xff09;&#xff0c;服务器进程处理后再向客户端进程发送一段文本&#xff08;处理结果&#xff09;。 从图中我们可以看出&#xff0c;服务器程序处理来自客户端的查询请求大致需要经过三个部分&#xff0c;分别…...

火山引擎发布自研视频编解码芯片 压缩效率提升30%

8月22日&#xff0c;火山引擎视频云宣布其自研的视频编解码芯片已成功出片。经验证&#xff0c;该芯片的视频压缩效率相比行业主流硬件编码器可提升30%以上&#xff0c;未来将服务于抖音、西瓜视频等视频业务&#xff0c;并将通过火山引擎视频云开放给企业客户。 火山引擎总裁…...

从头开始:将新项目上传至Git仓库的简易指南

无论您是一个经验丰富的开发者还是一个刚刚起步的新手&#xff0c;使用Git来管理您的项目是一个明智的选择。Git是一个强大的版本控制系统&#xff0c;它可以帮助您跟踪项目的变化、合并代码以及与团队成员协作。在本文中&#xff0c;我们将为您提供一步步的指南&#xff0c;教…...

数据库的增量备份与差异备份

在当今数字时代&#xff0c;数据已经成为公司的主要资产。为了维护这些珍贵的数据&#xff0c;公司通常会采取各种数据保护措施&#xff0c;其中增量备份是一种很有效的方法。本文将详细介绍什么是数据库的增量备份&#xff0c;以及如何帮助企业更有效地维护数据。  我们需要…...

视频云存储/安防监控视频智能分析网关V3:占道经营功能详解

违规占道经营者经常会在人流量大、车辆集中的道路两旁摆摊&#xff0c;导致公路交通堵塞&#xff0c;给居民出行的造成不便&#xff0c;而且违规占路密集的地方都是交通事故频频发生的区域。 TSINGSEE青犀视频云存储/安防监控视频/AI智能分析网关V3运用视频AI智能分析技术&…...

卡尔曼滤波学习笔记

Kalman Filter Ⅰ、直观理解1、描述2、例子 Ⅱ、适用范围1、线性系统2、噪声服从高斯分布 Ⅲ、相关公式1、原始公式2、预测公式3、更新公式4、初值赋予5、总结 Ⅳ、应用例子Ⅴ、代码实现Ⅵ、公式理解1、协方差矩阵的理解1.1 协方差1.2 协方差矩阵1.3、相关数学公式 2、状态方程…...

NLP预训练模型超大规模探索

总共从四方面来进行比较。 第一个方面&#xff0c;高层次方法&#xff08;自监督的预训练方法&#xff09;对比&#xff0c;总共三种方式。 语言模型式&#xff0c;就是 GPT-2 那种方式&#xff0c;从左到右预测&#xff1b;BERT-style 式&#xff0c;就是像 BERT 一样将一部…...

OpenCV实战系列总目录(更新中)

1、openCV实战-系列教程1&#xff1a;基本操作&#xff08;环境配置/图像读取打印/视频读取打印/图像裁剪/颜色通道提取/边界填充/数值计算&#xff09;、源码解读 openCV实战-系列教程1&#xff1a;基本操作&#xff08;环境配置/图像读取打印/视频读取打印/图像裁剪/颜色通道…...

《华为认证》6to4自动隧道

实验需求&#xff1a; 在NE1和NE3之间使用tunnel 口创建6to4自动隧道&#xff0c;实现PC1和PC2互访。 步骤1:配置ipv4地址&#xff0c;如图所示&#xff1a; 步骤2&#xff1a;配置NE1和NE3的ipv4路由&#xff0c;是两端的ipv4网络能够互访 R1: ip route-static 0.0.0.0 0…...

Java课题笔记~Element UI

Element&#xff1a;是饿了么公司前端开发团队提供的一套基于 Vue 的网站组件库&#xff0c;用于快速构建网页。 Element 提供了很多组件&#xff08;组成网页的部件&#xff09;供我们使用。例如 超链接、按钮、图片、表格等等~ 如下图左边的是我们编写页面看到的按钮&#…...

[论文笔记]ON LAYER NORMALIZATION IN THE TRANSFORMER ARCHITECTURE

引言 这是论文ON LAYER NORMALIZATION IN THE TRANSFORMER ARCHITECTURE的阅读笔记。本篇论文提出了通过Pre-LN的方式可以省掉Warm-up环节,并且可以加快Transformer的训练速度。 通常训练Transformer需要一个仔细设计的学习率warm-up(预热)阶段:在训练开始阶段学习率需要设…...

h5逻辑_调用手机拨号功能

有时点击页面某个按钮&#xff0c;希望能掉起手机拨号页&#xff0c;实现步骤如下&#xff1a; [1] 在index.html中添加如下代码<meta name"format-detection" content"telephoneyes" />[2] 点击按钮调用函数callPhone (phoneNumber) {window.locat…...

字节一面:post为什么会发送两次请求?

前言 最近博主在字节面试中遇到这样一个面试题&#xff0c;这个问题也是前端面试的高频问题&#xff0c;因为在前端开发的日常开发中我们总是会与post请求打交道&#xff0c;一个小小的post请求也是牵扯到很多知识点的&#xff0c;博主在这给大家细细道来。 &#x1f680; 作者…...

ROS2 学习(五)接口,动作

接口 通信双方统一规定好接口。比如图像 img&#xff0c;控制运动的线速度和角速度…… 我们也不用了解具体实现&#xff0c;基本就是了解接口会去用就行。 $ ros2 interface list # 展示所有 interfaces $ ros2 interface show ... # 显示具体一个 interface $ ros2 package…...

Vue学习之Vue组件的核心概念

组件是什么 vue组件就是一个个独立的小型的ui模块&#xff0c;整个大型的系统就是由一个个小型的UI模块拼接而成的 vue组件就是vue实例&#xff0c;通过new Vue函数来创建的一个vue实例&#xff0c;不同的组件只不过是options的不同&#xff0c;我们基本百分之90的开发工作都…...

Web自动化测试-Selenium语法入门到精通

前言 说到自动化测试&#xff0c;就不得不提大名鼎鼎的Selenium。Selenium 是如今最常用的自动化测试工具之一&#xff0c;支持快速开发自动化测试框架&#xff0c;且支持在多种浏览器上执行测试。 Selenium学习难度小&#xff0c;开发周期短。对测试人员来说&#xff0c;如果…...

封装axios及简单应用举例

第一步&#xff1a;具体封装工具&#xff1a; 在项目根目录下创建utils目录&#xff0c;然后在其中创建文件http.js&#xff1a; // 二次封装axios import axios from axios// 全局配置 // 根据环境变量区分接口默认地址&#xff08;前缀&#xff09; switch (process.env.NO…...

Django(3)-创建第一个数据模型-ORM映射

数据库配置 根目录下settings.py 。这是个包含了 Django 项目设置的 Python 模块。 通常&#xff0c;这个配置文件使用 SQLite 作为默认数据库。如果你不熟悉数据库&#xff0c;或者只是想尝试下 Django&#xff0c;这是最简单的选择。Python 内置 SQLite&#xff0c;所以你无…...

C++ vector

前言&#xff1a; vector的部分源码&#xff1a; &#xff08;做过删除&#xff0c;留下关键信息&#xff09; vector的使用 构造函数&#xff1a; 1 无参构造 vector<int> v1; 2 构造并初始化n个val vector<int> v2(5,1);3 拷贝构造 vector<int> v3…...

Spring+redis集成redis缓存

1、引入maven依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.0</version></dependency><dependency><groupId>org.springframework.data</groupId><art…...

聊聊springboot的启动事件

序 本文主要研究一下springboot的启动事件 SpringApplicationEvent org/springframework/boot/context/event/SpringApplicationEvent.java public abstract class SpringApplicationEvent extends ApplicationEvent {private final String[] args;public SpringApplicatio…...

jmeter HTTP请求默认值

首先&#xff0c;打开JMeter并创建一个新的测试计划。 右键单击测试计划&#xff0c;选择"添加" > “配置元件” > “HTTP请求默认值”。 在HTTP请求默认值中&#xff0c;您可以设置全局的HTTP请求属性&#xff0c;例如&#xff1a; 服务器地址&#xff1a…...

CSS选择器-CSS3属性

CSS选择器-CSS3属性 持续更新… 1、CSS3的概念和优势 css3概念:是css的升级版本,新增加了一些模块 css3优点:完全向后兼容,可使用新的选择器和属性,能实现新的设计效果CSS3是CSS技术的升级版本&#xff0c;CSS3语言开发是朝着模块化发展的。以前的规范作为一个模块实在是太庞…...

线性代数的学习和整理8:行列式相关

目录 1 从2元一次方程组求解说起 1.1 直接用方程组消元法求解 1.2 有没有其他方法呢&#xff1f;有&#xff1a;比如2阶行列式方法 1.3 3阶行列式 2 行列式的定义 2.1 矩阵里的方阵 2.2 行列式定义&#xff1a;返回值为标量的一个函数 2.3 行列式的计算公式 2.4 克拉…...

java+springboot+mysql农业园区管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的农业园区管理系统&#xff0c;系统包含超级管理员、管理员、用户角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff1b;用户管理&#xff1b;土地管理&#xff08;租赁&#xff09;&#x…...

IDEA远程开发

IDEA远程开发 前期准备 IDEA的远程开发是在本地去操昨远程服务器上的代码&#xff0c;所以我们先需要准备一台服务器,在此我使用vmware虚拟出ubuntu-20.04.6的Server版本,以便后面演示。 Ubuntu的Java环境配置 JDK8 sudo apt install openjdk-8-jdkmaven sudo apt instal…...