Flink--2、Flink部署(Yarn集群搭建下的会话模式部署、单作业模式部署、应用模式部署)

在这里插入图片描述
                       星光下的赶路人star的个人主页

                      你必须赢过,才可以说不在乎输赢

文章目录

  • 1、Flink部署
    • 1.1 集群角色
    • 1.2 Flink集群搭建
      • 1.2.1 集群启动
      • 1.2.2 向集群提交作业
    • 1.3 部署模式
      • 1.3.1 会话模式(Session Mode)
      • 1.3.2 单作业模式(Per-Job Mode)
      • 1.3.3 应用模式(Application Mode)
    • 1.4 Standalone运行模式
      • 1.4.1 会话模式部署
      • 1.4.2 单作业模式部署
      • 1.4.3 应用模式部署
    • 1.5 Yarn运行模式(非常重要)
      • 1.5.1 相关准备和配置
      • 1.5.2 会话模式部署
      • 1.5.3 单作业模式部署
      • 1.5.4 应用模式部署
    • 1.6 K8S运行模式(了解)
    • 1.7 历史服务器

1、Flink部署

1.1 集群角色

Flink提交作业和执行任务,需要几个关键组件:

  • 客户端(Client):代码由客户端获取并做转换,之后提交给JobManager
  • JobManager就是Flink集群里的“管事人”,对作业进行中央调度管理,而它获取到要执行的作业后,会进一步处理转换,然后分发给众多的TaskManager。
  • TaskManager,就是真正的“干活的人”,数据的处理操作都是它们来做的。

在这里插入图片描述

注意:Flink是一个非常灵活的处理框架,它支持多种不同的部署场景,还可以和不同的资源管理平台方便地集成。

1.2 Flink集群搭建

1.2.1 集群启动

0、集群规划

节点服务器hadoop102hadoop103hadoop104
角色JobManager、TaskManagerTaskManagerTaskManager

具体安装部署步骤如下:
1、下载并解压安装包
(1)下载(直接去官网下)安装包flink-1.17.0-bin-scala_2.12.tgz,将该jar包上传到hadoop102节点服务器的/opt/software路径上。
(2)在/opt/software路径上解压安装包到/opt/module路径上

tar -zxvf flink-1.17.0-bin-scala_2.12.tgz -C /opt/module/

2、修改集群配置
(1)进入conf路径,修改flink-conf.yaml文件,指定hadoop102节点服务器为JobManager

vim flink-conf.yaml

修改如下内容:

# JobManager节点地址.
jobmanager.rpc.address: hadoop102
jobmanager.bind-host: 0.0.0.0
rest.address: hadoop102
rest.bind-address: 0.0.0.0
# TaskManager节点地址.需要配置为当前机器名
taskmanager.bind-host: 0.0.0.0
taskmanager.host: hadoop102

(2)修改workers文件,指定hadoop102、hadoop103和hadoop104为TaskManager

 vim workers

修改如下内容:

hadoop102
hadoop103
hadoop104

(3)修改master文件

vim masters

修改内容如下:

hadoop102:8081

(4)另外,在flink-conf.yaml文件中还可以对集群中的JobManager和TaskManager组件进行优化配置,主要配置项如下:

  • jobmanager.memory.process.size:对JobManager进程可使用到的全部内存进行配置,包括JVM元空间和其他开销,默认为1600M,可以根据集群规模进行适当调整。
  • taskmanager.memory.process.size:对TaskManager进程可使用到的全部内存进行配置,包括JVM元空间和其他开销,默认为1728M,可以根据集群规模进行适当调整。
  • taskmanager.numberOfTaskSlots:对每个TaskManager能够分配的Slot数量进行配置,默认为1,可根据TaskManager所在的机器能够提供给Flink的CPU数量决定。所谓Slot就是TaskManager中具体运行一个任务所分配的计算资源。
  • parallelism.default:Flink任务执行的并行度,默认为1。优先级低于代码中进行的并行度配置和任务提交时使用参数指定的并行度数量。
    3、分发安装目录
    (1)配置修改完毕后,将Flink安装目录发给另外两个节点服务器。
xsync flink-1.17.0/

(2)修改hadoop103的 taskmanager.host
修改如下内容:

# TaskManager节点地址.需要配置为当前机器名
taskmanager.host: hadoop103

(3)修改hadoop104的 taskmanager.host(和上面差不多只是改为hadoop104而已)
4、启动集群
(1)在hadoop102节点服务器上执行start-cluster.sh启动Flink集群:

 bin/start-cluster.sh

(2)查看进程情况:
在这里插入图片描述
5、访问WebUI
启动成功后,同样可以访问http://hadoop102:8081对Flink集群和任务进行监控管理。
在这里插入图片描述
这样可以明显看到,当前集群的TaskManager数量为3;由于默认每个TaskManager的Slot数量为1,所以总Slot数和可用Slot数都为3。

1.2.2 向集群提交作业

在上一章中,我们已经编写读取socket发送的单词并统计单词的个数程序案例。本节我们将以该程序为例,演示如何将任务提交到集群中进行执行。具体步骤如下。

1、环境准备
在hadoop102中执行以下命令启动netcat。

nc -lk  hadoop102 7777

2、程序打包
(1)在我们编写的Flink入门程序的pom.xml文件中添加打包插件的配置,具体如下:

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.2.4</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><artifactSet><excludes><exclude>com.google.code.findbugs:jsr305</exclude><exclude>org.slf4j:*</exclude><exclude>log4j:*</exclude></excludes></artifactSet><filters><filter><!-- Do not copy the signatures in the META-INF folder.Otherwise, this might cause SecurityExceptions when using the JAR. --><artifact>*:*</artifact><excludes><exclude>META-INF/*.SF</exclude><exclude>META-INF/*.DSA</exclude><exclude>META-INF/*.RSA</exclude></excludes></filter></filters><transformers combine.children="append"><transformerimplementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"></transformer></transformers></configuration></execution></executions></plugin></plugins>
</build>

(2)插件配置完毕后,可以使用IDEA的Maven工具执行package命令,出现如下提示即表示打包成功。
在这里插入图片描述
打包完成后,在target目录下即可找到所需JAR包,JAR包会有两个,FlinkDemo-1.0-SNAPSHOT.jar和original-FlinkDemo-1.0-SNAPSHOT.jar,因为集群中已经具备任务运行所需的所有依赖,所以建议使用FlinkDemo-1.0-SNAPSHOT.jar。

3、在WebUI上提交作业
(1)任务打包完成后,我们打开Flink的WEB UI页面,在右侧导航栏点击“Submit New Job”,然后点击按钮“+ Add New”,选择要上传运行的JAR包,如下图所示。
在这里插入图片描述
jar包上传完成,如下图所示
在这里插入图片描述
(2)点击该jar包,出现任务配置页面,进行相应的配置
主要配置程序入口主类的全类名,任务运行的并行度,任务运行所需的配置参数和保存点路径等,如下图所示,配置完成后,即可点击按钮“Submit”,将任务提交到集群运行。
在这里插入图片描述

(3)任务提交成功之后,可点击左侧导航栏的“Running Jobs”查看程序运行列表情况。
在这里插入图片描述

(4)测试
①在socket端口中输入hello
在这里插入图片描述

②按图顺序
在这里插入图片描述
③点击Stdout,就可以看到hello单词的统计
在这里插入图片描述
(4)点击该任务,可以查看任务运行的具体情况,也可以通过点击“Cancel Job”结束任务运行。
在这里插入图片描述
4、命令行提交作业
除了通过WebUI界面提交任务之外,也可以直接通过命令来提交任务。这里为方便起见,我们可以先把jar包直接上传到目录flink-1.17.0下。
(1)首先要启动集群

bin/start-cluster.sh

(2)在hadoop102中执行以下命令启动netcat。

nc -lk 9999

(3)将flink程序运行jar包上传到/opt/module/flink-1.17.0路径
(4)进入到flink的安装路径下,在命令行使用flink run命令提交作业。

bin/flink run -m hadoop102:8081 -c com.zhm.wordcount.Demo03_UnBoundedStreamProcess ./FlinkDemo-1.0-SNAPSHOT.jar 

这里的参数 -m指定了提交到的JobManager,-c指定了入口类。
(5)在浏览器中打开Web UI,http://hadoop102:8081查看应用执行情况。用netcat输入数据,可以在TaskManager的标准输出(Stdout)看到对应的统计结果。
在这里插入图片描述
(6)数据模拟和实现和WebUI提交是一样的!!!

1.3 部署模式

在一些应用场景中,对于集群资源分配和占用的方式,可能会有特定的需求。Flink为各种场景提供了不同的部署模式,主要有以下三种模式:会话模式(Session Mode)、单作业模式(Per-Job Mode)、应用模式(Application Mode)。
它们的区别主要在于:集群的生命周期以及资源的分配方式以及应用的main方法到底在哪里执行—客户端(Client)还是JobManager。

1.3.1 会话模式(Session Mode)

会话模式其实最符合常规思维。我们需要先启动一个集群,保持一个会话,在这个会话中通过客户端提交作业。集群启动时所有资源就都已经确定,所以所有提交的作业会竞争集群中的资源。

在这里插入图片描述
会话模式比较适合于单个规模小、执行时间短的大量作业。

1.3.2 单作业模式(Per-Job Mode)

会话模式因为资源共享会导致很多问题,所以为了更好的隔离资源,我们可以考虑为每个提交的作业启动一个集群,这就是所谓的单作业(Per-Job)模式。
在这里插入图片描述
作业完成后,集群就会关闭,所有资源也会释放。
这些特性使得单作业模式在生产环境运行更加稳定,所以是实际应用的首选模式。
需要注意的是:Flink本身无法直接这样运行,所有单作业模式一般需要借助一些资源管理框架爱来启动集群,比如Yarn、Kubernets(K8S)。

1.3.3 应用模式(Application Mode)

前面两个模式下,应用代码都是在客户端上执行的,然后由于客户端提交给JobManager的。但是这种方式客户端需要占用大量网络带宽,去下载依赖和二进制数据发送给JobManager;加上很多情况下我们提交作业用的是同一个客户端,就会加重客户端所在节点的资源消耗。
所以解决办法就是,我们不要客户端了,直接把应用提交到JobManager上运行。而这也就代表着,我们需要为每一个提交的应用单独启动一个JobManager,也就是创建一个集群。这个JobManager只为执行这一个应用而存在,执行结束之后JobManager也就关闭了,这就是所谓的应用模式。

在这里插入图片描述
应用模式和单作业模式都是提交作业之后才创建集群的;单作业模式是通过客户端来提交的,客户端解析出的每一个作业对应一个集群;而应用模式下,是直接由JobManager执行应用程序的。

这里说的部署模式是比较抽象的概念。实际应用的时候,一般需要和资源管理平台结合起来,选择特定的模式来分配资源、部署应用。接下来,我们就针对不同的资源提供者的场景。

1.4 Standalone运行模式

独立模式是独立运行的,不依赖任何外部的资源管理平台;当然独立也是有代价的:如果资源不足,或者出现故障,没有自动扩展或重分配资源的保证,必须手动处理。所以独立模式一般只用在开发测试或作业非常少的场景下。

1.4.1 会话模式部署

在1.3.2 节就是用的Standalone集群的会话模式部署。
提前启动集群,并通过Web页面客户端提交任务(可以多个任务,但是集群资源固定)
在这里插入图片描述

1.4.2 单作业模式部署

Flink的Standalone集群并不支持单作业模式部署。因为单作业模式需要借助一些资源管理平台。

1.4.3 应用模式部署

应用模式下不会提前创建集群,所以不能调用start-cluster.sh脚本。我们可以使用同样在bin目录下的standalone-job.sh来创建一个JobManager。
在这里插入图片描述
具体步骤如下:
(1)环境准备,在hadoop102中执行以下命令启动netcat。

nc -lk hadoop102 9999

(2)进入到Flink的安装路径下,将应用程序的jar包放到lib/目录下。
(3)执行以下命令,启动JobManager。

bin/standalone-job.sh start --job-classname com.zhm.wordcount.Demo03_UnBoundedStreamProcess 

这里我们直接指定作业入口类,脚本会到lib目录下扫描所有的jar包。
(4)同样是使用bin目录下的脚本,启动TaskManager。

bin/taskmanager.sh start

(5)在hadoop102上模拟发送单词数据。
(6)在hadoop102:8081地址中观察输出数据
(7)如果希望停掉集群,同样可以使用脚本,命令如下

 bin/taskmanager.sh stopbin/standalone-job.sh stop

1.5 Yarn运行模式(非常重要)

Yarn上部署的过程是:客户端把Flink应用提交给Yarn的ResourceManager,Yarn的ResourceManager会向Yarn的NodeManager申请容器(Container)。这些容器上,Flink会部署JobManager和TaskManager的实例,从而启动集群。Flink会根据运行在JobManager·上的作业所需要的槽数动态分配TaskManager资源。

1.5.1 相关准备和配置

在Flink任务不是至Yarn集群之前,需要确认集群是否按照有Hadoop,保证Hadoop版本至少在2.2以上,并且集群中安装有HDFS服务。
(1)配置环境变量,增加环境变量配置如下:

sudo vim /etc/profile.d/my_env.sh#添加内容
HADOOP_HOME=/opt/module/hadoop-3.3.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`

(2)启动Hadoop集群,包括HDFS和Yarn

start-dfs.sh
start-yarn.sh

(3)在hadoop102执行以下命令启动netcat

nc -lk hadoop102 9999

1.5.2 会话模式部署

Yarn的会话模式与独立集群不一样,需要首先申请一个Yarn会话(Yarn Session)来启动Flink集群,具体步骤如下:
1、启动集群
(1)启动Hadoop集群(HDFS、YARN)。
(2)执行脚本命令向YARN集群申请资源,开启一个YARN会话,启动Flink集群。

bin/yarn-session.sh -nm test

可用参数解读:

  • -d:分离模式,如果你不想让Flink YARN客户端一直前台运行,可以使用这个参数,即使关掉当前对话窗口,YARN session也可以后台运行。
  • -jm(–jobManagerMemory):配置JobManager所需内存,默认单位MB。
  • -nm(–name):配置在YARN UI界面上显示的任务名。
  • -qu(–queue):指定YARN队列名。
  • -tm(–taskManager):配置每个TaskManager所使用内存。

注意:Flink1.11.0版本不再使用-n参数和-s参数分别指定TaskManager数量和slot数量,Yarn会按照需求动态分配TaskManager和Slot数量。所以从这个意义上来说,Yarn的会话模式也不会把集群资源固定,同样是动态分布的。

Yarn Session启动之后会给出一个WebUI地址以及一个Yarn ApplicationId,如下所示,用户可以通过Web UI或者命令行两种方式提交作业。

2、提交作业
(1)通过Web UI提交作业
这种方式比较简单,与上文述Standalone部署模式基本一样。
在这里插入图片描述
(2)通过命令行提交作业
① 将FlinkTutorial-1.0-SNAPSHOT.jar任务上传至集群。
② 执行以下命令将该任务提交到已经开启的Yarn-Session中运行。

bin/flink run -c com.zhm.wordcount.Demo03_UnBoundedStreamProcess FlinkDemo-1.0-SNAPSHOT.jar 

客户端可以自行确定JobManager的地址,也可以通过-m或者-jobmanager参数指定JobManager的地址,JobManager的地址在Yarn Session的启动页面可以找到
③ 任务提交成功后,可在YARN的Web UI界面查看运行情况。hadoop103:8088。
在这里插入图片描述
从上图中可以看到我们创建的Yarn-Session实际上是一个Yarn的Application,并且有唯一的Application ID。
④也可以通过Flink的Web UI页面查看提交任务的运行情况,如下图所示。
在这里插入图片描述

1.5.3 单作业模式部署

在Yarn环境中,由于有了外部平台做资源调度,所以我们也可以直接向Yarn提交一个单独的作业,从而启动一个Flink集群。
(1)执行命令提交作业

bin/flink run -d -t yarn-per-job -c com.zhm.wordcount.Demo03_UnBoundedStreamProcess FlinkDemo-1.0-SNAPSHOT.jar 

(2)在YARN的ResourceManager界面查看执行情况。
在这里插入图片描述
点击(ApplicationMaster)可以打开Flink Web UI页面进行监控,如下图所示:
在这里插入图片描述
(3)可以使用命令行查看或取消作业,命令如下。

##查看当前job的idbin/flink list -t yarn-per-job -Dyarn.application.id=application_XXXX_YY## 取消jobbin/flink cancel -t yarn-per-job -Dyarn.application.id=application_XXXX_YY <jobId>

这里的application_XXXX_YY是当前应用的ID,是作业的ID。注意如果取消作业,整个Flink集群也会停掉。

1.5.4 应用模式部署

应用模式同样非常简单,与单作业模式类似,直接执行flink run-application命令即可。
1、命令行提交
(1)执行命令提交作业。

bin/flink run-application -t yarn-application -c  com.zhm.wordcount.Demo03_UnBoundedStreamProcess FlinkDemo-1.0-SNAPSHOT.jar 

(2)在命令行中查看或取消作业。(和单作业部署是一样的)
2、上传HDFS提交
可以通过yarn.provided.lib.dirs配置选项指定位置,将flink的依赖上传到远程。
(1)上传flink的lib和plugins到HDFS上

## 创建HDFS目录
fs -mkdir /flink-dist
fs -put lib/ /flink-dist##上传文件到HDFS目录
hadoop fs -put plugins/ /flink-dist

(2)上传自己的jar包到HDFS

hadoop fs -mkdir /flink-jars
hadoop fs -put FlinkDemo-1.0-SNAPSHOT.jar  /flink-jars

(3)提交作业

 bin/flink run-application -t yarn-application	-Dyarn.provided.lib.dirs="hdfs://hadoop102:8020/flink-dist"	-c com.zhm.wordcount.Demo03_UnBoundedStreamProcess hdfs://hadoop102:8020/flink-jars/FlinkDemo-1.0-SNAPSHOT.jar 

这种方式上,Flink本身的依赖和用户jar可以预先上传到HDFS,而不需要单独发送到集群,这就使得作业提交更加轻量了。

1.6 K8S运行模式(了解)

容器化部署是如今业界流行的一项技术,基于Docker镜像运行能够让用户更加方便地对应用进行管理和运维。容器管理工具中最为流行的Kubernetes(K8S),而Flink也在最近的版本中支持了K8S部署模式。基本原理与Yarn是类似的。

1.7 历史服务器

运行 Flink job 的集群一旦停止,只能去 yarn 或本地磁盘上查看日志,不再可以查看作业挂掉之前的运行的 Web UI,很难清楚知道作业在挂的那一刻到底发生了什么。如果我们还没有 Metrics 监控的话,那么完全就只能通过日志去分析和定位问题了,所以如果能还原之前的 Web UI,我们可以通过 UI 发现和定位一些问题。
Flink提供了历史服务器,用来在相应的 Flink 集群关闭后查询已完成作业的统计信息。我们都知道只有当作业处于运行中的状态,才能够查看到相关的WebUI统计信息。通过 History Server 我们才能查询这些已完成作业的统计信息,无论是正常退出还是异常退出。
此外,它对外提供了 REST API,它接受 HTTP 请求并使用 JSON 数据进行响应。Flink 任务停止后,JobManager 会将已经完成任务的统计信息进行存档,History Server 进程则在任务停止后可以对任务统计信息进行查询。比如:最后一次的 Checkpoint、任务运行时的相关配置。

1、创建储存目录

hadoop fs -mkdir -p /logs/flink-job

2、在flink-config.yaml中添加如下配置

jobmanager.archive.fs.dir: hdfs://hadoop102:8020/logs/flink-job
historyserver.web.address: hadoop102
historyserver.web.port: 8082
historyserver.archive.fs.dir: hdfs://hadoop102:8020/logs/flink-job
historyserver.archive.fs.refresh-interval: 5000

3、启动历史服务器

bin/historyserver.sh start

4、停止历史服务器

bin/historyserver.sh stop

5、在浏览器地址栏输入:http://hadoop102:8082 查看已经停止的 job 的统计信息
在这里插入图片描述
                      您的支持是我创作的无限动力

在这里插入图片描述
                      希望我能为您的未来尽绵薄之力

在这里插入图片描述
                      如有错误,谢谢指正;若有收获,谢谢赞美

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

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

相关文章

华为云云耀云服务器L实例评测|使用Linux系统与Docker部署.net/c#项目

目录 前言 如何在CentOS运行项目 登录CentOS 使用Rider打包 使用Visual Studio打包 项目运行 后台运行 开放端口 如何在Docker中运行项目 项目运行 前言 本章详细介绍&#xff0c;.net Core项目从打包到部署上华为云云耀云服务器L实例的过程与一些细节问题。在这里…

Outlook无需API开发连接钉钉群机器人,实现新增会议日程自动发送群消息通知

Outlook用户使用场景&#xff1a; 在企业中&#xff0c;会议和活动的顺利举行对于业务运转和团队协作至关重要。然而&#xff0c;计划的变动总是无法避免&#xff0c;这可能会导致其他人的计划受到影响&#xff0c;打乱原有的安排。为了解决这个问题&#xff0c;许多企业开始使…

快速构建基于Paddle Serving部署的Paddle Detection目标检测Docker镜像

快速构建基于Paddle Serving部署的Paddle Detection目标检测Docker镜像 项目介绍需要重点关注的几个文件构建cpu版本的docker构建gpu版本的docker&#xff08;cuda11.2cudnn8&#xff09; 阅读提示&#xff1a; &#xff08;1&#xff09;Paddle的Serving项目中&#xff0c;在t…

【autodl/linux配环境心得:conda/本地配cuda,cudnn及pytorch心得】-未完成

linux配环境心得&#xff1a;conda/本地配cuda&#xff0c;cudnn及pytorch心得 我们服务器遇到的大多数找不到包的问题一&#xff0c;服务器安装cuda和cudnn使用conda在线安装cuda和cudnn使用conda进行本地安装检查conda安装的cuda和cudnn本地直接安装cuda和cudnn方法一&#x…

Linux Debian12将本地项目上传到码云(gitee)远程仓库

一、注册码云gitee账号 这个可以参考其他教程&#xff0c;本文不做介绍。 gitee官网&#xff1a;https://gitee.com/ 二、Linux Debian12安装git 如果Linux系统没有安装git&#xff0c;可以使用下面命令安装git sudo apt install git 三、gitee新建仓库 我这只做测试&…

69、配置AWS服务,接收来自RTSP流的推送

基本思想:在上一篇的基础和视频教程之后,进行简单的aws服务,进行RTSP流的接收 第一步: 第二步:配置video_stream,记得选择香港节点 同时记录这个信息,后面的策略需要填充 第三步:进行策略设置 第四步:策略设置,选中右上角的创建策略 第五步、进行json填充 第六步:填…

精益创业的三个测量方法

精益创业三个测量工具【安志强趣讲282期】 趣讲大白话&#xff1a;没法度量就没法改进 **************************** 工具1&#xff1a;AB对比测试 就是产品有两个或多个版本 然后通过外部客户或内部人员评测 可以组织天使用户群&#xff1a;愿意参与的专业人士 工具2&#x…

微服务井喷时代,我们如何规模化运维?

随着云原生技术发展及相关技术被越来越多运用到公司生产实践当中&#xff0c;有两种不可逆转的趋势&#xff1a; 1、微服务数量越来越多。原来巨型单体服务不断被拆解成一个个微服务&#xff0c;在方便功能复用及高效迭代的同时&#xff0c;也给运维带来了不少挑战&#xff1a;…

大数据技术之Hadoop:MapReduce与Yarn概述(六)

目录 一、分布式计算 二、分布式资源调度 2.1 什么是分布式资源调度 2.2 yarn的架构 2.2.1 核心架构 2.2.2 辅助架构 前面我们提到了Hadoop的三大核心功能&#xff1a;分布式存储、分布式计算和资源调度&#xff0c;分别由Hadoop的三大核心组件可以担任。 即HDFS是分布式…

基于Docker从零到一实操MySql的主从复制

文章目录 一、在Docker上安装&#xff0c;启动MySQL查看docker是否安装成功安装mysql查看mysql镜像进入mysql后台操作docker Volume&#xff08;卷&#xff09;入门 MySql的主从复制1. 创建MySQL主从复制的网络2. 创建MySQL主服务器3. 创建MySQL从服务器4. 配置主从同步5.测试主…

2023高教社杯数学建模E题思路代码 - 黄河水沙监测数据分析

# 1 赛题 E 题 黄河水沙监测数据分析 黄河是中华民族的母亲河。研究黄河水沙通量的变化规律对沿黄流域的环境治理、气候变 化和人民生活的影响&#xff0c; 以及对优化黄河流域水资源分配、协调人地关系、调水调沙、防洪减灾 等方面都具有重要的理论指导意义。 附件 1 给出了位…

在学习编程的过程中,我会记录下以下内容:

在学习编程的过程中&#xff0c;我会记录下以下内容&#xff1a; 常用代码片段&#xff1a;我会记录一些常用的代码片段&#xff0c;例如文件读写、列表操作、字符串处理等。这些代码片段可以在日常编程中快速复用&#xff0c;提高编码效率。 # 文件读取 with open(file.txt,…

软考高级架构师下篇-14面向服务架构设计理论

目录 1. 引言2. SOA的相关概念3. SOA的发展历史4. SOA的参考架构5. SOA 主要协议和规范6. SOA设计的标准要求7. SOA的作用与设计原则8. SOA的设计模式9. SOA构建与实施10. 前文回顾1. 引言 在面向服务的体系结构(Service-Oriented Architecture,SOA)中,服务的概念有了延伸…

使用EMgu检测人脸

1,安装EMgu 在NuGet中,查找并安装EMgu 2,做人脸检测 首先,声明几个重要的类 //Thread.Sleep(3000);matImg = new Mat();capture.Retrieve(matImg, 0); frame=new Image<Bgr, byte>(matImg.Bitmap); 当,frame != null时,检测到人脸 3,给人脸画框 i…

苹果macOS 13.5.2正式发布 修复ImageIO进程

9 月 8 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.5.2 更新&#xff08;内部版本号&#xff1a;22G91&#xff09;&#xff0c;本次更新距离上次发布隔了 21 天。 需要注意的是&#xff0c;因苹果各区域节点服务器配置缓存问题&#xff0c;可能有些地方探测到…

索尼 toio™ 应用创意开发征文 | 如何用Python控制Q宝进行机器人擂台赛

你是否曾经想过&#xff0c;如果能用编程来控制真实的物体&#xff0c;那该有多有趣&#xff1f;如果能让一个小方块按照你的指令来移动、旋转、闪烁&#xff0c;那该有多酷&#xff1f;如果能让一个小方块和其他小方块互动&#xff0c;那该有多神奇&#xff1f;这些想法&#…

编程语言的类型划分

汇编语言 低级语言&#xff0c;通过汇编器翻译成机器语言 MOV、PUSH、ADD等 特点&#xff1a; 对机器友好、执行效率高、移植性差。 人类操作不太方便&#xff0c;需要专业人员。 高级语言 C、C、Java、Python、Golang等 最终还是会转化成为机器语言。 执行过程划分 编译型 ●…

OpenText EnCase Endpoint Security 识别潜在的网络安全威胁并快速消灭威胁

如今&#xff0c;敏感数据丢失和 IT 系统中断是各类组织面临的最大危机。网络攻击频率不断攀升、修复成本日益增加以及响应时间延长都加剧了数据丢失的隐患。 OpenText EnCase Endpoint Security 的高效体现在能够加速检测恶意活动&#xff0c;并在其导致不可挽回的损失或丢失敏…

嵌入式IDE(2):KEIL中SCF分散加载链接文件详解和实例分析

在上一篇文章IAR中ICF链接文件详解和实例分析中&#xff0c;我通过I.MX RT1170的SDK中的内存映射关系&#xff0c;分析了IAR中的ICF链接文件的语法。对于MCU编程所使用的IDE来说&#xff0c;IAR和Keil用得比较多&#xff0c;所以这一篇文章就来分析一下Keil的分散文件.scf(scat…

【设计模式】组合模式实现部门树实践

1.前言 几乎在每一个系统的开发过程中&#xff0c;都会遇到一些树状结构的开发需求&#xff0c;例如&#xff1a;组织机构树&#xff0c;部门树&#xff0c;菜单树等。只要是需要开发这种树状结构的需求&#xff0c;我们都可以使用组合模式来完成。 本篇将结合组合模式与Mysq…